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 jasocul: 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 jasocul: Source an StyleGuide angepasst
Moderiert von jasocul: Beitrag geprüft am 10.05.2006