Hi,
die Suche ergab bei mir zwar einige Treffer, jedoch wurde ich aus den Lösungen nicht schlau. Ich habe eine Listbox, die ich mit Einträgen fülle. Jetzt möchte ich eine Zeile färben, und zwar diese, die ich gerade eintrage. Am liebsten wäre es mir, wenn ich die Schriftfarbe ändern kann, aber die Hintergrundfarbe kann ich, wenn es nicht anders geht, auch ändern.
Wie mache ich das jetzt?
Ich fand u.a. folgenden Code, verstehe ihn aber immer noch nicht:
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;
Ist er denn richtig und kann mir mal jemand erklären, was das alles bedeutet? Ich blicke da nicht durch.