![]() |
TTreeView auf Editieren stellen
Hi,
wie kann man auf einfachste Art und weise es anstellen dass man in einem TTreeView einfach auf einen Eintrag klickt und dann entweder ich dort mit F2 den Text editieren kann oder dass die Eintraege in TEdit-Feldern erscheinen? Danke! |
Re: TTreeView auf Editieren stellen
Den Text des aktuell markierten Elements erhälst du per "TreeView.Selected.Text"
Etwa so:
Delphi-Quellcode:
procedure TForm.TreeViewClick(Sender: TObject);
begin Edit.Text := TreeView.Selected.Text; end; procedure TForm.ButtonClick(Sender: TObject); begin Treeview.Selected.Text := Edit.Text; end; |
Re: TTreeView auf Editieren stellen
Hi,
dank dir. Ich habe jetzt nur noch die Frage wie ich die Hirarchie davon noch in die EditFelder bekomme. |
Re: TTreeView auf Editieren stellen
Hallo,
im OnKeyDown des TreeView rufst Du damit den Inplace-Editor auf:
Delphi-Quellcode:
if assigned(TreeView1.Selected) then
if Key = vk_F2 then TreeView1.Selected.EditText; |
Re: TTreeView auf Editieren stellen
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Lannes,
danke! Hilft schon viel weiter! Jetzt muesste ich aber noch hinbekommen dass ich wenn ich eben auf diesen Eintrag klicke 4 EditFelder gefuellt werden. Einmal mit dem Root-Node, einem SubNode davon, davon noch ein SubNode und dem letzten SubNode. |
Re: TTreeView auf Editieren stellen
Also das ja wohl Pipifax^^
Delphi-Quellcode:
Wenn der Baum NICHT fest ist, ich also nur von deinen Vorgaben OHNE das Bild ausgehen kann, wirds natürlich schwieriger.
procedure TForm2.TreeView1Click(Sender: TObject);
var item, root, c1,c2: TTreeNode; begin if (Sender as TTreeView).Selected <> nil then begin item := (Sender as TTreeView).Selected; c2 := item.Parent; //einfach nach oben durchhangeln, zur sicherheit könnte man zwischendurch auf <> nil testen c1 := c2.Parent; root := c1.Parent; end; end; EDIT: willst du es so machen, dass man belibig reinklicken kann?! Dann ist mein Ansatz... ungeeignet. |
Re: TTreeView auf Editieren stellen
Hi Luke,
soweit ist der Baum Fest. Ja ich moechte einfach reinklicken koennen. Normalerweise nur in den ObjectName oder Translation. |
Re: TTreeView auf Editieren stellen
OK.... da es ja keine abzweigungen gibt, kann man auch gleich nach unten durchtraversieren:
Delphi-Quellcode:
Eigentlich immer noch relativ einfach... die OH hat zum Thema TTreeNode(s) auch einiges zu sagen ;)
procedure TForm2.TreeView1Click(Sender: TObject);
var node: TTreeNode; item, root, c1,c2: TTreeNode; begin if ((Sender as TTreeView).Selected <> nil) then begin node := (Sender as TTreeView).Selected; case Node.Level of 3: item := node; //translation geklickt 2: item := node.getFirstChild; //objektname geklickt else Exit; //was anderes geklickt -> Abbruch end; c2 := item.Parent; //jetzt einfach nach oben durchhangeln c1 := c2.Parent; root := c1.Parent; end; end; |
Re: TTreeView auf Editieren stellen
Dank dir Luke.
Ich verstehe nur eins noch net so recht und zwar mit dem Case Statement. Wenn ich auf die Translation klicke holt sich dein Code nicht das Erste Child aber wenn ich auf ObjectName klicke schon. Warum? |
Re: TTreeView auf Editieren stellen
item ist IMMER die Translation.
sollte dir das und die kommentare noch nicht reichen: das case statement macht folgendes: wenn die geklickte node die translation ist, wird item = geklickte node. wenn die geklcikte node das objekt ist, wird item = das erste child der geklickten node. ist doch auch die einzige möglichkeit... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 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