Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Treeview1 markierte Zeile (DblClick) in Edit1 kopieren (https://www.delphipraxis.net/174769-treeview1-markierte-zeile-dblclick-edit1-kopieren.html)

Alterauge 8. Mai 2013 20:46


Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hallo,

möchte gerne aus einem Treeview1 (markierte Zeile) durch einen doppel Click,
in ein Edit1 kopieren.

Möchte aber nur die ersten 7 Zeichen in das Edit1 kopieren!

so geht es nicht! :-)
Delphi-Quellcode:
if Treeview1.ItemIndex <> -1 then
 Edit1.Text:= Copy (Treeview1.Items[Treeview1.Itemindex], 1, Edit1.MaxLength);
 Treeview1.ItemIndex:=-1;

Aviator 8. Mai 2013 20:56

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Wie wäre es mit:

Delphi-Quellcode:
TreeView1.Items[TreeView1.Selected.Index].Text
Versuchs mal. ;)

Alterauge 8. Mai 2013 21:06

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hey,
habe es so versucht:

Delphi-Quellcode:
      Edit1.Text:=TreeView1.Items[TreeView1.Selected.Index].Text;

Es wird jetzt auch was an Edit1 übergeben!
Aber nicht was ich markiert habe?

Volker Z. 8. Mai 2013 21:10

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hallo,

versuche es mal damit:
Delphi-Quellcode:
if Assigned (TreeView1.Selected) then
  Edit1.Text := Copy (TreeView1.Selected.Text, 1, Edit1.MaxLength)
Gruß

Aviator 8. Mai 2013 21:12

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Also bei mir wird mit der Zeile, die du hier gepostet hast, genau der Text der ausgewählten TreeNode in das Editfeld geschrieben. Diese Zeile einfach in das OnDblClick Event des TreeViews einfügen und es sollte funktionieren. Und wenn nur die ersten 7 Zeichen kopiert werden sollen, dann einfach noch mit Delphi-Referenz durchsuchenCopy() umklammern.

Delphi-Quellcode:
Edit1.Text := Copy(TreeView1.Items[TreeView1.Selected.Index].Text, 1, 7);

Alterauge 8. Mai 2013 21:23

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hey,
es wird nicht die akuelle Zeile, sondern die Folgende Zeile kopiert?

Aviator 8. Mai 2013 21:29

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Wurde der Baum mit
Delphi-Quellcode:
TreeView1.SaveToFile()
gespeichert oder hast du die Datei selbst erstellt? Wenn letzteres der Fall ist, dann zähl mal die Leerzeichen vor den einzelnen Zeilen. Nicht das dort ein Fehler vorliegt.

Folgendes steht in der Hilfe zu LoadFromFile():
Zitat:

Mit LoadFromFile können Sie in einer Datei gespeicherte Daten in ein Baumdiagramm laden. FileName sollte auf eine Datei verweisen, die mit der Methode SaveToFile gespeichert wurde. Baumdiagrammdateien sind Textdateien, die die Eigenschaft Text aller Knoten des Baumdiagramms zeilenweise auflisten. Jedem Textwert sind Leerzeichen vorangestellt, die die jeweilige Verschachtelungstiefe angeben.

Anmerkung: Baumdiagrammdateien enthalten nur den Text der Baumknoten und keine mit den Knoten verbundenen Daten.

Alterauge 8. Mai 2013 21:38

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Habe die Datei selbst erstellt(txt-file)!
Hier ein Beispiel:

Vorname
-Klaus
-Dierter
Nachname
-Müller
-Schmidt

Der Strich stellt ein Leerzeichen da!
Was muss ich änder?

Volker Z. 8. Mai 2013 21:40

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hallo,

da Deine Treeview Knoten nicht nur auf der ersten Ebene haben, funktioniert es nicht mit der Eigenschaft TTreeNode.Index.

Aus der OH:
Zitat:

Mit Index legen Sie die Position des Knotens relativ zu den gleichgeordneten Knoten fest. Der erste untergeordnete Knoten eines übergeordneten Knotens hat den Index 0, alle folgenden untergordneten Knoten werden fortlaufend numeriert.
Wenn, dann funktionert es mit der Eigenschaft AbsoluteIndex

Aus der OH:
Zitat:

Mit AbsoluteIndex wird die absolute Position eines Knotens in einem Baumknoten-Objekt übergeben. Der erste Knoten eines Baumknoten-Objekts hat den Indexwert 0, der erste Unterknoten den Wert 1 usw. Verfügt ein Knoten über untergeordnete Objekte, so ist sein Index stets um den Wert 1 kleiner als der des ersten untergeordneten Objekts.
Delphi-Quellcode:
if Assigned (TreeView1.Selected) then
  Edit1.Text := Copy (TreeView1.Items [TreeView1.Selected.AbsoluteIndex].Text, 1, Edit1.MaxLength)
Gruß

Aviator 8. Mai 2013 21:42

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Sieht für mich jetzt nicht falsch aus. Erstell dir doch zum Test mal im Designer die einzelnen Nodes und lass es dir mal mit
Delphi-Quellcode:
SaveToFile()
als Datei ausgeben. Vergleiche diese Dateien danach einmal. Oder versuch diesen Doppelklick-Teil nocheinmal mit der zuvor gespeicherten Datei die du dann beim Programmstart wieder eingelesen hast.

Edit:
Stimmt Volker. So weit habe ich jetzt gerade nicht gedacht. Mit Untergruppen muss man natürlich AbsoluteIndex benutzen.

Alterauge 8. Mai 2013 21:44

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hallo Volker,
im Edit wird nichts angezeigt bzw. kopiert?

Volker Z. 8. Mai 2013 21:57

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hallo,

ich habe die test.txt so angelegt wie von Dir beschrieben. Bei mir funktionieren beide Versionen:
Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
  if Assigned (TreeView1.Selected) then
    Edit1.Text := Copy (TreeView1.Items[TreeView1.Selected.AbsoluteIndex].Text, 1, Edit1.MaxLength)
end;
Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
  if Assigned (TreeView1.Selected) then
    Edit1.Text := Copy (TreeView1.Selected.Text, 1, Edit1.MaxLength)
end;
Wobei Edit1.MaxLength := 7;

Gruß

Alterauge 8. Mai 2013 22:12

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hey,
das glaube ich Dir!
Irgendetwas mache ich falsch!

Also habe ein TreeView1 !

Lade einen Textfile über Button4 ins TreeView1.
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
TreeView1.LoadFromFile('c:\Alarmgeber\Test.txt');
end;
Jetzt wird diese Baumstrucktur im TreeView1 angezeigt!

Jetzt soll durch einen doppel Click, die markierte Zeile (ersten sieben Zeichen) ins Edit1 kopiert werden.
Bei mir passiert nix?

Volker Z. 8. Mai 2013 22:32

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hallo,

ist es möglich etwas mehr Code zu zeigen, oder vielleicht besser noch die .pas und .dfm hochzuladen?

Gruß

Alterauge 8. Mai 2013 22:45

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hier der Quelltext zum Hochladen
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
begin
TreeView1.LoadFromFile('c:\Alarmgeber\Test.txt');
end;
Hier der Quelltext um die Datei zu bearbeiten:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
 Shellexecute(form1.handle,nil,'NOTEPAD.EXE','C:\Alarmgeber\Test.txt','',1);
end;
Mehr Quelltext ist nicht vorhanden!
Halt noch die Komponente TreeView1, Edit1, Button

Hier der Quelltext der mich ärgert:
Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
begin
  if Assigned (TreeView1.Selected) then
    Edit1.Text := Copy (TreeView1.Items[TreeView1.Selected.AbsoluteIndex].Text, 1, Edit1.MaxLength);
end;

Volker Z. 8. Mai 2013 23:18

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

im Anhang mal ein kleines Projekt mit Deinen Angaben. Versuch doch mal das Projekt zu kompilieren (die test.txt ggf. ins entsprechende Verzeichnis kopieren) und dann schauen was bei einen Doppelklick passiert (bei mir gewünschtes Verhalten).

Gruß

Alterauge 8. Mai 2013 23:19

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
So geht es jetzt:
Delphi-Quellcode:
Edit1.Text := Copy(TreeView1.Items[TreeView1.Selected.AbsoluteIndex].Text, 1, 7);
Danke :-)

Volker Z. 8. Mai 2013 23:44

AW: Treeview1 markierte Zeile (DblClick) in Edit1 kopieren
 
Hallo,

an was lag es dann letztlich?
Delphi-Quellcode:
Edit1.MaxLength = 0
, oder (kann ich mir zwar nicht vorstellen)
Delphi-Quellcode:
Assigned (TreeView1.Selected) = False
?

Gruß


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