Moin
![Smile](images/smilies/icon_smile.gif)
Erstmal zum Verständnis:
Code:
Perform(CB_SETDROPPEDWIDTH, DropDownListBreite, 0);
Das Setzen der Breite hat nur dann den gewünschten Erfolg, wenn der Wert von DropDownListBreite
größer ist als die Breite (=Width) der Combobox! Mit anderen Worten: ist der Wert von DropDownListBreite kleiner als die Breite der DropDownListe, hat der o.a. Code keine Auswirkung, da die Breite der DropDownListe sich dann standardmäßig der Breite der ComboBox anpasst
![Wink](images/smilies/icon_wink.gif)
Möchte man nun - wie gewünscht - die Breite der DropDownListe dem längsten Eintrag in der Combobox anpassen: (von den Schweizern)
Code:
//--nach dem Füllen der Items in der Combobox
procedure TForm1.BreiteAnpassen(Sender: TObject);
var
i, DropDownListBreite: Integer;
begin
DropDownListBreite := 0;
for i := 0 to Combobox1.Items.Count - 1 do
if (Form1.Canvas.TextWidth(Combobox1.Items[i]) <> DropDownListBreite) then
DropDownListBreite := Form1.Canvas.TextWidth((Combobox1.Items[i])) + 20;
ComboBox1.Perform(CB_SETDROPPEDWIDTH, DropDownListBreite, 0);
end;