Autor Beitrag
hallo
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 450

WIN XP, SuSE 9.3
D3 Prof, D6 Pers, 2005 Pers
BeitragVerfasst: Di 20.07.04 13:57 
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:
ausblenden 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


Zuletzt bearbeitet von hallo am Di 20.07.04 14:07, insgesamt 1-mal bearbeitet
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: 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:
ausblenden 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

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.