AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TreeView - Archiv erstellen

Ein Thema von atgis · begonnen am 31. Aug 2007 · letzter Beitrag vom 2. Sep 2007
Antwort Antwort
Seite 2 von 2     12   
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#11

Re: TreeView - Archiv erstellen

  Alt 1. Sep 2007, 15:23
Du kannst im Ereignis OnClick() der TreeView die Eigenschaft Enabled deines Menüeintrags "Unterpunkt1" in Abhängigkeit von Node.Level steuern. Später lernst du dann irgendwann TActionList und TAction kennen.
  Mit Zitat antworten Zitat
atgis
(Gast)

n/a Beiträge
 
#12

Re: TreeView - Archiv erstellen

  Alt 1. Sep 2007, 16:18
Aha...Danke!

Also das umbenennen der Ordner funktioniert:

Delphi-Quellcode:
//Node Umbenennen mit rechtsklick
procedure TForm1.Umbenennen1Click(Sender: TObject);
begin
 Form3.showmodal;
 RenameFile(TreeView1.Selected.Text,form3.edOrdnername.text);
 TreeView1.Selected.Text:=Form3.edOrdnername.Text;
end;

//Node Umbenennen
procedure TForm1.TreeView1Edited(Sender: TObject; Node: TTreeNode;
  var S: String);
begin
 RenameFile(TreeView1.Selected.Text, S);
end;
Leider lassen sich aber die Txt's nicht umbenennen...An was liegt das?



Das mit den ShowModale...leuchtet mir ein. Man muss ja die Form auch schließen könn...aber meine Form3 sieht so aus:

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
 Form3.close;
end;

procedure TForm3.FormActivate(Sender: TObject);
begin
 edOrdnername.text:=form1.treeview1.selected.text;
end;
Ich weiß jetzt nicht wie ich das mrOk zurückgeben kann...

EDIT: Ich kann auch mal den kompletten Quellcode hochladen...wenns was nützt...

EDIT2: Wie kann ich das TreeView auf einen Inhalt überprüfen? Also nur ob schon was drin steht oder nicht? Es sollte dann bloß true oder false zurückgeben...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#13

Re: TreeView - Archiv erstellen

  Alt 1. Sep 2007, 16:53
Dass das Umbenennen nicht funktioniert könnte daran liegen, dass du in S nur den Text des Knotens geliefert bekommst, der Dateinamen aber auch den Text des übergeordneten Knotens benötigt. Du solltest anstatt des RenameFile erstmal eine Kontrolle einbauen:

Delphi-Quellcode:
resourcestring
  S_EXT = '.txt';

function NodeText(node: TTreeNode; startLevel: integer; delimiter: char = PathDelim): string;
begin
  if not Assigned(node) then
    Result := ''
  else if node.Level > startLevel then
    Result := NodeText(node.Parent, startLevel, delimiter) + delimiter + node.Text
  else if node.Level = startLevel then
    Result := node.Text
  else
    Result := ''
end;

procedure TDemoForm.TreeViewEdited(Sender: TObject; Node: TTreeNode;
  var S: String);
var
  exePath, oldName, newName: string;
begin
  exePath := ExtractFilePath(ParamStr(0));
  oldName := exePath + NodeText(Node, 0);
  if Node.Level = 1 then
  begin
    oldName := oldName + S_EXT;
    newName := ExtractFilePath(oldName) + S + S_EXT;
  end else newName := exePath + S;
  ShowMessage(Format('RenameFile(%s, %s)', [oldname, newName]));
  S := Node.Text;
  // RenameFile(oldName, newName);
end;
Du kannst mrOk bzw. mrCancel an die Eigenschaft ModalResult der Form zuweisen. Das führt bei modalen Fenstern zum Schließen und der Rückgabe dieses Wertes. Du kannst das aber auch über die Eigenschaft ModalResult des Button erledigen.

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
  // {Form3.}Close;
  // Wenn du eine Methode der Form3 aufrufen willst, dann
  // ist dein Aufruf in Ordnung, aber innerhalb von Methoden
  // selbst vermeidet man nach Möglichkeit jeden Verweis
  // auf eine Instanz.

  ModalResult := mrOK ;
end;
Zitat von atgis:
... Ich kann auch mal den kompletten Quellcode hochladen ...
Kein Drohungen bitte...

Zitat von atgis:
Wie kann ich das TreeView auf einen Inhalt überprüfen?
Wie wäre es mit TreeView.Items.Count?
  Mit Zitat antworten Zitat
atgis
(Gast)

n/a Beiträge
 
#14

Re: TreeView - Archiv erstellen

  Alt 1. Sep 2007, 20:30
Danke! Funktioniert!

Delphi-Quellcode:
//Node Umbenennen
procedure TForm1.TreeView1Edited(Sender: TObject; Node: TTreeNode;
  var S: String);
var
  exePath, oldName, newName: string;
begin
  exePath := ExtractFilePath(ParamStr(0));
  oldName := (exePath + NodeText(TreeView1.Selected, 0, '\'));
  if Node.Level = 1 then
  begin
    oldName := oldName + S_EXT;
    newName := ExtractFilePath(oldName) + S + S_EXT;
  end else newName := exePath + S;

  RenameFile(oldname, newName);
end;
Bloß, dass ich die 2 Ebene unterbinde...das versteh ich nicht so richtig wie das gehen soll
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: TreeView - Archiv erstellen

  Alt 2. Sep 2007, 08:55
Guten Morgen.

Die Beschränkung auf zwei Ebenen - ich zeige dir Code zu dem Ansatz aus Beitrag #11, aber statt des OnClick() verwende ich OnChange(), da du wohl noch kein Kontextmenü verwendest.

Delphi-Quellcode:
procedure TDemoForm.TreeViewChange(Sender: TObject; Node: TTreeNode);
begin
  // miAddNode ist bei mir das MenuItem, über das ein
  // beuer Knoten in den Baum eingefügt werden kann.
  miAddNode.Enabled := not Assigned(Node) or (Node.Level = 0);
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: TreeView - Archiv erstellen

  Alt 2. Sep 2007, 09:38
Hallo atgis,

währe es nicht einfacher für Dich mit einem Object zu arbeiten und darin der Dateiname mit in den Knoten abzulegen? So ist gewährleistet das der Dateiname mit dem Knoten verbunden ist.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
atgis
(Gast)

n/a Beiträge
 
#17

Re: TreeView - Archiv erstellen

  Alt 2. Sep 2007, 10:50
Vielen Dank ..Also es funktioniert erstmal so, wie ich es mir vorgestellt habe...
  Mit Zitat antworten Zitat
atgis
(Gast)

n/a Beiträge
 
#18

Re: TreeView - Archiv erstellen

  Alt 2. Sep 2007, 14:45
Ich möchte jetzt noch gerne per ImageList ein Icon (Ordner-Symbol) vor die Nodes setzen...
TreeView1.Items[0] Doch beim Subnode klappt es mit

TreeView1.Items[1] nicht! Was ist da der fehler?
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: TreeView - Archiv erstellen

  Alt 2. Sep 2007, 17:22
Hallo atgis,

beim Anlegen des Kind-Knotens:


Delphi-Quellcode:
Knoten:=TreeView1.Items.AddChild(TreeView1.Selected,Form3.edOrdnername.text);
Knoten.ImageIndex:= 0; // Das erste Image aus der Liste
Knoten.SelectedIndex:=1; // Das Image beim Markieren des Knotens // das zweite Image aus der ImageList


Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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