![]() |
brush Color abfragen
Guten abend
ich bin gerade dabei bei einer listbox nicht eine ganze zeile einzufärben, sondern nur einen einzelnen buchstaben also nicht die font eigenschaft, sondern ich möchte den buchstaben einfach nur hinterlegen. dazu hab ich bei ListBoxDrawItem folgendes geschrieben:
Delphi-Quellcode:
Das klappt auch alles soweit nur weiß ich nicht was ich für einen Hintergrund nehmen muss, damit man die schrift auch lesen kann, wenn der eintrag markiert ist. Bei weißem Hintergrund ist auch die schrift, wenns markiert ist, weißgefärbt. :wiejetzt:
Listbox1.Canvas.TextOut(rect.Left,rect.Top,l); // Ersten Teil einfügen
Listbox1.Canvas.Brush.Color:=clred; // Farbe ändern Listbox1.Canvas.TextOut(lw,rect.Top,m);// hinterlegten Teil einfügen Listbox1.Canvas.Brush.Color:=clwhite; // Farbe zurücksetzen Listbox1.Canvas.TextOut(lw+mw,Rect.Top,r);// letzten Teil einfügen Eine möglichkeit wäre ja die eigenschaft Listbox1.canvas.brush.color abzufragen doch wie geht das oder gibts da einen anderen weg? Vielen Dank im Voraus! |
Re: brush Color abfragen
Hallo,
ich würde die Farbe bei markierten Einträgen überhaupt nicht ändern, sondern die dafür vorgesehenen Standardfarben (clHighlight, clHighlightText) verwenden. Ob ein Eintrag markiert ist, kannst du durch Auswertung des Parameters State feststellen:
Delphi-Quellcode:
Gruß Hawkeye
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); begin if (odSelected in State) then // Eintrag ist markiert else // Eintrag ist nicht markiert end; |
Re: brush Color abfragen
ich habs mit clhighlight versucht hat auch nicht geklappt und es war ja mein ziel,dass wenn ich eine zeichenkette in einem string gesucht habe diese dann auch im markierten text hervorzuheben habs jetzt nach fast 1,5 stunden hinbekommen. eigentlich sogar relativ einfach :idea:
Delphi-Quellcode:
vielen dank trotzdem!
with Listbox1.Canvas do begin
TextOut(rect.Left,rect.Top,l); Brush.Color:=clred; TextOut(lw,rect.Top,m); Brush.Style:=BsClear;// das hat soooo lange gedauert :?: :x :?: TextOut(lw+mw,Rect.Top,r); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz