AGB  ·  Datenschutz  ·  Impressum  







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

VirtualStringTree und OnLoadNode

Ein Thema von GuenterS · begonnen am 18. Jun 2005 · letzter Beitrag vom 21. Jun 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: VirtualStringTree und OnLoadNode

  Alt 20. Jun 2005, 22:05
So bin gerade nach Hause gekommen und habe versucht Deine Änderungsvorschläge einzubauen, jedoch funktioniert das mit dem kleinen Beispielprojekt überhaupt nicht. Es wird nach wie vor nur 'Node' angezeigt.

Ich habs mal wieder angehängt.
Angehängte Dateien
Dateityp: zip test1_366.zip (327,0 KB, 9x aufgerufen)
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Igotcha

Registriert seit: 22. Dez 2003
544 Beiträge
 
Delphi 2006 Professional
 
#12

Re: VirtualStringTree und OnLoadNode

  Alt 21. Jun 2005, 01:12
Zitat von GuenterS:
So bin gerade nach Hause gekommen und habe versucht Deine Änderungsvorschläge einzubauen, jedoch funktioniert das mit dem kleinen Beispielprojekt überhaupt nicht. Es wird nach wie vor nur 'Node' angezeigt.
Err, "Node" ist der Defaulttext für Nodeeinträge

Mittels "OnGetText" musst Du den Text setzen. In dem Event steuerst Du, welche Information in welcher "Column" angezeigt werden soll.

Beispiel:

Delphi-Quellcode:
procedure TKOM.VTISTGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  myData: PIstData;
begin
    myData:=VTIST.GetNodeData(Node);
    Node.Align:=3;
  if (TextType=ttNormal) AND (myData.FGTyp<>6) then
  begin
    case Column of
    0: Celltext:=myData.FGBez;
    1: Celltext:=format('%.0n', [myData.FMonat[0]]);
    2: Celltext:=format('%.0n', [myData.FMonat[1]]);
    3: Celltext:=format('%.0n', [myData.FMonat[2]]);
    4: Celltext:=format('%.0n', [myData.FMonat[3]]);
    5: Celltext:=format('%.0n', [myData.FMonat[4]]);
    6: Celltext:=format('%.0n', [myData.FMonat[5]]);
    7: Celltext:=format('%.0n', [myData.FMonat[6]]);
    8: Celltext:=format('%.0n', [myData.FMonat[7]]);
    9: Celltext:=format('%.0n', [myData.FMonat[8]]);
    10: Celltext:=format('%.0n', [myData.FMonat[9]]);
    11: Celltext:=format('%.0n', [myData.FMonat[10]]);
    12: Celltext:=format('%.0n', [myData.FMonat[11]]);
    13: Celltext:=format('%.0n', [myData.FMonat[12]]);
    14: Celltext:=format('%.0n', [myData.FMonat[13]]);
    15: Celltext:=format('%.0n', [myData.FMonat[14]]);
    16: Celltext:=format('%.0n', [myData.FMonat[15]]);
    17: Celltext:=format('%.0n', [myData.FMonat[16]]);
    18: Celltext:=format('%.0n', [myData.FMonat[17]]);
    end;
  end;
Gruß Igotcha
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: VirtualStringTree und OnLoadNode

  Alt 21. Jun 2005, 08:39
Zitat von Igotcha:
Zitat von GuenterS:
So bin gerade nach Hause gekommen und habe versucht Deine Änderungsvorschläge einzubauen, jedoch funktioniert das mit dem kleinen Beispielprojekt überhaupt nicht. Es wird nach wie vor nur 'Node' angezeigt.
Err, "Node" ist der Defaulttext für Nodeeinträge

Mittels "OnGetText" musst Du den Text setzen. In dem Event steuerst Du, welche Information in welcher "Column" angezeigt werden soll.

Beispiel:

Delphi-Quellcode:
procedure TKOM.VTISTGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  myData: PIstData;
begin
    myData:=VTIST.GetNodeData(Node);
    Node.Align:=3;
  if (TextType=ttNormal) AND (myData.FGTyp<>6) then
  begin
    case Column of
    0: Celltext:=myData.FGBez;
    1: Celltext:=format('%.0n', [myData.FMonat[0]]);
    2: Celltext:=format('%.0n', [myData.FMonat[1]]);
    3: Celltext:=format('%.0n', [myData.FMonat[2]]);
    4: Celltext:=format('%.0n', [myData.FMonat[3]]);
    5: Celltext:=format('%.0n', [myData.FMonat[4]]);
    6: Celltext:=format('%.0n', [myData.FMonat[5]]);
    7: Celltext:=format('%.0n', [myData.FMonat[6]]);
    8: Celltext:=format('%.0n', [myData.FMonat[7]]);
    9: Celltext:=format('%.0n', [myData.FMonat[8]]);
    10: Celltext:=format('%.0n', [myData.FMonat[9]]);
    11: Celltext:=format('%.0n', [myData.FMonat[10]]);
    12: Celltext:=format('%.0n', [myData.FMonat[11]]);
    13: Celltext:=format('%.0n', [myData.FMonat[12]]);
    14: Celltext:=format('%.0n', [myData.FMonat[13]]);
    15: Celltext:=format('%.0n', [myData.FMonat[14]]);
    16: Celltext:=format('%.0n', [myData.FMonat[15]]);
    17: Celltext:=format('%.0n', [myData.FMonat[16]]);
    18: Celltext:=format('%.0n', [myData.FMonat[17]]);
    end;
  end;
Gruß Igotcha
Danke für Deinen Beitrag
Wenn Du das angehängte Zip File angeschaut hättest, hättest Du sicher auch bemerkt, dass dies _nicht_ die Lösung für mein Problem ist, bzw. das Problem an anderer Stelle zu suchen ist.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#14

Re: VirtualStringTree und OnLoadNode

  Alt 21. Jun 2005, 08:55
Hallo Günter,

in deinem Demo-Projekt fragst du im Ereignis OnGetText() auf Column = 0 ab. Das funktioniert nur, wenn du auch in vst.header.columns Spalten eingetragen hast. Ansonsten ist der Parameter Column von OnGetTExt() immer -1 und kann ignoriert werden.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: VirtualStringTree und OnLoadNode

  Alt 21. Jun 2005, 09:06
Ups, danke für den Hinweis, hab ich jetzt ganz übersehen. Im nicht Demo Projekt habe ich eine Column definiert, da hat die Abfrage auf column=0 funktioniert.

Bin gespannt obs funktioniert heute abend , scheint aber eine sehr plausible Erklärung dafür zu sein, warum es vorher nicht geklappt hat.

Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#16

Re: VirtualStringTree und OnLoadNode

  Alt 21. Jun 2005, 09:57
wie wärs mit:

Code:
procedure TKOM.VTISTGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  myData: PIstData;
begin
  myData := VTIST.GetNodeData(Node);
  Node.Align := 3;
  if (TextType = ttNormal) and (myData.FGTyp <> 6) then
  begin
   if Column = 0 then
    Celltext := myData.FGBez
   else
    Celltext := format('%.0n', [myData.FMonat[Column-1]]);
  end;
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: VirtualStringTree und OnLoadNode

  Alt 21. Jun 2005, 10:06
Zitat von dahead:
wie wärs mit:

Code:
procedure TKOM.VTISTGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  myData: PIstData;
begin
  myData := VTIST.GetNodeData(Node);
  Node.Align := 3;
  if (TextType = ttNormal) and (myData.FGTyp <> 6) then
  begin
   if Column = 0 then
    Celltext := myData.FGBez
   else
    Celltext := format('%.0n', [myData.FMonat[Column-1]]);
  end;
oder
Code:
procedure TKOM.VTISTGetText(Sender: TBaseVirtualTree;
  Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType;
  var CellText: WideString);
var
  myData: PIstData;
begin
  myData := VTIST.GetNodeData(Node);
  Node.Align := 3;
  if (TextType = ttNormal) and (myData.FGTyp <> 6) then
  begin
    case column of
      0: Celltext := myData.FGBez;
    else
      Celltext := format('%.0n', [myData.FMonat[Column-1]]);
    end;
  end;
end;
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: VirtualStringTree und OnLoadNode

  Alt 21. Jun 2005, 20:45
Zitat von marabu:
Hallo Günter,

in deinem Demo-Projekt fragst du im Ereignis OnGetText() auf Column = 0 ab. Das funktioniert nur, wenn du auch in vst.header.columns Spalten eingetragen hast. Ansonsten ist der Parameter Column von OnGetTExt() immer -1 und kann ignoriert werden.

marabu
So danke, jetzt kommt zumindest keine Zugriffsverletzung mehr Speicher und Laden klappt auch, nun habe ich allerdings ein neues seltsames Verhalten des Trees beobachten können.

Zeitweise kann ich meine Nodes nicht auswählen mit der Maus und mit Tastatatur zeichnet er sich irgendwie sehr komisch.

Ich hab mal das ganze Projekt angehängt.
Angehängte Dateien
Dateityp: zip databox_204.zip (21,9 KB, 16x aufgerufen)
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#19

Re: VirtualStringTree und OnLoadNode

  Alt 21. Jun 2005, 21:38
Hallo Günter,

im Ereignis OnEdited() des VST solltest du folgende Zeile einfügen:

Sender.InvalidateNode(Node); Sag mal, was ich machen muss um das unerwünschte Verhalten zu beobachten.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: VirtualStringTree und OnLoadNode

  Alt 21. Jun 2005, 21:41
An und für sich habe ich nur ein paar Kategorien und Notizen hinzugefügt und konnte mit der Maus nicht alle auswählen. Mit der Tastatur hab ich dann allerdings die Darstellung des Baumes ruiniert. Die Notizen sind zu Kategorien worden und umgekehrt.

Nachdem ich aber mal die Datei in welche ich das Speicher gelöscht habe, konnte ich es auch nicht mehr reproduzieren, vielleicht hatte ich in dieser Datei noch einen Knopf.


Ich danke Dir schon mal für Deine vielen Mühen, mit meinen Problemen.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  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 20:39 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