// Wenn einer Combobox Text hinzugefügt wird, der breiter ist
// als die Box selbst, dann werden diese Begriffe beim
// Aufklappen nicht vollständig angezeigt. Mit dem folgenden
// Code kann man aber die Dropdown-Liste entsprechend anpassen.

// Getestet mit D4 unter XP

uses Messages; 
 
procedure SetDroppedWidth(CB: TCombobox); 
var 
  DC: HDC; 
  x, lg, w: integer; 
begin 
  with CB do begin 
    w := width; 
    DC := GetDC(Handle); 
    Canvas.Handle := DC; 
    Canvas.Font := Font; 
    for x := 0 to items.count - 1 do begin 
      lg := Canvas.TextWidth(items[x]) + 6; 
      if lg > w then w := lg; 
    end; 
    perform(CB_SetDroppedWidth, w, 0); 
    ReleaseDC(Handle, Canvas.Handle); 
  end; 
end; 
 
 
 
// zwei Beispielaufrufe 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  with Combobox1 do begin 
    Items.Add('Test'); 
    Items.Add('Versuch'); 
    Items.Add('Delphi'); 
    Items.Add('Donaudampfschifffahrtsgesellschaftskapitän'); 
    ItemIndex := 0; 
  end; 
  SetDroppedWidth(Combobox1); 
end; 
 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Combobox1.Font.Name := 'Courier New'; 
  Combobox1.Font.size := 16; 
  SetDroppedWidth(Combobox1); 
end; 



Zugriffe seit 6.9.2001 auf Delphi-Ecke