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;