Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: einzelne Items in ListBox färben

  Alt 2. Nov 2004, 11:27
Du hast keine Kontrolle darüber, für welchen Item-Index das Event OnDrawItem gefeuert wird.
Du musst die Hintergrundfarbe innerhalb von OnDrawItem abfragen und zur Anwendung bringen.

Delphi-Quellcode:
procedure TFmLog.OnDrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  TopDif: Integer; // Gleicht die Höhendifferenz aus
begin
  with (Control as TListbox) do begin
    Canvas.Brush.Color := GetBackColor(Items[Index]); // <===
    Canvas.Font.Color := clBlack; //Schriftfarbe

    TopDif := (ItemHeight div 2) - (Canvas.TextHeight(#32) div 2);
    Canvas.TextRect(Rect, Rect.Left, Rect.Top + TopDif, Items[Index]);
  end;
end;

function TFmLog.GetBackColor(const value:string):Tcolor;
begin
   result := clWhite;
   if Pos(FedSearch.Text, value) >= 0 then
      Result := $00FF7777;
end;
Nachdem du das Suchwort geändert hast, musst du die Liste neu zeichen:
FlbOutput.RePaint;
Andreas
  Mit Zitat antworten Zitat