HandleDragDrop im Hybrid-Mode

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Bitmusterschuster
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 42
Registriert: Do, 12. Feb 2009 11:30
Danksagung erhalten: 2 Mal

HandleDragDrop im Hybrid-Mode

Beitrag von Bitmusterschuster »

Hallo Zusammen,
ich habe ein Problem mit dem HandleEvent (DragDrop) bei einem XBP-Fenster im Hybrid-Mode.
In der APPSYS habe ich zwei Fenster definiert oCrtMain und oCrtCover.
Im oCrtCover Fenster werden die Produktbilkder angezeigt, wenn ich im Artikelbrowser in den Daten blättere,
das funktioniert einwandfrei.

Bei der oCrtCover Definition habe ich :DropZone := .t. gesetzt und einen Slot HandleDragDrop() definiert.

Code: Alles auswählen



***********************
FUNCTION HandleDragDrop( aState,oData )
***********************
local nAltSel := select()
LOCAL aRet := oData:GetData( XBPCLPBRD_FILELIST )
LOCAL cShortFilename, cLongFilename, cData
LOCAL cProdId  := artikel->prodid

SetAppWindow(oCrtCover)
clear
Qout("hallo")
inkey(0)


IF aRet <> NIL .AND. len(aRet) >= 1
  DO CASE
    CASE upper(afteratnum(".",aRet[1])) <> "JPG"
      Fehler("Sie k”nnen nur Bilddateien mit der Endung 'JPG' zuweisen.",5)
    CASE empty(cProdId)
      Fehler("Die aktuelle Artikel-ID ist unzul„ssig !",5)
    OTHERWISE
      cLongFilename := aRet[1]
      cShortFilename := afteratnum("\",cLongFilename)
      cData := FileStr(cLongFilename)
      IF StrFile(cData,cpUncCover+alltrim(cProdId)+".JPG",.t.,0) > 0
        sleep(10)
        select Artikel
        IF r_lo()
          repl ProdImPath with '/storage/emulated/0/pictures/'+alltrim(cProdId)+".jpg"
          unlock
        ENDIF
      ELSE
        Fehler("Bild kann nicht kopiert werden. (Rechte prfen) !",5)
      ENDIF
  ENDCASE
ENDIF
sele (nAltSel)
RETURN(XBP_DROPMODE_NONE) 

Im Programm möchte ich dann eine JPG-Datei in die Dropzone des oCrtCover Fensters ziehen. Es passiert aber nichts. der Mousecursor zeigt das Verboten-Zeichen' an und nicht das + Zeichen. SetMouse(.t.) habe ich gesetzt.
Es wird auch kein Code ausgeführt. (ich hatte dort die Daten mit Qout() anzeigen wollen, um zu sehen, was ankommt)

Bin ratlos ...

Danke für Hinweise

Gruß Rudi
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: HandleDragDrop im Hybrid-Mode

Beitrag von AUGE_OHR »

hi,
Bitmusterschuster hat geschrieben: Sa, 29. Feb 2020 8:50 Im oCrtCover Fenster werden die Produktbilkder angezeigt, wenn ich im Artikelbrowser in den Daten blättere,
das funktioniert einwandfrei.
"woher" kommen die Bilder :?:
"wie" hast du dargestellt :?:
Bitmusterschuster hat geschrieben: Im Programm möchte ich dann eine JPG-Datei in die Dropzone des oCrtCover Fensters ziehen. Es passiert aber nichts. der Mousecursor zeigt das Verboten-Zeichen' an und nicht das + Zeichen. SetMouse(.t.) habe ich gesetzt.
"wo" kommt die JPG-Datei her :?:

wenn keine "Filelist" ankommt stellt sich die Frage wer ist der "Absender" :idea:

man kann z.b. kein Attachment aus Outlook in eine Xbase++ App per DragDrop ziehen sondern nur aus dem Explorer (incl. Desktop)
auch aus einem "anderen" Xbase++ Fenster ist eine "senden" nicht vorgesehen sondern geht nur mit Tricks.
gruss by OHR
Jimmy
Bitmusterschuster
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 42
Registriert: Do, 12. Feb 2009 11:30
Danksagung erhalten: 2 Mal

Re: HandleDragDrop im Hybrid-Mode

Beitrag von Bitmusterschuster »

Hi,

ich ziehe mit Drag aus einem Windows Explorer Fenster eine JPG Datei in das oCrtCover Fenster. Die Area ist mit DragDrop auf .t. gesetzt worden.
Dann müsste doch in aRet := oData:GetData( XBPCLPBRD_FILELIST ) die Fileliste stehen, die ich dann abarbeiten kann.
Bei allen anderen Windows Fenstern erscheint das + Symbol, dass ich die Datei dort fallen lassen kann, nur bei mir ist das Verboten-Zeichen (durchgetrichener Kreis)

Also Absender wäre Windows Dateiexplorer und Empfänger mein oCrt-Fenster.

Müsste doch gehen oder nicht ?

Danke fürs Mitdenken.

Gruß Rudi
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: HandleDragDrop im Hybrid-Mode

Beitrag von AUGE_OHR »

Bitmusterschuster hat geschrieben: Sa, 29. Feb 2020 12:01 ich ziehe mit Drag aus einem Windows Explorer Fenster eine JPG Datei in das oCrtCover Fenster. Die Area ist mit DragDrop auf .t. gesetzt worden.
hast du die 3 Codeblöcke vom CRT auch "gefüllt" :?:

das setzen von DropZone "feuert" nur die Events bei DragDrop.
die Codeblöcke sind für die jeweilige Aktion zum "füllen"

Code: Alles auswählen

   oCrt:dragEnter := {| aState, oDragData, self | ... }
   oCrt:dragDrop := {| aState, oDragData, self | ... } 
   oCrt:dragLeave := {| uNIL1, uNIL1, self | ... } 
wie du ein Bild in einem CRT anzeigst ist mir allerdings immer noch schleierhaft :idea:
gruss by OHR
Jimmy
Bitmusterschuster
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 42
Registriert: Do, 12. Feb 2009 11:30
Danksagung erhalten: 2 Mal

Re: HandleDragDrop im Hybrid-Mode

Beitrag von Bitmusterschuster »

Hallo Jimmy,

es funktioniert jetzt bei mir.
Ich hatte ja den Codeblock korrekt hinterlegt, aber wahrscheinlich SetMouse(.t.) nicht korrekt gesetzt.
Gestern ging es also auf meinem Entwicklungsrechner, aber heute plötzlich nicht mehr.

Nach 2 stündigem Test hatte ich die Nase voll und habe im Netz meinen Notebook gestartet und die Applikation von dort gestartet, dort läuft es.
Das heißt, wenn ich dort mit der Maus über das oCrtCover-Fenster gehe, kann ich eine JPG-Datei dort fallen lassen, es wird auch das +-Symbol angezeigt.
Auch der Codeblock wird korrekt ausgeführt. (kopiert die Datei vom Quellverzeichnis automatisch in meiner Subdir 'Cover' und benennt die Datei in <EANCode>.jpg um. dann kann mein Artikelbrowser diese Datei über den EAN-Code finden und im Coverfenster anzeigen)

Bei meinem Entwicklungsrechner lief es gestern noch, und heute nicht mehr.

Was könnte diesen Unterschied machen. Ich ziehe einfach nur eine JPG-Datei aus einem Verzeichnis in die Area meines oCrtCover.

Halte Dich auf dem Laufenden, wenn ich ein Ergebnis habe.

Gruß Rudi
Bitmusterschuster
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 42
Registriert: Do, 12. Feb 2009 11:30
Danksagung erhalten: 2 Mal

Re: HandleDragDrop im Hybrid-Mode

Beitrag von Bitmusterschuster »

Hallo Jimmy,

ich habe jetzt das Problem erkannt.
Wenn ich die Applikation aus einem CMD-Fenster starte funktioniert der DragDrop Mechanismus nicht.

Starte ich die Version aber aus dem Windows-Explorer heraus funktioniert es.

Habe schon Alaska geschrieben, und um Hilfe gebeten.
Ich werde noch mal testen ob es etwas mit der Legacy-Konsole zu tun hat, die habe ich nämlich aktiviert.

Gruß Rudi
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: HandleDragDrop im Hybrid-Mode

Beitrag von AUGE_OHR »

hi,
Bitmusterschuster hat geschrieben: Mo, 02. Mär 2020 12:35 Starte ich die Version aber aus dem Windows-Explorer heraus funktioniert es.
interessant.

versuch mal
1.) App "Senden an Desktop" und dann mit eine DblClick auf das Icon
2-) *.BAT mit

Code: Alles auswählen

START MY.EXE /I %1 %2 %3
ob das einen Unterschied gibt, Danke
gruss by OHR
Jimmy
Bitmusterschuster
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 42
Registriert: Do, 12. Feb 2009 11:30
Danksagung erhalten: 2 Mal

Re: HandleDragDrop im Hybrid-Mode

Beitrag von Bitmusterschuster »

Hi,

es liegt definitiv an der aktivierten Legacy-Konsole.
Ich habe die jetzt mal abgeschaltet und neu gestartet, dann geht es einwandfrei auch aus dem Konsolenfenster.
Mal sehen, was Alaska dazu sagt.
Halte Euch auf dem Laufenden …

Gruß Rudi
Antworten