Nå. Det kunne jeg ikke finde ud af... er der en der har et andet forslag????
Det er nu ellers let nok. For det første skal du angive at Style på din ListBox skal være lbOwnerDrawFixed.
Lad os så sige at du angiver teksten i ListBox1.Items til f.eks.
blabla;blabla
qwetr;asd
Osv. Altså dine tekster til listen er på formen tekst1;tekst2.
Der må ikke være andre semikoloner i den enkelte tekst.
Dernæst definerer du OnDrawItem eventen på din listbox:
procedure TForm1.ListBox1OnDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
FLine : String;
FText1 : String;
FText2 : String;
W : Integer;
begin
FLine := ListBox.Items[Index];
if Pos(';', FLine) > 0 then
begin
FText1 := Copy(FLine, 1, Pos(';', FLine)-1);
FText2 := Copy(FLine, Pos(';', FLine)+1, MaxInt);
end
else
begin
FText1 := FLine;
FText2 := '';
end;
W := ListBox1.Canvas.TextWidth(FText1);
ListBox1.Canvas.TextOut(Rect.Left, Rect.Top, FText1);
ListBox1.Canvas.TextOut(Rect.Left+W+20, Rect.Top, FText2);
end;
Således. Der er masse af plads til forbedringer, men det skulle gerne kunne give dig en ide om hvordan det skal fungere.
Alternativet er jo at bruge en TListView med ViewStyle=vsRapport. Der er en udemærket artikel om brugen af sådan en her:
http://www.udvikleren.dk/article.php?aid=30&techid=2---
Thomas Due
Software developer
udvikleren.dk - ASP redaktør
tdue@mail.dk