Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Fragen zu TShellListView und TShellTreeView (https://www.delphipraxis.net/7759-fragen-zu-tshelllistview-und-tshelltreeview.html)

alcaeus 20. Aug 2003 19:54


Fragen zu TShellListView und TShellTreeView
 
Hallo! Ich habe einige Fragen zu den beiden im Titel genannten Komponenten. Wie kann ich in der ShellView Drag&Drop aktivieren? Wenn ich mehrere Elemente auswähle und ausschneide, wieso wird dann immer nur das erste verschoben? Wäre wirklich nett wenn mir jemand helfen könnte....

MfG
Alcaeus

Moyyer 2. Okt 2006 21:00

Re: Fragen zu TShellListView und TShellTreeView
 
Hi

Zitat:

Hallo! Ich habe einige Fragen zu den beiden im Titel genannten Komponenten. Wie kann ich in der ShellView Drag&Drop aktivieren?
Ich habe das gleiche Problem, wie alcaeus und würde gern Drag&Drop zwischen einem Shelltreeview und einem Shelllistview aktivieren.
Hat jemand eine Idee, wie man das aktivieren kann bzw. was dazu alles fehlt?

Mfg Moyyer

litsa 2. Okt 2006 22:52

Re: Fragen zu TShellListView und TShellTreeView
 
Danach hab ich auch gesucht und bin so auf VirtualShellTools gekommen, da geht das blitzschnell, da brauchst du nur die Shell Option DragDrop auf True setzen :)

Moyyer 2. Okt 2006 22:57

Re: Fragen zu TShellListView und TShellTreeView
 
wo find ich die??? (hab jetzt noch nicht gesucht)
Vielleicht gibt es ja eine schnelle methode

litsa 2. Okt 2006 23:05

Re: Fragen zu TShellListView und TShellTreeView
 
VirtualShelltools basierend auf VirtualTreeview

Beide lassen sich sehr einfach installieren.

Moyyer 3. Okt 2006 13:55

Re: Fragen zu TShellListView und TShellTreeView
 
Habe beides Installiert und funktioniert auch soweit super. DANKE

Mein Problem besteht jetzt darin, dass ich nicht weiß, wie ich in einer VirtualExplorerListview alle datein mit einem bestimmten Endung (z.b. mp3) markieren kann.

Kennt sich jemand damit aus?

Mfg Moyyer

EWeiss 3. Okt 2006 14:17

Re: Fragen zu TShellListView und TShellTreeView
 
Zitat:

Zitat von Moyyer
Habe beides Installiert und funktioniert auch soweit super. DANKE

Mein Problem besteht jetzt darin, dass ich nicht weiß, wie ich in einer VirtualExplorerListview alle datein mit einem bestimmten Endung (z.b. mp3) markieren kann.

Kennt sich jemand damit aus?

Mfg Moyyer

Alle Dateien mit dem extension *.mp3 vergleichen und den gefundenen eintrag selektieren.
Denke da gibts es eine eigenschaft multiselect diese muss natürlich auf true stehen.

gruß

Moyyer 3. Okt 2006 14:35

Re: Fragen zu TShellListView und TShellTreeView
 
Zitat:

Alle Dateien mit dem extension *.mp3 vergleichen und den gefundenen eintrag selektieren.
Denke da gibts es eine eigenschaft multiselect diese muss natürlich auf true stehen.
So habe ich es mit tree + listview gemacht. Leide finde ich bei den virtual-komponenten weder die "items" noch die "selectitem" prozeduren. in der hilfe steht auch nicht gerade viel darüber.

ein konkreter Hinweis wär hilfreich.

EWeiss 3. Okt 2006 14:48

Re: Fragen zu TShellListView und TShellTreeView
 
Zitat:

Zitat von Moyyer
Zitat:

Alle Dateien mit dem extension *.mp3 vergleichen und den gefundenen eintrag selektieren.
Denke da gibts es eine eigenschaft multiselect diese muss natürlich auf true stehen.
So habe ich es mit tree + listview gemacht. Leide finde ich bei den virtual-komponenten weder die "items" noch die "selectitem" prozeduren. in der hilfe steht auch nicht gerade viel darüber.

ein konkreter Hinweis wär hilfreich.

Habs mir mal angeschaut aber nicht installiert.

Zitat!

Zitat:

Multiselection is supported, including constrained selection so that only nodes of a certain initial level can be selected. A lot of effort has been put into the development of effective algorithms e.g. to allow for modifying an already large selection set still interactively.
Multiselect ist also möglich.
Ansonsten schau mal nach den stichwort node.

function TreeFromNode(Node: PVirtualNode): TBaseVirtualTree;

Über Node wirst du den eintrag selectieren können.

EDIT:Oder ging es dir nur um das ListView? Dann ist mein Beitrag überflüssig. Sorry

Denke da steht alles http://club.telepolis.com/silverpoin...gettingstarted
wenn es die oben genannte componente ist!



gruß

Moyyer 3. Okt 2006 15:14

Re: Fragen zu TShellListView und TShellTreeView
 
Leider kenne ich mit Nodes noch nicht so aus. Langsam bin ich am verzweifeln :evil: :twisted:
das muss doch irgendwie funktionieren...

Habe die VirtualShellTools installiert und benutze diese.

Es gibt eine Prozedure:

Delphi-Quellcode:
VirtualShellTreeView1.Selected[Node: PVirtualNode]: Boolean;
welche ein node markiert, nur weiß ich nicht, was ich in "node" eintragen soll.

EWeiss 3. Okt 2006 15:23

Re: Fragen zu TShellListView und TShellTreeView
 
Zitat:

Zitat von Moyyer
Leider kenne ich mit Nodes noch nicht so aus. Langsam bin ich am verzweifeln :evil: :twisted:
das muss doch irgendwie funktionieren...

Habe die VirtualShellTools installiert und benutze diese.

Es gibt eine Prozedure:

Delphi-Quellcode:
VirtualShellTreeView1.Selected[Node: PVirtualNode]: Boolean;
welche ein node markiert, nur weiß ich nicht, was ich in "node" eintragen soll.

Node ist die Zeile welche du selectieren kannst .
Quasi dieser welche den Namen deiner Datei anzeigt.


Delphi-Quellcode:
Var
nNode : PVirtualNode;

Begin
  // schau mal ob die node über ein ADD im anhang verfügt.
  // Damit kannst du dann eingelesene Namen zuweisen.
  For i := 0 to 10 do
    VirtualShellTreeView1.node.Add i;
End;
Ohne gewähr .. hab mir das Teil nicht angesehen.
Für i muss natürlich ein wert angegeben werden string Array oder was auch immer.

gruß

EWeiss 3. Okt 2006 15:31

Re: Fragen zu TShellListView und TShellTreeView
 
Ok habe was gefunden!

Das wird dir helfen die sache besser zu verstehen!
In Deutsch
http://www.dsdt.info/tutorials/virtualtreeview/

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Node: PVirtualNode;
begin
  Node:=VST.AddChild(nil);
  VST.AddChild(Node);
end;
Gruß

Moyyer 3. Okt 2006 16:26

Re: Fragen zu TShellListView und TShellTreeView
 
Liste der Anhänge anzeigen (Anzahl: 1)
Es bessert sich langsam alles.

Deine Hilfe ist erstmal super. DANKE

Habe bis jetzt geschafft im VirtualTreeView einen Node mit Selected zu markieren. Nur soll er das eigentlich im VirualListView machen. Auf jeden Fall sind das dort auch nodes, den mit addnode fügt er ein node hinzu.

Leider findet er die Nodes im VirtualListview noch nicht. Bei VirtualTreeView muss ich den ganzen Pfad angeben: z.b: C:\Windows damit dieser markiert wird. Hast du eine Ahnung was man bei VirtualListview als Pfad angeben muss?

Hab dir mal zum besseren Verständnis ein Bild angehangen

EWeiss 3. Okt 2006 16:37

Re: Fragen zu TShellListView und TShellTreeView
 
Zitat:

Zitat von Moyyer
Es bessert sich langsam alles.

Deine Hilfe ist erstmal super. DANKE

Habe bis jetzt geschafft im VirtualTreeView einen Node mit Selected zu markieren. Nur soll er das eigentlich im VirualListView machen. Auf jeden Fall sind das dort auch nodes, den mit addnode fügt er ein node hinzu.

Leider findet er die Nodes im VirtualListview noch nicht. Bei VirtualTreeView muss ich den ganzen Pfad angeben: z.b: C:\Windows damit dieser markiert wird. Hast du eine Ahnung was man bei VirtualListview als Pfad angeben muss?

Hab dir mal zum besseren Verständnis ein Bild angehangen

Ja es tut sich ja schon mal was ;)

Hast du dir das 11 Seitige Tutorial oben verlinkt mal angeschaut!
Da ist alles Super und ausführlich beschrieben.

Gruß

EWeiss 3. Okt 2006 16:39

Re: Fragen zu TShellListView und TShellTreeView
 
Zitat:

Zitat von Moyyer
Es bessert sich langsam alles.

Deine Hilfe ist erstmal super. DANKE

Habe bis jetzt geschafft im VirtualTreeView einen Node mit Selected zu markieren. Nur soll er das eigentlich im VirualListView machen. Auf jeden Fall sind das dort auch nodes, den mit addnode fügt er ein node hinzu.

Leider findet er die Nodes im VirtualListview noch nicht. Bei VirtualTreeView muss ich den ganzen Pfad angeben: z.b: C:\Windows damit dieser markiert wird. Hast du eine Ahnung was man bei VirtualListview als Pfad angeben muss?

Hab dir mal zum besseren Verständnis ein Bild angehangen

Ja es tut sich ja schon mal was ;)

Hast du dir das 11 Seitige Tutorial oben verlinkt mal angeschaut!
Da ist alles Super und ausführlich beschrieben.

Gruß

Moyyer 3. Okt 2006 17:05

Re: Fragen zu TShellListView und TShellTreeView
 
ja hab mir das tutorial angeschaut.

aber immoment häng ich dran fest, das ich (immernoch) nicht weiß, wie ich aus der virtuallistview den dateinamen (in form von string) auslesen kann.
Die Prozedur GetNodeData liefert mir einen Pointer zurück. K.a. was ich damit anfangen soll

EWeiss 3. Okt 2006 17:12

Re: Fragen zu TShellListView und TShellTreeView
 
Zitat:

Zitat von Moyyer
ja hab mir das tutorial angeschaut.

aber immoment häng ich dran fest, das ich (immernoch) nicht weiß, wie ich aus der virtuallistview den dateinamen (in form von string) auslesen kann.
Die Prozedur GetNodeData liefert mir einen Pointer zurück. K.a. was ich damit anfangen soll

Dieser enthält die information der Node welche du aufgerufen hast.
Dies können der string , Key, index, oder was auch immer, in der node enthalten ist sein.

Kann das Control nicht installieren mülle mir dann alles hier zu.

gruß

EDIT: Schick mal was code vielleicht können dann andere helfen die das control installiert haben
Leider haben diese keine Glaskugel.

Moyyer 3. Okt 2006 18:17

Re: Fragen zu TShellListView und TShellTreeView
 
hatte gedacht, dass man mit den "fortschrittlichen" komponenten wenigstens (relativ einfach) die Dateinamen auslesen und diese (Un)Selektieren kann, vor allem wenns eine Dateibrowserkomponente ist.
Aber umsomehr ich mich damit beschäftige umso komplizierter wird es.

Und da anscheinend niemand solche komponenten benutzt, scheinen sie auch net gut zu sein.

Deswegen lass ich es lieber und kehre wieder zu den Delphi-Mitgeliferten-Komponenten zurück.

Habe es immerhin soweit geschafft, das er nur die mp3s markiert, nur beim Beenden des Programms kamen einige schwerwiegende Fehler ohne Zeilenangabe im Code, die nicht "normal" sind

Delphi-Quellcode:
var i, all: integer;
  Node: pvirtualnode;
  s: Tstrings;
begin
  s := Tstringlist.Create;
  vlistview1.SelectAll(false);
  s := vlistview1.SelectedFiles;
  all := VListview1.SelectedCount;
  Node := vlistview1.GetFirstSelected;
  for i := 1 to all do
  begin
    if ansilowercase(extractfileext(s.Strings[i-1])) <> '.mp3' then
    begin
      vlistview1.Selected[node] := false;
      Node := vlistview1.GetNextSelected(Node);
    end
    else
      if i <> all then node := vlistview1.GetNextSelected(Node);
  end;
  s.Free;
end;
falls jemand Verbesserungsvorschläge hat, kann ich es ja mal probieren.

litsa 3. Okt 2006 19:08

Re: Fragen zu TShellListView und TShellTreeView
 
Zitat:

aber immoment häng ich dran fest, das ich (immernoch) nicht weiß, wie ich aus der virtuallistview den dateinamen (in form von string) auslesen kann.
Den Dateinamen bekommst du so:
Delphi-Quellcode:
VirtualExplorerListview1.SelectedPath
..hab jetzt nicht ganz mitgekriegt was du genau machen möchtest!

Moyyer 3. Okt 2006 19:17

Re: Fragen zu TShellListView und TShellTreeView
 
ich möchte das nur dateien eines bestimmten dateityps z.b. mp3 markiert sind, keine anderen

litsa 3. Okt 2006 19:46

Re: Fragen zu TShellListView und TShellTreeView
 
Zitat:

ich möchte das nur dateien eines bestimmten dateityps z.b. mp3 markiert sind, keine anderen
da du anfangs was von drag&drop erwähnt hast, möchtest du die markierten Dateien verschieben? Wenn ja wohin? Das Markieren hast du ja hinbekommen.

Moyyer 3. Okt 2006 19:55

Re: Fragen zu TShellListView und TShellTreeView
 
eigentlich wollte ich in meinem programm drag&drop aktivieren, was mit den alten komponenten (nicht) schwer geht.

aber natürlich haben die komponenten noch andere funktionen bzw. werden von anderen komponenten benutzt, so gibt es z.b. einen button, der alle mp3s des aktuellen ordners markiert.

Drag&drop geht nun. jetzt müssen die anderen prozeduren angepasst werden. nur leider war das schwieriger als zunächst gedacht.

Zitat:

Das Markieren hast du ja hinbekommen.
Theoretisch müsste die Prozedure funktionieren, aber wie schon erwähnt kommen häufig fehlermeldungen (speicheradressen)
was für den benutzer nicht zumutbar ist. --> mp3's markieren funktioniert nicht!!!!

Moyyer 3. Okt 2006 19:57

Re: Fragen zu TShellListView und TShellTreeView
 
hast du vllt eine ander lösung, wie ich alle mp3s markieren kann?

litsa 3. Okt 2006 20:49

Re: Fragen zu TShellListView und TShellTreeView
 
Hallo
versuch's mal hiermit

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
s: TstringList;
begin
s := TStringList.Create;
vli.SelectAll(true);
s.AddStrings(vli.SelectedPaths);
try
for i := 0 to vli.SelectedCount-1 do
if ExtractFileExt(s.Strings[i]) <> '.mp3' then begin
vli.Selected[vli.FindNode(s.Strings[i])] := false;
vli.Refresh;
end;
finally
s.free;
end;
end;


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