Entwickler-Ecke

Visual Component Library (VCL) - ...Horizontale Scrollbar in einer TListbox anzeigen


hallo - Di 20.07.04 13:57
Titel: ...Horizontale Scrollbar in einer TListbox anzeigen
Horizontale Scrollbar in einer TListbox anzeigen

Hi,

das große Problem: die TListbox ist kleiner als ein Eintrag, und dieser wird nicht vollständig angezeigt.

Dieser Code beseitigt das Problem:

Delphi-Quelltext
1:
SendMessage(listbox1.handle, lb_SetHorizontalExtent, listbox1.canvas.TextWidth(laengster_textstring), LongInt(0));                    

Der erste Parameter gibt das Handle an. Der zweite Parameter ist die Angabe für den Scrollbalken. Der dritte Parameter gibt die breite der Scrollbar an. Hier kann man per ListBox1.Canvas.TextWidth (String) die Prixelbreite eines Strings bestimmen, oder einfach einen konstanten Integer-Wert angeben. Der vierte Parameter bewirkt in diesem Fall nichts.
Moderiert von user profile iconjasocul: Beitrag geprüft am 10.05.2006


maxk - Di 20.07.04 14:13

Ein nettes Projekt wäre auch, eine Listboxkomponente zu coden, die den Balken automatisch anzeigt.

Um die optimale Scrollbreite für eine bereits erstelle Listbox zu bestimmen, wäre dieser Code geeignet:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure ScrollListBox(ListBox:TListbox);
var i:integer;
    MaxScrollWidth:integer;
begin
 MaxScrollWidth:=0;
 for i:=0 to ListBox.Items.Count-1 do 
   with ListBox do 
   begin
     if Canvas.TextWidth(Items[i])>MaxScrollWidth then 
       MaxScrollWidth:=Canvas.TextWidth(Items[i]);
   end;
 SendMessage(Listbox.Handle,lb_SetHorizontalExtent,MaxScrollWidth,LongInt(0));
end;
Der Aufruf kann dann über ScrollListBox(ListBox1) erfolgen.
Moderiert von user profile iconjasocul: Source an StyleGuide angepasst
Moderiert von user profile iconjasocul: Beitrag geprüft am 10.05.2006