Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Vorherige Nachricht  |  Nächste Nachricht 
 Kein Drag, aber Drop (von Files) mit XProfan
Autor: Jens-Arne Reumschüssel (---.95.112.pool.telefonica.de)
Datum:   23.12.21 22:42

Moin zusammen,

hier wird ja in letzter Zeit immer wieder verlangt, dass XProfan Drag&Drop lernen solle (@RGH). Das sehe ich auch so. Aber zumindest, was das angeht, was "peter" (nicht Peter Specht) wollte, ist es in XProfan schon jetzt mit ganz wenigen Zeilen getan, sofern man kein XProfan-Programm, sondern z.B. den Windows-Explorer als Ursprung der Drag&Drop-Aktion mit einer Textdatei nimmt, die dann in einem Multiedit angezeigt werden soll. Es werden auch nur 2 API-Funktionen dazu gebraucht. Babyeinfach, hier ein vollständig funktionsfähiges Beispiel. Bitte benutzt eine .txt-Datei als Drag-Ursprung, hier sind keinerlei Fehler abgefangen, um den Code möglichst kurz zu halten:

 declare hE%,hBende%,Ende%,Dateiname$,FileBuffer#
 
 SUBCLASSPROC
   declare hDroppedFiles%,BufSize%,Buffer#
   if &sWnd=hE%
     if %sMessage=$0233 '~WM_DROPFILES
       hDroppedFiles%=&swParam
       BufSize%=External("shell32.dll","DragQueryFileA",hDroppedFiles%,0,0,0)+1 'Puffergröße für Dateiname ermitteln
       dim Buffer#,BufSize%
       External("shell32.dll","DragQueryFileA",hDroppedFiles%,0,Buffer#,BufSize%) 'Dateiname der ersten gedroppten Datei holen
       Dateiname$=string$(Buffer#,0)
       dispose Buffer#
     endif
   endif
 ENDPROC
 
 cls
 hE%=create("MULTIEDIT",%HWnd,"Hier mit dem Windows-Explorer eine Textdatei droppen, deren Inhalt wird dann angezeigt.",0,0,width(%HWnd),-(height(%HWnd)-40))
 hBende%=create("BUTTON",%Hwnd,"Ende",(width(%HWnd)-50)\2,height(%HWnd)-30,100,20)
 External("shell32.dll","DragAcceptFiles",hE%,1) 'Windows anweisen, für hE% (das Multiedit) File-Dropping zu akzeptieren
 subclass hE%,1
 Dateiname$=""
 Ende%=0
 whilenot Ende%
   waitinput 100
   if clicked(hBende%)
     Ende%=1
   elseif Dateiname$<>""
     dim FileBuffer#,filesize(Dateiname$)
     blockread(Dateiname$,FileBuffer#)
     settext hE%,string$(FileBuffer#,0)
     dispose FileBuffer#
     Dateiname$=""
   endif
 endwhile
 subclass hE%,0
 end
 


Mich würde mal interessieren, wie lang der Code würde, wenn man den in den ganzen anderen "tollen" Sprachen schreiben würde, die hier immer wieder genannt werden. Klar, ich rede ab und an von PureBasic, aber nur als Ergänzung zu XProfan. Vollständig abwandern würde ich nie, dazu ist XProfan viel zu einfach und schön. Das da oben habe ich in 10 Minuten zusammengehauen.

Man kann auch ein XProfan-Programm als Ursprung des Drags benutzen, aber das ist erheblich aufwändiger als das Empfangen von Dateien aus einem externen Programm. Dann muss man alles von Hand schreiben, z.B. die Veränderung des Cursors, das Füllen einer Struktur, die die Dateinamen beinhaltet etc. Es geht, aber das wäre, wie gesagt, viel länger als das oben aufgeschriebene Beispiel.

Frohe Weihnachten, Jens-Arne



Nachricht bearbeitet (24.12.21 00:48)

 Beitrag beantworten  |  Foren-Liste  |  Alle Antworten   Neuerer Beitrag  |  Älteres Thema 

 Beiträge Autor  Datum
 Kein Drag, aber Drop (von Files) mit XProfan  Neu
Jens-Arne Reumschüssel 23.12.21 22:42 
 Re: Kein Drag, aber Drop (von Files) mit XProfan  Neu
Heinz Brill 24.12.21 19:11 
 Re: Kein Drag, aber Drop (von Files) mit XProfan  Neu
Jens-Arne Reumschüssel 29.12.21 17:58 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org