![]() |
Treeview:
Hallo Delphi-Freunde!
Möchte (mögl. kurz) mein Prob schildern: Meine CDs/DVDs liegen im chaos stapelweise rum. Nun hab ich mir 'ne Treeview erstellt, die die Inhalte der eingelegten Scheibe auflistet und ausdruckt. Klappt auch soweit. Nur solche Ordner wie {3da26cd63df38a2b200c1842774c} möchte ich natürlich nicht mitdrucken, daher will ich solche Einträge, die ich nicht sehn will, selektieren(Multiselect) und per Button "Nicht mitdrucken" ausklammern bzw. nur die selektierten Einträge drucken. Zum Test lasse ich mir vorher nichtausgewählten Einträge in einem Memo listen. Hier hakt es dann: Beim klick auf "Auswahl Nicht drucken" bekomme ich alle Unterordner ins Memo?? Die im Treeview garnicht zu sehen sind! Die folgende Pocedure ist hierfür verantwortlich: ------------------------------------------------- procedure TForm1.Button2Click(Sender: TObject); // Auswahl nicht(!) Drucken var i: integer; // // tv[] = TreeView(Global) begin Memo1.Clear; for i := 0 (to TreeView1.Items.Count - 1) do if NOT TreeView1.Items.Item[I].Selected then begin Memo1.lines.add(TreeView1.Items.Item[i].Text); tv[i]:=-1; // Nicht-selektierte Einträge auf -1 setzen end else tv[i]:=i; // Selektierte Einträge merken Memo1.Perform(WM_VSCROLL, SB_TOP, 0); end; ------------------------------------------------- Die folgende Proc für "Auswahl Drucken" funktioniert dagegen perfekt! procedure TForm1.Button4Click(Sender: TObject); // Auswahl drucken var i: integer; begin Memo1.Clear; for I := 0 to (TreeView1.Items.Count - 1) do if TreeView1.Items.Item[I].Selected then begin Memo1.lines.add(TreeView1.Items.Item[i].Text); tv[i]:=-1; // Nicht-selektierte Einträge auf -1 setzen end else tv[i]:=i; // Selektierte Einträge merken SendMessage(Memo1.Handle, WM_VScroll, SB_Bottom, 0); end; Bitte! Wie kommt es dazu, dass die obere Proc "Button2Click" die Unterordner der Treeview ins Memo schreibt?? VIELEN Dank im Voraus!!! |
AW: Treeview:
Hallo,
und herzlich Willkommen in der DP. Bitte schließe doch künftig Deine Quellcodes in die entsprechenden Tags ein (das Helm-Symbol für Delphi-Code). Zitat:
Delphi-Quellcode:
Nicht ausgewählt, also ab ins Memo
if NOT TreeView1.Items.Item[I].Selected then
begin Memo1.lines.add(TreeView1.Items.Item[i].Text); // [...] end Gruß |
AW: Treeview:
Hallo Volker!!!
Habe den ganzen in meinem Garten ackern müssen, tut mir leid, dass ich jetzt erst reagiere! Ja, das Helmsymbol- jetzt weiß ich es. Ich denke demnächst daran(.. evtl. muss ich mich wieder hier melden..?). "Was nicht zu sehen ist, ist nicht zwangsläufig ausgewählt." Diesen Satz verstehe ich nicht!? Es ist wie folgt: Ordner im Treeview: --3da26cd63df38a2b200c1842774c <-diesen Ordner markiere ich zB. --Bewerbungen.doc --Downloads --DVDs .. usw Nach klick auf "Auswahl nicht drucken" erscheint dieser Ordner auch nicht im Memo(soll so sein). Aber alle anderen Ordner im Treeview werden geöffnet und die ihre Unterordner ins Memo geschr.(Total verrückt). Habe hin und her experimentiert, kein Ergebnis. Die Procs für "Auswahl Drucken" & "Auswahl nicht Drucken" ähneln sich bis auf das NOT. Und "Auswahl Drucken" funzt perfekt! Macht mich irre! DANKE DIR!!!! |
AW: Treeview:
Hallo,
Zitat:
Code:
Wenn wir uns jetzt die Struktur von Treeview.Items ansehen, dann ergibt sich folgendes Bild (ich liste nur Index und Text)
+ 3da26cd63df38a2b200c1842774c
| Bewerbungen.doc - Downloads | Downloads Vorgestern - Downloads Gestern | oldstuff.rar - Downloads Heute | Datei1.zip | Datei2.zip | Downloads Danknimmerleinstag - DVDs + Setups - Spielfilme - Heiter bis wolkig | Die Ritter der Kokosnuss - Frauenfilme | Die wunderbare Welt der Amelie
Code:
So nun gilt gemäß Deiner Auswahl:
[0] 3da26cd63df38a2b200c1842774c
[1] 3da2 // sehen wir oben zwar nicht ist aber da, und nicht ausgewählt [2] 3da3 // dito [3] Bewerbungen.doc [4] Downloads [5] Downloads Vorgestern [6] Downloads Gestern [7] oldstuff.rar [8] Downloads Heute [9] Datei1.zip [10] Datei1.zip [11] Datei2.zip [12] Downloads Danknimmerleinstag [13] DVDs [14] Setups [15] Emba XE4 // sehen wir oben zwar nicht ist aber da, und nicht ausgewählt [16] Spielfilme [17] Heiter bis wolkig [18] Die Ritter der Kokosnuss [19] Frauenfilme [20] Die wunderbare Welt der Amelie
Delphi-Quellcode:
und
Treeview1.Items[0].Selected := True
Delphi-Quellcode:
für alle 0 < i <= Treeview1.Items.Count - 1
Treeview1.Items[i].Selected := False
Demnach wundert es nicht (und da ist auch nichts Total verrückt), wenn Du in Deiner Schleife über alle Einträge iterierst, dass alle diese Knoten im Memo landen (ob sichtbar oder nicht, das war gemeint). Offenbar ist dies nicht das gewünschte Verhalten. Was genau Du erreichen möchtest kann ich leider nicht erkennen. Ist es Ok, dass Bewerbung.doc, Downloads und DVDs - mit allen Unterordner - im Memo landen, aber alles was unterhalb von 3da26cd63df38a2b200c1842774c liegt, dort nicht aufschlagen soll? Oder ist Deine Zielsetzung eine ganz andere? Gruß |
AW: Treeview:
Hallo Volker!
Ja, meine Zielsetzung ist schon anders: Mir kommt es vor allem darauf an, Ordner mit kryptischen Namen auszulassen. Auf meinen DVDs sind durchweg irgendwelche Progs, Filme, Daten, die mich im Wesentlichen inetressieren. Diese Ordner will ich später auf einem Blatt ausgedruckt sehn, weil mich nur(!) dies interessieren. Aber ich will nur das Hauptverzeichnis, was in den Ordnern drin ist, brauche ich nicht und es wird dann auch unübersichtlich. Zumal alle Unterordner des betr. Laufwerks geöffnet werden- und im Memo erscheinen, im Treeview ändert sich dabei nix! Mir erscheint das total verrückt. Aus meinem früheren programmieren in TP habe ich gelernt, dass letztendlich der Computer immer recht hat. Der macht nur die Fehler, die ich ihm beibringe, ist schon klar. Bin leider mit Delphi zu wenig "zusammen", um das mal so nachvollziehn zu können. Ansonsten war es immer eine Stärke von mir, Fehler im Code zu finden. Schade, das Prog könnte mir sehr helfen in meinem CD-Chaos. Zum handlichen Liste schreiben fehlt mir einfach die Lust und außerdem würde ich es sehr gerne als sinnvolles Programm sehen. DANKE DIR!!! |
AW: Treeview:
Hallo,
mit
Delphi-Quellcode:
durchläufst Du alle Zweige des Baumes und nicht nur die sichtbaren. Deine Auswahl triffst Du aber nur bei den sichtbaren Zweigen. Daher werden alle unsichtbaren Zweige ausgegeben, da sie ja nicht von Dir ausgewählt wurden. Du müsstest also zusätzlich prüfen, ob die auszugebenden Zweige in der obersten oder sonst von Dir gewählten Ebene liegen.
for I := 0 to (TreeView1.Items.Count - 1) do
Bin mir nicht ganz sicher, aber die ausgewählten Zweige müsstest Du in
Delphi-Quellcode:
finden.
Delphi-Syntax:
property Selections[Index: Integer]: TTreeNode; Eventuell lässt sich Dein Problem durch diese Änderung lösen:
Delphi-Quellcode:
. Habe zur Zeit Delphi im Zugriff und kann daher nicht sagen, ob das so funktioniert.
for I := 0 to (TreeView1.Selections.Count - 1) do
|
AW: Treeview:
Hallo,
Zitat:
Delphi-Quellcode:
Gruß
procedure TForm1.Button2Click(Sender: TObject);
procedure CheckNode (Node : TTreeNode); begin while Assigned (Node) do begin if not Node.Selected then begin Memo1.Lines.Add (Node.Text); CheckNode (Node.getFirstChild) end; Node := Node.getNextSibling end end; begin Memo1.Lines.Clear; CheckNode (Treeview1.Items [0]) end; |
AW: Treeview:
Hallo Volker!!
Ja Deine While-Schleife werde ich mal einbauen! Lasse es hier wissen, sobald ich das Ergebnis habe! Bin gespannt & voller Zuversicht! VIELEn Dank!!!! |
AW: Treeview:
Hallo,
bin auch gespannt; hoffe, die Ernüchterung kommt nicht gleich hinterher. Gruß |
AW: Treeview:
Moin zusammen!
Nachdem ich mein Dach(zunächst teilweise) decken musste(Wasser im Häusle), habe ich Deinen o.g.Code- (Volker)nach Tagen u. Tagen in mein Prog einbauen wollen- klappte leider auch nicht. Daher hab ich nun einen kl. Umweg gemacht. Packe alle Einträge der Treeview in ein Stringarray- so klappt es endlich. Es ist sicher nicht die elegante Art, aber es soll auch mal vorwärts gehn. Gruß Uli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14: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