Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
Delphi 2006 Professional
|
Re: Zeilen in einer Listbox färben
14. Apr 2006, 09:05
Hai Chrissi,
da ich nicht genau weiss wo das Problem liegt hier mal ein anderes Beispiel für den Code:
Delphi-Quellcode:
var
newItemPos: Integer;
function NewLBItem(aListBox: TListBox; aValue: string; aIndex: Integer = -1): Integer;
begin
if (aIndex = -1) then // Wenn -1 dann anhängen
begin
result := aListBox.Items.Add(aValue);
end else // ansonsten einfügen
begin
aListBox.Items.Insert(aIndex, aValue);
result := aIndex;
end;
end;
procedure TDemoForm.AddItemClick(Sender: TObject);
begin
newItemPos := NewLBItem(ListBox1, Edit1.Text); // Beispiel für anhägen
end;
procedure TDemoForm.InsertItemClick(Sender: TObject);
begin
newItemPos := NewLBItem(ListBox1, Edit1.Text, 2); // Beispiel für einfügen
end;
procedure TDemoForm.FormCreate(Sender: TObject);
begin
newItemPos := -1; // Variablen schön initialisieren
ListBox1.Style := lbOwnerDrawFixed; // Sonst können wir nicht selber zeichnen
end;
procedure TDemoForm.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var
TopDif: Integer; // Gleicht die Höhendifferenz aus
begin
with (Control as TListbox) do
begin
if (Index = newItemPos) then // Nur wenn das zuletzt eingefügte Item gezeichnet wird
begin
Canvas.Brush.Color := clRed; // Hintergrundfarbe
Canvas.Font.Color := clBlack; //Schriftfarbe
end;
TopDif := (ItemHeight div 2) - (Canvas.TextHeight(#32) div 2);
// Damit es in der Mitte der Zeile steht.
Canvas.TextRect(Rect, Rect.Left, Rect.Top + TopDif, Items[Index]);
// Und hier wird der Text gezeichnet
end;
end;
Stephan B.
|
|
Zitat
|