Delphi-PRAXiS

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 TreeView - Auswahl merken, nach ProgStart herstellen (https://www.delphipraxis.net/18125-treeview-auswahl-merken-nach-progstart-herstellen.html)

BiBi 15. Mär 2004 11:38


TreeView - Auswahl merken, nach ProgStart herstellen
 
Hallo,

ich komm schon wieder mal nicht weiter.

Ich möchte den zuletzt markierten Knoten im Tree speichern und nach Programmstart diese Markierung wieder herstellen. Bin in der OH nicht fündig geworden. Könnt Ihr mir einen Tip geben, wie ich das anstelle.

Danke.

Gruß

CenBells 15. Mär 2004 11:52

Re: TreeView - Auswahl merken, nach ProgStart herstellen
 
hallo,

identifizierst du die knoten irgendwie eindeutig?
Wenn ja, dann speicher doch den wert in einer ini oder ähnlichem und lade den wert dann bei neustart.

//edit kannst auch den absoluteindex eines nodes speichern...

Gruß
Ken

BiBi 15. Mär 2004 12:00

Re: TreeView - Auswahl merken, nach ProgStart herstellen
 
hallo CenBells,

ich verwende zur Identifikation des Knotens Node.AbsoluteIndex.
Aber wie stelle ich die letzte Auswahl im Tree wieder her?
Mit welcher Eigenschaft oder Procedure setze ich die letzte Auswahl?

Gruß

Chewie 15. Mär 2004 12:02

Re: TreeView - Auswahl merken, nach ProgStart herstellen
 
Du musst den Wert irgendwo speichern, z.B. in einer Hier im Forum suchenINI-Datei oder in der Hier im Forum suchenRegistry. Zum Programmstart liest du diesen Wert aus und setzt die Property Selected.

CenBells 15. Mär 2004 12:06

Re: TreeView - Auswahl merken, nach ProgStart herstellen
 
Zitat:

Zitat von Chewie
Du musst den Wert irgendwo speichern, z.B. in einer Hier im Forum suchenINI-Datei oder in der Hier im Forum suchenRegistry. Zum Programmstart liest du diesen Wert aus und setzt die Property Selected.

hab ich doch oben schon geschrieben.... :roll:

Und zum Setzen des knotens beim Programmstart:
Du musst am besten beim hinzufügen der knoten mitzählen, wieviele bereits hinzugefügt worden sind.
Ist der letzte Knoten = deinem geladenen wert, dann setzt du mit
Delphi-Quellcode:
treeview.selected := derletzteKnoten;
den knoten.

Gruß
Ken

BiBi 15. Mär 2004 12:35

Re: TreeView - Auswahl merken, nach ProgStart herstellen
 
Hallo,

ich glaube ich mach es so wie Ihr beschrieben habt. Aber es funktioniert nicht.

Hier mein Code:

/DELPHI
procedure TfrmHaupt.ProjekteEinlesen;
var
nc : TTreeNode;
ExpandTree : Boolean;
begin
ExpandTree := True;

// TreeView löschen
TreeView_Projekte.Items.Clear;

// Standardverzeichnis setzen
nc := TreeView_Projekte.Items.AddChild(NIL, // 'D:\Programmierung\Delphi\PLS_TOOLS\BIN\Projekte') ;
ExtractFilePath (Application.ExeName) + 'PROJEKTE');
nc.ImageIndex := 1;
nc.SelectedIndex := 1;
//nc.OverlayIndex := 6;

TreeView_ProjekteExpanding (Self, nc, ExpandTree);
//TreeView_Projekte.Expand (True);
TreeView_Projekte.FullExpand;
end;




procedure TfrmHaupt.FuelleProjektTree(n: TTreeNode);
var
Path : String;
Search : TSearchRec;
nc : TTreeNode;
begin
if n = NIL then Exit;

Path := GetDirStr (n);

if FindFirst (Path + '*.*', faDirectory, Search) = 0 then
repeat
if ((Search.attr and fadirectory) = fadirectory) and
(Search.name <> '.') and (search.name <> '..') then
begin
nc := TreeView_Projekte.Items.AddChild (n, Search.Name);
nc.ImageIndex := 0;
nc.SelectedIndex := 0;
if n.AbsoluteIndex = MyTreeAuswahl then
begin
n.Selected := True;
end;
end;
until FindNext (Search) <> 0;

FindClose (Search);
//
end;






procedure TfrmHaupt.TreeView_ProjekteChange(Sender: TObject; Node: TTreeNode);
begin
// für zuweisung von verzeichnis
ProjektVerwaltung.ProjektVerzeichnis := GetDirStr (Node);

//Label_PLS_PIC.Caption := KurzVerzeichnis (ProjektVerwaltung.BilderVerzeichnis, 70);
Label_PLS_PIC.Caption := ProjektVerwaltung.BilderVerzeichnis;

Label_PLS_DAT.Caption := ProjektVerwaltung.DatenVerzeichnis;
Label_PLS_EXP.Caption := ProjektVerwaltung.ExportVerzeichnis;
Label_PLS_ALY.Caption := ProjektVerwaltung.AnalyseVerzeichnis;
MyProjektVerzeichniss := ProjektVerwaltung.ProjektVerzeichnis;

ProjektEinstellungen;


if DirectoryExists(ProjektVerwaltung.BilderVerzeichni s) then
FileListBox1.Directory := ProjektVerwaltung.BilderVerzeichnis;

if DirectoryExists(ProjektVerwaltung.AnalyseVerzeichn is) then
FileListBox2.Directory := ProjektVerwaltung.AnalyseVerzeichnis;

GroupBox_PJ_Struktur.Caption := 'Projekt Struktur [' + node.Text + ']'+ inttostr(node.AbsoluteIndex);

Caption := MyProgrammCaption + ' [' + node.Text + ']';
//***** Speichern der letzten Auswahl
MyTreeAuswahl := Node.AbsoluteIndex;
end;






procedure TfrmHaupt.TreeView_ProjekteCollapsed(Sender: TObject;
Node: TTreeNode);
begin
if node.Parent = NIL then Exit;

node.SelectedIndex := 0;
node.ImageIndex := 0;
end;





procedure TfrmHaupt.TreeView_ProjekteExpanding(Sender: TObject;
Node: TTreeNode; var AllowExpansion: Boolean);
begin
TreeView_Projekte.Items.BeginUpdate;
node.DeleteChildren;
FuelleProjektTree (Node);
TreeView_Projekte.Items.EndUpdate;
if node.Parent = nil then Exit;
node.SelectedIndex := 5;
node.ImageIndex := 5;
end;

/DELPHI


Könnt Ihr mir sagen, wo ich etwas falsch mache?

Danke.

Gruß

CenBells 15. Mär 2004 12:39

Re: TreeView - Auswahl merken, nach ProgStart herstellen
 
hallo,

benutz doch bitte die delphi tags zur anzeige von delphi-Quellcode.
Das wird dann viel übersichtlicher und ist einfacher zu lesen.
Und die andere frage ist, was funktioniert denn nicht?

//editz ich glaube es müsste eher so lauten
Delphi-Quellcode:
if n.AbsoluteIndex = MyTreeAuswahl then begin
  n.Selected := True;
  DeinTreeView.Selected := n;
end
Gruß
ken

BiBi 15. Mär 2004 13:30

Re: TreeView - Auswahl merken, nach ProgStart herstellen
 
Hallo CenBells,

es wird nicht der zuletzt markierte Knoten ausgewählt. Auch nicht mit Deinem letztm Vorschlag.

Ich wollte die Tags nutzen, wahrscheinlich falsch geschrieben.

"/DELPHI

Hier Code

"/DELPHI

natürlich ohne Anführungszeichen.

Gruß

BiBi 15. Mär 2004 15:27

Re: TreeView - Auswahl merken, nach ProgStart herstellen
 
Hallo,

ich habe nun die Lösung.

Mit

TreeView.Items[Nummer].Selected := True;

funktionierts.

Danke für Eure Hilfestellung.

Bis zum nächsten mal.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 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