Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Node eindeutig identifizieren, JvPageListTreeView (https://www.delphipraxis.net/126434-node-eindeutig-identifizieren-jvpagelisttreeview.html)

haentschman 24. Dez 2008 09:29


Node eindeutig identifizieren, JvPageListTreeView
 
Hallo alle...

...auch wenn es JvPageListTreeView ist ist es von CustomTreeView abgeleitet.

Prinzipielle Frage:

Problem:

- ich rufe auch aus anderen Fenstern die Einstellungen mit der entsprechenden Page auf.
- dazu muß ich den entsprechenden Eintrag der PageListTreeView auswählen. Dann wird die entsprechende Page aktiviert.
- über den Index des Items kann ich den Eintrag "select" ausführen.

nun zum Problem:
- wenn ich irgendwann einen Eintrag in der PageListTreeView hinzufüge sind sämtliche Indexe verändert, da ich den Tree alphabetisch sortiert haben möchte.
- d.h. daß im Quelltext der anderen Fenster die Zuordnungen nicht mehr stimmen. Da es sich um nicht gerade wenige Aufrufstellen im Programm handelt gefällt mir das gar nicht.
- rückwärts über Veränderung der Page verändert sich der Tree nicht mit :(

Zusammenfassung: der Index ist nicht eindeutig, die verlinkte Page schon.

Frage:
- wie kann ich den Node eindeutig identifizieren unabhängig von der Sortierung und dem Index

Danke für Infos... :hi:

Chemiker 24. Dez 2008 10:10

Re: Node eindeutig identifizieren, JvPageListTreeView
 
Frohe Weihnachten Andreas,

ich arbeite zwar nicht mit den Komponenten wie Du, sondern setze ein einfacher TreeView ein. Ich habe es aber so gelöst, dass ich an jeder Node ein Object hänge.

Bis bald Chemiker

RWarnecke 24. Dez 2008 10:19

Re: Node eindeutig identifizieren, JvPageListTreeView
 
Gehe doch einfach über die Eigenschaft Selected.

lbccaleb 24. Dez 2008 11:26

Re: Node eindeutig identifizieren, JvPageListTreeView
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey, hab noch ne Demo von:

Hier

vllt kann die dir helfen!

(unten Angehängt)

haentschman 24. Dez 2008 13:38

Re: Node eindeutig identifizieren, JvPageListTreeView
 
Danke für die Infos...

Zitat:

Gehe doch einfach über die Eigenschaft Selected.
...ich möchte aber einen bestimmten Node von "außerhalb" selektieren. Das geht einfach über den Index. Da aber bei Veränderungen des Tree´s der Index sich verändert würde ich das lieber anders identifizieren.

...die anderen Ideen arbeite ich mal durch.

PS: das mit dem Objekt anhängen verstehe ich nicht ganz :gruebel:


Frohe Weihnachten allen... :P

mkinzler 24. Dez 2008 13:39

Re: Node eindeutig identifizieren, JvPageListTreeView
 
Versuch es mal mit der Eigenschaft .Tag

haentschman 24. Dez 2008 13:43

Re: Node eindeutig identifizieren, JvPageListTreeView
 
hatte ich auch schon im Sinn, aber nur der TreeView als gesamtes hat einen Tag. Die Nodes selbst haben keine Eigenschaften, welche ich mißbrauchen könnte.

Ich hatte schon so komische Ideen wie eine Image List mit leeren Images und jedem Node ein Image zuweisen und über den ImageIndex selektieren...fand ich aber zu sehr um die Ecke :roll:

Danke...

im Moment selektiere ich per Index:
Delphi-Quellcode:
JvPageListTreeView1.Items.Item[17].Selected:= True;
da hätten wir noch die Möglichkeit per
Delphi-Quellcode:
JvPageListTreeView1.Select( NODE );
...nur weiß ich nicht wie ich den NODE identifiziere z.B. per Text :gruebel:

PS: habe eben herausgefunden, daß meine o.g. komische Idee gar nicht realisierbar ist. :?

RWarnecke 24. Dez 2008 15:28

Re: Node eindeutig identifizieren, JvPageListTreeView
 
Vielleicht hilft Dir ja diese Funktion weiter :
Delphi-Quellcode:
function TMainForm.TreeNodeSearch(aNode: TTreeNode; SearchItem: string): TTreeNode;
var
  I: Integer;
begin
  result := nil;
  if (aNode = nil) or (SearchItem = '') then Exit;
  for I := 0 to aNode.Count - 1 do
  begin
    if SearchItem = aNode.Item[i].Text then
    begin
      Result := aNode.Item[i];
      exit;
    end;
  end;
end;

omata 24. Dez 2008 15:47

Re: Node eindeutig identifizieren, JvPageListTreeView
 
Warum exit und dann auch noch zweimal?

Delphi-Quellcode:
function TForm.TreeNodeSearch(aNode: TTreeNode; SearchItem: string): TTreeNode;
begin
  Result := nil;
  if (aNode.hasChildren) and (SearchItem <> '') then begin
    aNode:=aNode.GetFirstChild;
    while assigned(aNode) and not assigned(Result) do begin
      if SearchItem = aNode.Text then
        Result := aNode;
      aNode:=aNode.getNextSibling;
    end;
  end;
end;

RWarnecke 24. Dez 2008 15:51

Re: Node eindeutig identifizieren, JvPageListTreeView
 
Deine Funktion macht aber igrgendwie nicht das was meine macht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.
Seite 1 von 3  1 23      

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