![]() |
Navigation mit TreeView
Guten Tag!
Ich hätte eine Anfängerfrage als neuer Programmierer. Und zwar sieht man ja sehr oft, dass TreeViews als Navigation eingesetzt werden, z.B. sehr oft in Einstellung-Forms oder bei Verwaltungen von vielen Objekten etc. Ich frage mich nur, wie man das am besten anstellt, dass sich dann beim klicken in der TreeView ein neuer Inhalt lädt. Angenommen, die TreeView sieht so aus: Zitat:
Dass man z.B. für jedes TreeView Item ein Panel/GroupBox macht und dann immer nur dieses einblendet welches man gerade anklickt ist ja nicht sehr sauber :gruebel: Kann mir jemand helfen? Freundliche Grüsse Kevin |
Re: Navigation mit TreeView
Entweder mit Frames die du dann jeweils in ein Panel lädst oder du nutzt ein Pagecontrol mit unsichtbaren Tabsheets.
|
Re: Navigation mit TreeView
Zitat:
Danke, die Idee kam mir auch schon. Allerdings finde ich keine Option um die TabSheet Anzeige oben ausblenden zu lassen. MFG Kevin |
Re: Navigation mit TreeView
Bei den Eigenschaften des Tabsheets steht irgendwo "TabVisible" (oder so ähnlich). Das einfach auf false setzen.
|
Re: Navigation mit TreeView
Liste der Anhänge anzeigen (Anzahl: 1)
Um so etwas zu lösen, habe ich die Komponente "TNotebook" in Verbindung mit einem normalen "TTreeView" verwendet. Wird eine neue Seite hinzugefügt, dann wird dies in eine Eigenschaft "Pages" (vom Typ "TStrings") hinterlegt, d.h. der "Count" wird entsprechend erhöht. Eine super Sache, wenn man dies mit einem "OnChange" bei dem TreeView verknüpft:
Delphi-Quellcode:
Ist ein wenig Gewurstel, da ich als "PageIndex" (im Notebook) den "StateIndex" des aktuell gewählten Tree-Items verwende. Was aber eigentlich super funktioniert, nur vorher zugewiesen werden muss:
procedure TfrmSettings.tv_configChange(Sender: TObject; Node: TTreeNode);
begin // Automatically select the correct "tab" by using the (image) state-index // from the tree-element nb_config.PageIndex := tv_config.Selected.StateIndex; end;
Delphi-Quellcode:
Is ne feine Sache (siehe Anhang), aber ich weiß nicht, ob das der Königsweg ist...
procedure TfrmSettings.BuildConfigurationTree( Tree: TTntTreeView );
var ParentNode: TTntTreeNode; Owner: TTntTreeNodes; function AddNewConfigItem( Parent: TTntTreeNode; Text: WideString; StateIndex: Integer ): TTntTreeNode; var Owner: TTntTreeNodes; begin Owner := tv_config.Items; result := Owner.AddChild( Parent, Text ); result.ImageIndex := -1; result.SelectedIndex := -1; result.StateIndex := StateIndex; end; begin Owner := Tree.Items; Owner.BeginUpdate; try try // Delete all current tree items Owner.Clear; //General ParentNode := AddNewConfigItem( nil, _( 'General' ), -1 ); AddNewConfigItem( ParentNode, _( 'Workstation' ), 0 ); AddNewConfigItem( ParentNode, _( 'Display' ), 1 ); AddNewConfigItem( ParentNode, _( 'Sound effects' ), 2 ); AddNewConfigItem( ParentNode, _( 'Logging' ), 3 ); // Interfaces ParentNode := AddNewConfigItem( nil, _( 'Interfaces' ), -1 ); AddNewConfigItem( ParentNode, _( 'Scanner' ), 4 ); // OIP ParentNode := AddNewConfigItem( nil, _( 'OIP' ), -1 ); AddNewConfigItem( ParentNode, _( 'Directories' ), 5 ); AddNewConfigItem( ParentNode, _( 'Printer' ), 6 ); finally Owner.EndUpdate; end; except Owner.Owner.Invalidate; // force repaint on exception raise; end; end; |
Re: Navigation mit TreeView
Vielen Dank euch beiden!
Ich werde beides mal versuchen. MfG Kevin |
Re: Navigation mit TreeView
:gruebel:
Zitat:
Also, mit TPageControl kann man das auch gut hinbekommen, vorzugsweise im FormCreate oder FormActivate :
Delphi-Quellcode:
WICHTIG!! --> die Eigenschaft TabVisible NICHT im OI setzen, da sonst im Entwurfsmodus die TabSheets nicht mehr zu sehen sind ;)
//--alle Tabs verbergen
for i := 0 to PageControl1.PageCount -1 do PageControl1.Pages[i].TabVisible := false; Anzeigen des entsprechenden TabSheets
Delphi-Quellcode:
PageControl1.ActivePageIndex := ...
|
Re: Navigation mit TreeView
Zitat:
Werde die Notebook Variante trotzdem auch mal versuchen. :dp: |
Re: Navigation mit TreeView
Ok hab es mit beidem hinbekommen :thumb:
Vielen Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 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-2025 by Thomas Breitkreuz