![]() |
ListBox Canvas.TextWidth änderung reagieren???
Hallo!
Habe eine ListBox und will bei Änderungen der Font.Size - größe die Horizontalle Scrollbar anpassen. Funktioniert beim einlesen soweit alles. Sobald aber Font.Size geändert wird(derzeit über einen Button) ist's mit der Scrollbar-breite vorbei!!! Beim Debugen kommt mir vor alls würde die ListBox von der Fontänderung nichts mitbekommen.... Wie stelle ich es nun an, damit die ListBox die änderung bemerkt... Die Scrollbarbreite passe ich folgendermassen an:
Delphi-Quellcode:
[edit=SirThornberry]Delphi-Tag geschlossen. Mfg, SirThornberry[/edit]
for ic:= 0 to ComponentCount-1 do
begin if (Components[ic] is TListBox )and (TListBox(Components[ic]).Items.Count > 0)then begin w2:=0; for i:= 0 to TListBox(Components[ic]).Items.Count-1 do with TListBox(Components[ic])do begin w1:= Canvas.TextWidth(Items[i]); if w2 < w1 then w2:= w1; end; SendMessage(TListBox(Components[ic]).Handle, LB_SetHorizontalExtent, w2 + GetSystemMetrics(SM_CxFrame), 0); end; end; |
Re: ListBox Canvas.TextWidth änderung reagieren???
TFont hat ein OnChange. Dementsprechend kannst du das OnChange von TFont umleiten und dementsprechend deine Aktuallisierungsroutine darin ausführen.
|
Re: ListBox Canvas.TextWidth änderung reagieren???
Danke für die Antwort, hab aber schon eine möglichkeit gefunden...
[delphi] procedure TForm1.Button5Click(Sender: TObject); var i, ic, w2: Integer; DC: HDC; Size: TSize; begin // Passt alle Horizontalen ListBoxenScroller der breite an for ic:= 0 to ComponentCount-1 do begin if (Components[ic] is TListBox )and (TListBox(Components[ic]).Items.Count > 0)then begin w2:=0; for i:= 0 to TListBox(Components[ic]).Items.Count-1 do begin dc:= GetDC(0); SelectObject(dc,TListBox(Components[ic]).Font.Handle); if GetTextExtentPoint32(DC, PChar(TListBox(Components[ic]).Items[i]), StrLen(PChar(TListBox(Components[ic]).Items[i])), Size) then begin if w2 < size.cx then w2:= size.cx; releasedc(0,dc); end; end; TListBox(Components[ic]).ScrollWidth:= w2+10; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz