// 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;
|