Thema: Delphi Mehrspaltige ComboBox?

Einzelnen Beitrag anzeigen

Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Mehrspaltige ComboBox?

  Alt 2. Jun 2008, 16:56
Hi,

auf "leere" Inhalte war mein Code nicht vorbereitet. Aber was spricht dagegen, einfach ein if Item.Count > 0 then begin ... end hinzusetzen?

Jedenfalls hast du ein leeres Item in deiner ComboBox drin, also ''.

Ansonsten kannst du den Inhalt auch schon per Objektinspektor setzen.

Mfg
FAlter

[edit] Am besten sieht es aus, wenn du im Falle not (Count > 0) wenigstens ein Rechteck zeichnest:

Delphi-Quellcode:
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  Item: TStringList;
  W, I, L: Integer;
  Cb: TCustomComboBox;
begin
  Cb := (Control as TCustomComboBox);

  Item := TStringList.Create;
  try
    Item.CommaText := Cb.Items[Index];
    if Item.Count > 0 then
    begin
      W := (Rect.Right - Rect.Left) div Item.Count; //hier alle gleiche Breite

      for I := 0 to Item.Count - 1 do
      begin
        L := Rect.Left + I * W;
        Cb.Canvas.TextRect(
          Classes.Rect(L, Rect.Top, Rect.Right, Rect.Bottom),
          L,
          Rect.Top,
          Item[I]
        );
      end;
    end
    else
      Cb.Canvas.FillRect(Rect);
  finally
    Item.Free;
  end;
end;
[/edit]

[edit] Code verbessert - kann jetzt für mehrere ComboBoxen verwendet werden und muss nicht mehr angepasst werden (an tatsächlich verwendeten Namen der ComboBox). [/edit]
[edit] Jetzt aber letztes vergessenes ComboBox1 eliminiert. [/edit]
Felix Alter
  Mit Zitat antworten Zitat