AGB  ·  Datenschutz  ·  Impressum  







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

Drag & Drop vom VST zum Explorer

Ein Thema von itashadow · begonnen am 9. Sep 2008 · letzter Beitrag vom 11. Sep 2008
Antwort Antwort
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#1

Drag & Drop vom VST zum Explorer

  Alt 9. Sep 2008, 14:29
Hi

ich hab da 2 VST auf meiner Form
der linke ist dazu da um eine Ordnerstruktur innerhalb des programmordners anzuzeigen
der rechte zeigt mir dateien(vorgänge\anfragen) an und dazugehörige reaktionen(antworten Kontrollnachrichten)

jetzt kam die anforderung das man per Drag&Drop die Dateien von der Dateianzeige zb auf den Desktop Droppen kann.

allerdings komm ich mit dem DoDragDrop vom Tvirtualtree nicht zurecht.

in der virtualtree unit steht:
Delphi-Quellcode:
procedure TBaseVirtualTree.DoDragDrop(Source: TObject; DataObject: IDataObject; Formats: TFormatArray;
  Shift: TShiftState; Pt: TPoint; var Effect: Integer; Mode: TDropMode);

begin
  if Assigned(FOnDragDrop) then
    FOnDragDrop(Self, Source, DataObject, Formats, Shift, Pt, Effect, Mode);
end;
hab das nu versucht im onmousemove zu machen und so sieht es aus:

Delphi-Quellcode:
procedure TForm10.treeMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
const
  Threshold = 5;
var
  SelFileList: TStrings;
  i: Integer;
  DataObject: IDataObject;
  KOORDINATE: TPoint;
  Effect, Effect2: integer;
  node: pvirtualnode;
  daten: ptreedata;
  wordarray: tformatarray;
begin
  setlength(wordarray, tree.selectedcount);
  koordinate.X := x;
  koordinate.Y := y;
  with Sender as TVirtualStringtree do
  begin
    if (SelectedCount > 0) and (csLButtonDown in ControlState) then
      begin
      SelFileList := TStringList.Create;
      try
        SelFileList.Capacity := SelectedCount;
        node := tree.GetFirstSelected;
        for i := 0 to SelectedCount - 1 do
        begin
          wordarray[i] := i;
          while (tree.GetNodeLevel(node) > 0) and (node <> nil) do
          begin
            node.Parent;
          end;
          daten:= tree.GetNodeData(node);
          if Selected[node] then SelFileList.Add(daten.Dateiname);
          node := tree.GetNextSelected(node);
        end;
        DataObject := GetFileListDataObject(dragquelle, SelFileList);
      finally
        SelFileList.Free;
      end;

      Effect:= DROPEFFECT_COPY;
      DoDragDrop(sender, DataObject, wordarray, shift, koordinate, Effect, dmBelow);
    end;
  end;
end;
nu kann ich zwar noch wie gewollt die dateien in andere ordner reinziehen wenn ich die in der Ordneranzeige droppe allerdings kann ich ausserhalb von meiner form nichts droppen.

was muss ich tun?

ps. was muss eigentlich genau in mein wordarray rein?


schonmal danke
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Drag & Drop vom VST zum Explorer

  Alt 9. Sep 2008, 16:56
Du musst nicht DoDragDrop aufrufen. Das macht er schon selber.

Du musst erstmal das Ereignis onDragAllowed verwenden und dort je nach Eintrag eben allowed auf True setzen (oder eben immer auf true setzen).

Was jetzt eher dein Problem sein dürfte, wie erkennt der Explorer, dass dies eine Datei ist.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#3

Re: Drag & Drop vom VST zum Explorer

  Alt 10. Sep 2008, 07:56
schonmal danke


aber hast recht mein problem ist jetzt wie ich dem Explorer eintrichter, das es sich um dateien handelt
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Drag & Drop vom VST zum Explorer

  Alt 10. Sep 2008, 08:05
Hallo,

Da es sich um ein Drag & Drop zum Windows Explorer handelt, kannst du nicht die TBaseVirtualTree.DoDragDrop verwenden.

Erstelle IDropSource, IDataObject und rufe DoDragDrop() auf.

Beispiel (ist anzupassen für VST) http://www.swissdelphicenter.ch/de/showcode.php?id=2335
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Drag & Drop vom VST zum Explorer

  Alt 11. Sep 2008, 12:07
Zitat von toms:
Erstelle IDropSource, IDataObject und rufe DoDragDrop() auf.
Der VST macht das ja auch. Die Frage ist, wie weit es implmentiert ist und was überhaupt im VST drin steht.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
itashadow

Registriert seit: 22. Apr 2008
Ort: Hattingen
86 Beiträge
 
#6

Re: Drag & Drop vom VST zum Explorer

  Alt 11. Sep 2008, 16:04
das hatte ich ja auch soweit schon alles gemacht nur leider führt das immernoch nicht zu dem gewünschten ergebnis...
drag drop zum explorer klappt nicht
und wenn ich vom rechten tree in den linken verschieben will gibt es beim 1. versuch eine zugriffsverletzung und ab dann klappt es ohne probleme.
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:57 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