![]() |
AW: Nochmal VST - Node einfärben
Hallo,
der Knoten (Node) und die Spalte (Column) die gezeichnet werden sollen, werden Dir doch im Ereignis übergeben. Ich hoffe einmal, Du weist dann, wie Du auf Deine im VT gespeicherten Infos zugreifen kannst. |
AW: Nochmal VST - Node einfärben
Hallo ,
meine strucktur ist ja nur node +'irgendwas' ---- 'irgendeine nummer' +'irgendwas2' ---- 'irgendeine nummer2' +'irgendwas3' ---- 'irgendeine nummer3' so wenn nun jetzt
Delphi-Quellcode:
if data^.FColumn1='irgendeinenummer' then stimmig ist, sprich er fragt ab ob das subnode die nummer hat die er bekommen hat(in der abfrage)
n := virtualstringtree1.GetFirst;
while assigned(n) do begin if assigned(n) then begin data:=virtualstringtree1.GetNodeData(n); if data^.FColumn1='irgendeinenummer' then begin found:=1; foundednode:=n; virtualstringtree1.Refresh; break; end; n:=virtualstringtree1.GetNext(n); end; dann
Delphi-Quellcode:
sollte es doch funktionieren ? oder nicht. ich übergeb ihm ja mit d:=virtualstringtree1.GetNodeData(foundednode); die daten von der node die er unter foundednode:=n; gesaved hat.
procedure TForm1.VirtualStringTree1BeforeCellPaint(
Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; CellRect: TRect); var ContentRect: TRect; var d:ptreedata; begin with TargetCanvas do begin d:=virtualstringtree1.GetNodeData(foundednode); if found <>1 then exit; if d.fColumn1='irgendeinenummer' then targetcanvas.Font.Color:=clred; FillRect(CellRect); end; // with end; hm .... |
AW: Nochmal VST - Node einfärben
Wieso fragst Du nicht direkt die Daten der übergebenen Node ab?
|
AW: Nochmal VST - Node einfärben
-.- weil ich doooof bin :D
kann sein das wenn der subnode ausgeblendet ist bzw so gemacht is das der nicht angezeigt wird, das er auch nicht den wert auslesen kann ? habe grad mal
Delphi-Quellcode:
mir ausgegeben lassen. Showmessage zeigt mir immer nu den wert der node an, aber nicht der subnodewith TargetCanvas do begin d:=virtualstringtree1.GetNodeData(Node); showmessage(d.FCaption+d.FColumn1); |
AW: Nochmal VST - Node einfärben
Du bist im BeforeCellPaint-Event? Dann dürfte das klar sein, denn wieso sollten ausgeblendete Knoten gezeichnet werden?
|
AW: Nochmal VST - Node einfärben
hm stimmt auch wieder -.- dachte die werden zwar gezeichnet aber nur ausgeblendet
|
AW: Nochmal VST - Node einfärben
Huhu dank euch hab ic schonmal meine halbe miete hehe, nur es stellt sich jetzt noch folgende frage
Delphi-Quellcode:
also erstens malt er mir es gar nicht rot :(
procedure TForm1.VirtualStringTree1BeforeCellPaint(
Sender: TBaseVirtualTree; TargetCanvas: TCanvas; Node: PVirtualNode; Column: TColumnIndex; CellRect: TRect); var ContentRect: TRect; var d,d2:ptreedata; begin with TargetCanvas do begin d:=virtualstringtree1.getnodedata(node); d2:=virtualstringtree1.getnodedata(node.Parent); showmessage('d'+d^.FCaption+'...'+'d2'+d2^.FCaption); if d^.FCaption=inttostr('diedummenummer') then //showmessage(d.FCaption); showmessage('ok'); TargetCanvas.Font.Color:=clred; FillRect(CellRect); end; // with end; un zweitens müsste er mir ja das node.parent rot malen. jemand noch eine idee ? :) |
AW: Nochmal VST - Node einfärben
Zitat:
|
AW: Nochmal VST - Node einfärben
Hallo,
das kann ja auch nicht funktionieren. Du änderst nicht den (Node-)Zellhintergrund, sondern die Textfarbe. Dazu ist dieses Ereignis nicht gedacht. Stattdessen musst Du das Ereignis OnPaintText benutzen. Noch einmal kurz zusammengefasst: - Um den Hintergrund zu ändern: OnBeforeCellPaint - Um die Textfarbe zu ändern: OnPaintText Sollte das nicht genügen oder zu verwirrend sein, kommst Du nicht darum herum, einen TVirtualDrawTree zu nehmen. Dann musst Du aber alles im Ereignis OnDrawNode selber zeichnen. |
AW: Nochmal VST - Node einfärben
so ok hab es nun so das er auf das richtige zeigt, bzw das er das richtige rot malen soll.
auch canvas.textout zeigt mir die richtige caption an :) nur rot macht er es nicht :D edit mom glaub hab da einen kleinen fehler hab mal hintergrund rot gemacht un da macht er es mir in der rootnode rot -.- |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:20 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 by Thomas Breitkreuz