AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nochmal VST - Node einfärben

Ein Thema von MasterTobi · begonnen am 26. Sep 2011 · letzter Beitrag vom 27. Sep 2011
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

AW: Nochmal VST - Node einfärben

  Alt 26. Sep 2011, 15:24
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.
  Mit Zitat antworten Zitat
MasterTobi

Registriert seit: 29. Apr 2007
212 Beiträge
 
#12

AW: Nochmal VST - Node einfärben

  Alt 26. Sep 2011, 15:46
Hallo ,

meine strucktur ist ja nur

node
+'irgendwas'
---- 'irgendeine nummer'
+'irgendwas2'
---- 'irgendeine nummer2'
+'irgendwas3'
---- 'irgendeine nummer3'

so wenn nun jetzt

Delphi-Quellcode:
       n := virtualstringtree1.GetFirst;
      while assigned(n) do
       begin
       if assigned(n) then
       begin
        data:=virtualstringtree1.GetNodeData(n);
        if data^.FColumn1='irgendeinenummerthen
        begin
        found:=1;
        foundednode:=n;
        virtualstringtree1.Refresh;
        break;
        end;
        n:=virtualstringtree1.GetNext(n);
       end;
if data^.FColumn1='irgendeinenummer' then stimmig ist, sprich er fragt ab ob das subnode die nummer hat die er bekommen hat(in der abfrage)

dann
Delphi-Quellcode:
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='irgendeinenummerthen targetcanvas.Font.Color:=clred;
     FillRect(CellRect);
   end; // with
end;
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.

hm ....
MFG
Tobi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#13

AW: Nochmal VST - Node einfärben

  Alt 26. Sep 2011, 15:49
Wieso fragst Du nicht direkt die Daten der übergebenen Node ab?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
MasterTobi

Registriert seit: 29. Apr 2007
212 Beiträge
 
#14

AW: Nochmal VST - Node einfärben

  Alt 26. Sep 2011, 15:55
-.- weil ich doooof bin

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:
   
with TargetCanvas do
   begin
   d:=virtualstringtree1.GetNodeData(Node);
   showmessage(d.FCaption+d.FColumn1);
mir ausgegeben lassen. Showmessage zeigt mir immer nu den wert der node an, aber nicht der subnode
MFG
Tobi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#15

AW: Nochmal VST - Node einfärben

  Alt 26. Sep 2011, 16:11
Du bist im BeforeCellPaint-Event? Dann dürfte das klar sein, denn wieso sollten ausgeblendete Knoten gezeichnet werden?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
MasterTobi

Registriert seit: 29. Apr 2007
212 Beiträge
 
#16

AW: Nochmal VST - Node einfärben

  Alt 26. Sep 2011, 16:50
hm stimmt auch wieder -.- dachte die werden zwar gezeichnet aber nur ausgeblendet
MFG
Tobi
  Mit Zitat antworten Zitat
MasterTobi

Registriert seit: 29. Apr 2007
212 Beiträge
 
#17

AW: Nochmal VST - Node einfärben

  Alt 27. Sep 2011, 10:20
Huhu dank euch hab ic schonmal meine halbe miete hehe, nur es stellt sich jetzt noch folgende frage

Delphi-Quellcode:
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;
also erstens malt er mir es gar nicht rot
un zweitens müsste er mir ja das node.parent rot malen. jemand noch eine idee ?
MFG
Tobi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#18

AW: Nochmal VST - Node einfärben

  Alt 27. Sep 2011, 10:33
un zweitens müsste er mir ja das node.parent rot malen.
Wieso denn das? AFAIK wird das Ereignis für den aktuell zu zeichnenden Knoten aufgerufen, man kann also auch nur diesen zeichnen. Und versuch einmal, nach dem Setzen der Schriftfarbe den Text noch einmal auszugeben (Canvas.Textout oder DrawText).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#19

AW: Nochmal VST - Node einfärben

  Alt 27. Sep 2011, 10:40
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.
  Mit Zitat antworten Zitat
MasterTobi

Registriert seit: 29. Apr 2007
212 Beiträge
 
#20

AW: Nochmal VST - Node einfärben

  Alt 27. Sep 2011, 10:48
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


edit mom glaub hab da einen kleinen fehler hab mal hintergrund rot gemacht un da macht er es mir in der rootnode rot -.-
MFG
Tobi
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 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