Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - drag/drop mouseover
whitef - Sa 16.03.13 03:36
Titel: drag/drop mouseover
hi,
irgendwie klappt bei mir ein einfaches imagewechsel nicht, wenn ich ein drag ausführe.
testweise hier eine einfach rückmeldung mittels showmessage //welches nicht ausgelöst wird!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| uses ShellApi; ... private Procedure WMDROPFILES (Var aMsg: tMessage); message WM_DROPFILES; ... Procedure TForm1.WMDROPFILES (Var aMsg: tMessage); ... procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin showmessage('test'); end; |
Form1.DragKind := dkDrag;
Form1.DragMode := dmManual;
Irgendwie steh ich gerade auf dem Schlauch...
bummi - Sa 16.03.13 08:27
Nachdem Du verwendest unterstelle ich, dass es bei dem Post um Drag&Drop aus dem Explorer geht
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41:
| type TForm2 = class(TForm) Memo1: TMemo; procedure FormCreate(Sender: TObject); private procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES; public end;
var Form2: TForm2;
implementation uses ShellAPI; {$R *.dfm} procedure TForm2.FormCreate(Sender: TObject); begin DragAcceptFiles(Handle, True); end;
procedure TForm2.WMDropFiles(var Msg: TWMDropFiles); var CFileName: array [0 .. MAX_PATH] of Char; FileName:String; i,DroppedFileCount:Cardinal; begin try DroppedFileCount := DragQueryFile(Msg.Drop, $FFFFFFFF, nil, 0); for I := 0 to DroppedFileCount - 1 do begin SetLength(FileName, DragQueryFile(Msg.Drop, i, nil, 0)); DragQueryFile(Msg.Drop, i, PChar(FileName), Length(FileName) +1 ); Memo1.Lines.Add(FileName); end; finally Msg.Result := 0; DragFinish(Msg.Drop) end end; |
Andreas L. - Sa 16.03.13 08:43
Falls du Drag 'n' Drop während dem Ausführen aus der IDE testen möchtest (debugging): Bei mir funktionieren diverse DragDrop-Codes als auch Komponenten* nur wenn die IDE
nicht mit Adminrechten gestartet wurde. (RAD Studio 2009 Pro / Win Vista)
* = Die
Drag and Drop Component Suite [
http://melander.dk/delphi/dragdrop] von Andres Melander ist sehr zu empfehlen :wink:
whitef - Sa 16.03.13 19:47
danke für die rückmeldungen.
richtig, ich versuche aus dem explorer dateien auf meine form zu ziehen.
mir fehlt nur das OnDrag Ereignis was jedoch nicht ausgelöst wird.
Das Symbol beim drag wird angezeigt, jedoch kommt kein "showmessage".
Eine extra komponente wollte ich nun ungern hierfür einsetzen müssen, aber danke für die anregung!
bummi - So 17.03.13 10:28
Wenn Du mehr brauchst wirst Du in eigene Komponenten IDropTarget implementieren müssen, oder eine Komponente schreiben die es beinhaltet und der eine Komponenten zugewiesen wird. Spätesten hier machst es Sinn, wie von Andreas L. empfohlen, auf die erprobten Komponenten von Andres Melander zurückzugreifen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!