AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Windows Explorer DragNDrop auf TImage (DragAcceptFiles)
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Explorer DragNDrop auf TImage (DragAcceptFiles)

Ein Thema von DieDolly · begonnen am 10. Jan 2020 · letzter Beitrag vom 12. Jan 2020
 
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

Windows Explorer DragNDrop auf TImage (DragAcceptFiles)

  Alt 10. Jan 2020, 18:05
Ich benutze in einem Programm Drag n Drop schon seit sehr langer Zeit für Edits was immer funktioniert.
Jetzt kommt aber noch ein TImage hinzu und da komme ich nicht weiter.

Das hier rufe ich beim Programmstart auf. Alles was unnötig ist (alle anderen Komponenten die angesteurt werden) habe ich entfernt.
Delphi-Quellcode:
procedure TDragDropHandler.DragDropAcceptFilesGlobal(const aForm: TForm; const Accept: LongBool);
begin
 DragAcceptFiles(MainForm.Image1.Canvas.Handle, Accept);
end;
Ausgewertet wird hier
Delphi-Quellcode:
procedure TDragDropHandler.DragDropHandleProcess(Wnd: HWND; Path: string);
begin
 if Assigned(MainForm) and (Wnd = MainForm.Image1.Canvas.Handle) then
  MainForm.X := Y;
end;
Und hier wird DragDropHandleProcess angesteuert
Delphi-Quellcode:
procedure TComponents.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
const
 BufferLength = 255;
var
 QtyDroppedFiles, FileIndex: Integer;
 pDroppedFilename: array [0 .. BufferLength] of Char;
begin
 Handled := False;

 case Msg.message of
  WM_DROPFILES:
   begin
    QtyDroppedFiles := DragQueryFile(Msg.WParam, Cardinal(-1), nil, 0);

    try
     for FileIndex := 0 to QtyDroppedFiles - 1 do
      begin
       DragQueryFile(Msg.WParam, FileIndex, @pDroppedFilename, BufferLength);

       TDragDropHandler.DragDropHandleProcess(Msg.HWND, PChar(@pDroppedFilename));
       Break;
      end;
    finally
     DragFinish(Msg.WParam);
     Handled := True;
    end;
   end;
 end;
end;
TImage hat kein Handle und das vom Canvas scheint nicht zu funktionieren. Ich könnte das umschreiben, sodass ich kein Handle mehr übergebe sondern die Komponente selber, also TWinControl oder vielleicht TComponent als Parameter.

Jetzt aber die Frage. Was schreibe ich in DragDropAcceptFilesGlobal, damit Drag n Drop akzeptiert wird? Bei einem Edit zum Beispiel wäre das Edit1.Handle.

Als kleinen Pfusch könnte man ein StaticText über das Image legen, ohne Caption. Das hat ein Handle.

Geändert von DieDolly (10. Jan 2020 um 18:25 Uhr)
  Mit Zitat antworten Zitat
 


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:04 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 by Thomas Breitkreuz