Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi brush Color abfragen (https://www.delphipraxis.net/86003-brush-color-abfragen.html)

wfs12 7. Feb 2007 18:25


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:
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
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:
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!

Hawkeye219 7. Feb 2007 19:02

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:
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;
Gruß Hawkeye

wfs12 7. Feb 2007 19:12

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:
 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;
vielen dank trotzdem!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz