Einzelnen Beitrag anzeigen

raiguen
(Gast)

n/a Beiträge
 
#11

Re: ComboBox: Breite der DropDown-Liste ändern

  Alt 9. Jan 2007, 11:07
Moin
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
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;
  Mit Zitat antworten Zitat