Einzelnen Beitrag anzeigen

Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Zeilen in einer Listbox färben

  Alt 14. Apr 2006, 08: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.
  Mit Zitat antworten Zitat