![]() |
ListView - HideSelection - markierung Überschreiben
Ich habe zwei ListView. Selektiere ich in dem einen etwas (erhält Fokus) soll in dem anderen einzelne Einträge markiert werden. Allerdings werden diese (Standard XP GUI) nur in einem schwer erkennbaren grau unterlegt.
Nun habe ich versucht die Markierung bei onCustomDrawItem zu übermalen. Leider ohne Erfolg. Ich bekomme zwar raus welches selektiert ist, aber die neue Hintergrundfarbe wird nicht angenommen. Jemand ne Ahnung wie dennoch die markierungen bei nicht fokusierten Elementen verändern kann? Insbesondere hier bei der ListView. Mein Code:
Delphi-Quellcode:
Sven
if (item.selected) and ((sender as TListview).name = 'lv1') then begin
item.listview.canvas.font.color:=clHighlightText; item.listview.canvas.brush.color:=clHighlight; end; |
Re: ListView - HideSelection - markierung Überschreiben
Hi,
hast du
Delphi-Quellcode:
auch auf True gesetzt? Weil ansonsten OnCustomDrawItem nix macht.
property OwnerDraw: Boolean;
Gruss Daniel M. |
Re: ListView - HideSelection - markierung Überschreiben
na logisch ;-)
da steht noch viel mehr drin. Wollte ich aber hier nicht alles posten. Wie gesagt ich bekomme heraus welches selektiert ist, er geht auch in die Verzweigung, aber anscheinde überschreibt er das ganze dann noch einmal selber. Frage ist, wie ich unterbinden kann. Sven |
Re: ListView - HideSelection - markierung Überschreiben
hmm komisch, also bei mir funzt es:
Delphi-Quellcode:
hab das mal ebend schnell zusamm gebaut, und das noch auf arbeit ;)
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var R:TRect; begin if Item.Selected then begin DefaultDraw:=False; R:=Item.DisplayRect(drBounds); ListView1.Canvas.Brush.Color:=clBlue; ListView1.Canvas.Rectangle(R); ListView1.Canvas.DrawFocusRect(R); end else begin DefaultDraw:=True; end; end; |
Re: ListView - HideSelection - markierung Überschreiben
ja ne :-)
Ich will defaultdraw nicht deaktvieren. Das ist mir dann klar das dies funktioniert. aber dann muss mal alles selber übernehmen. Anscheind gibt es keine Lösung, dann muss ich es wohl so lösen. Thx Sven PS: Der Code ist übrigens nicht übersetztbar von Dir. Canvas.Rectangle() muss man alle 4 Punkte des TRect mitgeben (zumindestens in Delphi4). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 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