Hi,
ich hätte es auch mit Owner Draw erledigt, allerdings scheint mir der Code von Torry ein wenig lang. Zum auseinanderpfriemeln könnte man TStringList.DelimitedText verwenden oder - was sogar bei älteren Delphis geht - CommaText. Dadurch wird der Code gleich übersichtlicher (wenn auch evtl. langsamer, aber das stört in diesem Fall kaum, da es nicht bemerkt wird).
Hier ein kurzes Beispiel:
im
OI ComboBox1.Style = csOwnerDrawFixed einstellen.
Delphi-Quellcode:
procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
Item: TStringList;
W, I, L: Integer;
R: TRect;
begin
Item := TStringList.Create;
try
Item.CommaText := ComboBox1.Items[Index];
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;
ComboBox1.Canvas.TextRect(
Classes.Rect(L, Rect.Top, Rect.Right, Rect.Bottom),
L,
Rect.Top,
Item[I]
);
end;
finally
Item.Free;
end;
end;
Der Inhalt im ComboBox1.Items ist dann im
CSV-Format (mit , und "):
Code:
"Spalte 1","Spalte 2","Spalte 3"
"Hallo Welt",NurEinWort,42
Leer,,"<-- war leer"
Mfg
FAlter
[edit] Torry hat nicht einmal eine Schleife genommen? Und was, wenn man schnell mal die Anzahl der Spalten ändern will? [/edit]