Announcement

Collapse
No announcement yet.

TTreeView-Knoten auf festplatte atomatisch erstellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TTreeView-Knoten auf festplatte atomatisch erstellen

    Frage numero 3 am Tage meiner Wiedergeburt
    Unter freundlicher Unterstützung eines Pascallers habe ich eine kleine 'Projektverwaltung' geschreiben, in der man eigentlich noch nicht viel mehr kann als Unterordner/dateien erstellen, diese zu löschen!

    Mein 'kleines Ziel' ist es, diesen TreeView auf der Festplatte mitzuerstellen!

    void __fastcall TMainForm::newDirItemClick(TObject *Sender)
    {
    TTreeNode *NewDir;
    NewDir = ClientsTreeView->Items->AddChild (ActNode, "New Folder");
    NewDir->ImageIndex = 0; // Foldericon
    // CreateDir ("NewFolder"); // WIE GEHT DAS ??????
    NewDir->Selected = true;
    ActNode->Expand(false); // new root visible
    }

    Nehmen wir an, das Hauptverzeichniss liegt unter :
    C:\\Programme\\Programm1

    Wie kann ich nun auf der Festplatte einen neuen Unterordner und diesem Unterordner neue Unterordner hinzufügen, sofern dies im TTreeview gewünscht ist?

  • #2
    >> am Tage meiner Wiedergeburt ???

    >> sofern dies im TreeView gewünscht ist ???

    >> Mein 'kleines Ziel' ist es, diesen TreeView auf der Festplatte mitzuerstellen ???

    Ein Directory erzeugt man mit CreateDir, wie Du das in dem fast unleserlichen Listing ja schon festgestellt hast. Gelöscht wird es wieder mit RemoveDir.

    Alle anderen Probleme solltest Du mal versuchen, ein wenig genauer zu beschreiben, ohne blumige Abschweifungen.

    Gruß - Günthe
    Günther

    Comment


    • #3
      Entschuldige bitte, dass meine Ansprache recht uneindeutig war!

      Also ich habe in meinem Programm einen TreeView mit folgenden Funktionen implementiert:

      - Neues Projekt erstellen
      - Neuen Unterordner erstellen
      - Neue Datei im aktuellen Ordner erstellen
      - Dateien und Ordner umbenennen

      Mit der folgenden Funktion wird im TreeView ein neuer Unterordner erstellt:

      void __fastcall TMainForm::newDirItemClick(TObject *Sender)
      {
      TTreeNode *NewDir;
      NewDir = ClientsTreeView->Items->AddChild (ActNode, "New Folder");
      NewDir->ImageIndex = 0; // Foldericon
      // CreateDir ("NewFolder"); // WIE GEHT DAS ??????
      NewDir->Selected = true;
      ActNode->Expand(false); // new root visible
      }

      Mit CreateDir wird zwar ein neuer Ordner erstellt, aber irgendwie muss man das ganze dynamisch machen.

      Denn wenn man zum Beispiel folgende Struktur hat im TreeView:

      Project1
      - NewFolder1
      - NewFolder2
      - Unterordner1

      Jetzt möchte ich einen neuen Ordner im Unterordner1 erstellen, wie kann man dieses sicherlich komplexe Problem lösen?

      Danke

      Comment


      • #4
        Entschuldgt bite für den unübersichtlichen Code, leider wurde mein Enter nicht akzeptiert. Nur bitte helft mir!

        Danke

        Comment


        • #5
          <html>

          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
          <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
          <meta name="ProgId" content="FrontPage.Editor.Document">
          <title>Neue Seite 1</title>
          </head>

          <body>

          <pre>void __fastcall TMainForm::newDirItemClick(TObject *Sender)
          {
          TTreeNode *NewDir; NewDir = ClientsTreeView-&gt;Items-&gt;AddChild (ActNode, &quot;New Folder&quot;
          NewDir-&gt;ImageIndex = 0;
          <span style="background-color: #FFFF00">// Foldericon //</span>
          <font color="#FF0000"><b>CreateDir (&quot;NewFolder&quot;</b> </font>
          <span style="background-color: #FFFF00">// WIE GEHT DAS ?????? </span>
          <font color="#FF0000"><b>NewDir-&gt;Selected = true;</b></font>
          ActNode-&gt;Expand(false);
          // new root visible
          }</pre>

          <p>An DeinemCode kann man nicht erkennen, was da alles einkommentiert sein soll,
          und wo genau das Problem liegt !</p>

          </body>

          </html&gt
          Günther

          Comment


          • #6
            Hmm, ersteinmal VIELEN DANK dafür, dass endlich mal der Quelletxt gut dargestellt wurden ist!!!!

            Wenn es bei dir keine Probleme gibt, dann wäre es nett, wenn du mir erklären würdest, was man mit diesem vorliegenden Code erreicht!

            Vielleicht kommen wir so der Sache nähre, und mein C++Builder hat nur 'ne Macke!

            Vielen Dank

            Comment


            • #7
              <html>

              <head>
              <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
              <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
              <meta name="ProgId" content="FrontPage.Editor.Document">
              <title>Neue Seite 1</title>
              </head>

              <body>

              <p>Gestern hatte ich leider keine Zeit, mich ausführlich mit Deinem Problem zu
              beschäftigen. Heute hatte ich. ActNode ist in Deinem Code ein undefiniertes
              Etwas, ich habe es durch TreeView1-&gt;TopItem bzw. Root ersetzt. NewDir(&quot;NewFolder&quot;&nbsp;
              erzeugt ein neues Unterverzeichnis mit dem Namen &quot;NewFolder&quot; im
              aktuellen Verzeichnis . Was das aktuelle Verzeichnis ist, ist mehr oder weniger
              undefiniert, wenn Du in Deinem Programm nicht explizit in ein bestimmtes
              Verzeichnis gewechselt bist.&nbsp;&nbsp;</p>
              <pre><b>void __fastcall</b> TForm1::Button1Click(TObject *Sender)
              {
              TTreeNode *NewDir;
              TTreeNode *Root;
              Root = TreeView1-&gt;Items-&gt;AddChild (TreeView1-&gt;TopItem, &quot;Root&quot;
              NewDir = TreeView1-&gt;Items-&gt;AddChild(Root, &quot;NewFolder&quot;
              NewDir-&gt;ImageIndex = 0;
              CreateDir (&quot;NewFolder&quot;
              NewDir-&gt;Selected = true;
              TreeView1-&gt;TopItem-&gt;Expand(false);
              }</pre>
              <p>Und was die Formatierung betrifft: Den Quelltext via Zwischenablage nach
              FrontPage (Express) oder einem vergleichbaren Editor kopieren, markieren und
              &quot;Formatiert&quot; wählen. Danach innerhalb des Quelltextes die Einrückung
              optimieren und dabei die Return-Taste nicht benutzen.&nbsp; Der<span style="background-color: #FFFF00">
              Text </span>kann nun <i><b>beliebig</b></i> (<font color="#FF0000">farbig</font>)
              gestaltet werden. Zuletzt gehst Du in die HTML-Ansicht, markierst alles und
              kopierst alles in die Zwischenablage, und von dort wieder in den Forum-Editor
              hinein. Alternativ kannst Du auch direkt mit den HTML-Tags arbeiten, <b>vor</b>
              den Quelltext setzt Du ein <span style="background-color: #00FF00">&lt; pre &gt;
              </span>und <b>nach</b> dem Quelltext ein <span style="background-color: #00FF00">&lt;
              / pre &gt;</span> , allerdings <b>ohne</b> die Leerzeichen. </p>

              <p>Gruß - Günther </p>

              </body>

              </html&gt
              Günther

              Comment


              • #8
                Danke für dein Bemühen, nur leider hatte dein Code kein erfolgreiches Ergebnis!

                <pre>void __fastcall TMainForm::newDirItemClick(TObject *Sender)
                {
                TTreeNode *ActNode;
                TTreeNode *NewDir;
                NewDir = ClientsTreeView->Items->AddChild (ActNode, "Folder");
                NewDir->ImageIndex = 1;
                NewDir->SelectedIndex = 1;
                CreateDir("Folder");
                NewDir->Selected = true;
                ActNode->Expand(false);
                }</pre>

                So, aus gerade genannten Quellcode ergibt sich folgende Funktion.

                1.) Am Anfang muss man ein Projekt wählen mit Namen, man gibt also in ein Feld ein: 'project1' - Dann nehmen wir jetzt zum Test willkürlich an, dass dieser Projektordner unter C:\\Programme\Testprogramm gespeichert wird.

                2.) Dann klickt man recht auf den projektordner, dann wähle man 'Neuen Unterordner erzeugen', was die obige Funktion auslöst!

                3.) Im TreeView wird nun der Unterordner angezeigt, jedoch nicht auf der Festplatte. Dort sollte dann unter C:\\Programme\Testprogramm\project1\ der Unterordner erzeugt werden!

                4.) Also muss man irgendwie herausfinden, welcher Ordner gerade aktiv ist, und von dem eine Unterordner erzeugen!

                Bitte helft mir und schaut euch mal diese Sache an... Danke

                Comment


                • #9
                  Ich sagte doch schon, der aktuelle Pfad ist mehr oder weniger undefiniert. Irgendwo auf Deiner Festplatte hast Du einen Ordne "Folder". Entweder mußt Du mit chdir in das gewünschte Verzeichnis wechseln, oder bei CreateDir den kompletten Pfad angeben.

                  Gruß - Günthe
                  Günther

                  Comment


                  • #10
                    ja schon, aber das ganze muss man doch irgendwie dynamisch / allgemein fassen! Wie weiss ich denn, wo genau sich der gerade angeklickte ordner befindet? Du sagtest was von 'ChDir' - ich währe wirklich sehr froh, wenn du mir da helfen könntest!

                    Danke

                    Comment

                    Working...
                    X