Delphi-PRAXiS
Seite 2 von 2     12   

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 Drag&Drop einer Datei in TreeView (https://www.delphipraxis.net/130643-drag-drop-einer-datei-treeview.html)

himitsu 26. Jan 2010 12:02

Re: Drag&Drop einer Datei in TreeView
 
OnDragOver und Co. ist nur für Drag&Drop innerhalb einer Delphi-Anwendung zuständig.
Das Drag&Drop vom Explorer läuft über einen anderen Mechianismus.

Zitat:

Zitat von schwa226
So habe ich es nun hinbekommen:

hier kannst/solltest du das message WM_DROPFILES; in der Deklaration auch weglassen.

PS: Du kannst auch eine Eigenart der VCL ausnutzen, die TreeView wärend des Compilierens ersetzen und so dort deine Message doch noch "reinschmugggeln", ohne extern erstmal eine Ableitung der Klasse zu erstellen.
Delphi-Quellcode:
type
  TTreeView = class(ComCtrls.TTreeView)
    procedure WMDropFiles(var Msg: TMessage); message WM_DROPFILES;
  end;
  TMainForm = class(TForm)
    TreeView1 : TTreeView;
    .....
  end;



procedure TTreeView.WMDROPFILES(var Msg: TMessage);
var
  i, Counts, Size: Integer;
  PCharFileName: PChar;
begin
  Counts := DragQueryFile(Msg.WParam, $FFFFFFFF, nil, 255);
  for i := 0 to Counts - 1 do
  begin
    Size := DragQueryFile(Msg.WParam, i, nil, 0) + 1;
    PCharFileName := StrAlloc(Size);
    DragQueryFile(Msg.WParam, i, PCharFileName, Size);
    ...
    StrDispose(PCharFileName);
  end;
  DragFinish(Msg.WParam);
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(TreeView1.Handle, True);
end;

himitsu 26. Jan 2010 12:09

Re: Drag&Drop einer Datei in TreeView
 
[edit]
*kann gelöscht werden*

schwa226 26. Jan 2010 13:29

Re: Drag&Drop einer Datei in TreeView
 
Zitat:

Zitat von himitsu
OnDragOver und Co. ist nur für Drag&Drop innerhalb einer Delphi-Anwendung zuständig.
Das Drag&Drop vom Explorer läuft über einen anderen Mechianismus.

Heißt es geht nicht, oder was ist der Mechianismus?

Zitat:

Zitat von himitsu
hier kannst/solltest du das message WM_DROPFILES; in der Deklaration auch weglassen.

Hatte ich schon gelöscht... muss ich oben im Post noch ändern.

himitsu 26. Jan 2010 13:39

Re: Drag&Drop einer Datei in TreeView
 
Zitat:

Heißt es geht nicht
genau

WM_DROPFILES ist eine der Windows-Messages für das D&D seitens Windows,
welches über MSDN-Library durchsuchenDragQueryFile funktioniert und die "Dateiliste" in der Zwischenablage verwalter.

Wie dieses andere D&D-ähnliche Verhalten (OnDragOver und Co.) innerhalb von Delphi abläuft, das weiß ich nicht, es geht aber nicht über die "Schnittstellen" von Windows.
Soweit ich erkennen kann, werden dort delphieigene Nachrichten direkt zwischen VCL-Controls verschickt.

schwa226 27. Jan 2010 15:49

Re: Drag&Drop einer Datei in TreeView
 
Jetzt habe ich noch eine Frage dazu:

Wie sieht es eigentlich mit Drag&Drop von TreeView -> Explorer aus?
Da ändert sich bei mir der Cursor nicht...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:29 Uhr.
Seite 2 von 2     12   

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