![]() |
[behoben]Drag n Drop problem
Hallo alle,
Ja habe die sufu benutzt aber irgendwie nirgends nochmal das gleiche problem gefunden, Ich habe mir ein tool gebastelt um dateien auf verschiedene filehoster hochzuladen funktioniert alles problemlos mit queue etc.. nun wollte ich aber noch die möglichkeit hinzufügen dateien direkt per drag'n'drop in die queue zu adden habe mir alle möglichen beispiele und threads zu angeguckt sollte eigentlich funktionieren aber wenn ich ne datei auf die form ziehen will egal wohin bekomm ich nur das verbotsschild(not-possible) und weis nu nimmer weiter. Gruss Spawnche |
Re: Drag n Drop problem
Moin Spawnche,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Für mich sieht es im Moment so aus, als hättest Du im OnDragOver-Event Accept nicht auf True gesetzt. |
Re: Drag n Drop problem
Hi Seehase,
Danke für das willkommen, bin zwar scho etwas länger hier im forum unterwegs aber eher stiller leser als grosses posten nur diesmal komm ich nicht weiter. habe es mit DragAcceptFiles(handle, True); im onCreate event versucht aber leider erfolgslos. |
Re: Drag n Drop problem
|
Re: Drag n Drop problem
Hallo
Kleines exemplarisches Beispiel für Datei Drag&Drop. Also Im Explorer Dateien markieren und mit der Maus in unsere Applikation Ziehen ... Hier wird dann eine Listbox mit den Namen gefüllt....
Delphi-Quellcode:
type
TForm1 = class(TForm) ... Listbox1 ... ... private ... procedure WMDropFiles(VAR Msg:TWMDROPFILES); MESSAGE WM_DROPFILES; public ... end; Function fctWMDropFiles { >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> } (hDrop:tHandle;j:TStrings):integer; var i1:integer; i2:integer; z1:ARRAY[0..255] of Char; begin // local init Result := 0; i1 := 0; i2 := 0; FillChar(z1,SizeOf(z1),0); // local exit if not assigned(j) then exit; // local main // Ziel-Liste leeren j.Clear; // Anzahl Dateinamen i1 := DragQueryFile(hDrop,LongWord(-1), nil, 0); // Alle Dateinamen in Schleife holen for i2 := 0 to i1-1 do begin // Namen holen nach z1 FillChar(z1,SizeOf(z1),0); DragQueryFile(hDrop,i2,z1,SizeOf(z1)-1); // Name in Zielliste speichern if (StrPas(z1)<>'') then begin j.Add(StrPas(z1)); end; end; DragFinish(hDrop); fctWMDropFiles := i2+1; end; { <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< } procedure TForm1.FormCreate(Sender: TObject); begin ... { FileManager Dragging } DragAcceptFiles(Handle,True); ... end; procedure TForm1.FormDestroy(Sender: TObject); begin ... { FileManager Dragging } DragAcceptFiles(Handle,False); ... end; procedure TForm1.WMDropFiles(VAR Msg:TWMDROPFILES); begin fctWmDropFiles(Msg.Drop,ListBox1.Items); end; |
Re: Drag n Drop problem
naja peschai so ähnlich habe ich es ja auch
Delphi-Quellcode:
Aber soweit kommt es ja erst garnicht da wie gesagt ich durchgehend egal wo auf der Form den not-possible cursor angezeigt bekomme, formcreate wird noch ausgeführt aber mehr auch nit.
type
TForm1 = class(TForm) .... procedure WMDROPFILES(var Msg: TMessage); Message WM_DROPFILES; .... .... .... procedure TForm1.WMDROPFILES(var Msg: TMessage); var i, Counts, Size: Integer; PCharFileName: PChar; begin inherited; PCharFileName := nil; Counts := DragQueryFile(Msg.WParam, $FFFFFFFF, PCharFileName, 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); showmessage(PCharFileName); StrDispose(PCharFileName); end; DragFinish(Msg.WParam); end; procedure TForm1.FormCreate(Sender: TObject); begin DragAcceptFiles(handle, True); end; procedure TForm1.FormDestroy(Sender: TObject); begin DragAcceptFiles(handle, false); end; |
Re: Drag n Drop problem
Hallo Spawnche
Ist das "Inherited" in deiner WMDropFiles da richtig ? Das gehört da nicht hin. Versuchs mal ohne. |
Re: Drag n Drop problem
Selbst wenn es da nicht hingehört, hat dies ja nichts mit dem eigentlichen problem zutun da es ja erst garnicht soweit kommt da das komplett formular keinen dragndrop zu lässt wenn ich eine datei auf das form ziehe bekomm ich einfach das
![]() |
Re: Drag n Drop problem
Habe das Problem soeben gefunden, da ich paar style einstellungen für das Form habe, wird wohl das handle nach FormCreate nochmal freigegeben ich habe das DragAcceptFiles nun ins OnShow gesetzt nun funktioniert es.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 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