Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
[TComboBox, VCL Win32] Breite des Listenfelds einer Combobox anpassen
spacer
Autor Nachricht
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star

Beiträge: 3145
Erhaltene Danke: 10
Dabei seit: 28.12.2005
Wohnort: Österreich, Wien

Windows Vista
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 26.03.07 18:27 
Komponente: TComboBox
Verwendete VCL: VCL Win32
Antworten mit Zitat Beitrag melden
Breite des Listenfelds einer Combobox anpassen

Mit folgender Procedure kann man die Breite eines Listenfelds einer Combobox dem Inhalt anpassen. Dadurch wird die Combobox nicht breiter aber man sieht trotzdem den ganzen Inhalt.

ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure AutoSizeComboboxList(Targetbox: TComboBox); 
var temp, max, itemscounter: integer; 
    bmp : TBitmap; 
begin 
  bmp := TBitmap.Create;  
  try
    bmp.Canvas.Font.Assign(Targetbox.Font); 
    max :=Targetbox.width; 
    for itemscounter := 0 to Targetbox.Items.count-1 do begin 
      temp := bmp.Canvas.TextWidth(Targetbox.Items[itemscounter]); 
      if temp > max then 
        max := temp; 
    end
    
    if Targetbox.Items.Count > Targetbox.DropDownCount then   //wenn eine Scrollbar auf der seite benötigt wird dann
      Inc(max, GetSystemMetrics(SM_CXVSCROLL)); //verbreitere die combobox um breite der scrollbar
    Sendmessage(Targetbox.Handle, CB_SETDROPPEDWIDTH, max+20,0); //ich hab +20 genommen da es sonst direkt am letzten buchstaben pickt und das sieht hässlich aus. Natürlich kann man auch das +20 ganz weg lassen oder nur die zahl verändern. 
  finally
    bmp.Free; 
  end;
end;


und hier eine Anwendungsmöglichkeit:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
procedure TForm1.OnCreate(Sender: TObject);
begin
  AutoSizeComboboxList(ComboBox1);
end;


über Kritik würde ich mich freuen.

lg elundril


Zuletzt bearbeitet von elundril am Di 17.07.07 20:00, insgesamt 10-mal bearbeitet
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home