Ich habe mein Programm auf GUI umgestellt und 2 CRT-Fenster in der APPSYS erstellt.
Das Main CRT (oCrtMain) erledigt die 'normale' Arbeit, während ich im 2.CRT (oCrtCover) Fenster die Produktbilder (JPG-Dateien) anzeigen lasse.
Immer, wenn der Satzpointer in der Artikeldatei geändert wird, lade ich das Produktbild in ein XbPBitmap-Objekt und platziere es im Presentation-Space des CRT.
Klappt wunderbar.
Nun wollte ich es ermöglich, das der User mit Drag&Drop eine JPG-Datei im Bereich des Produktbildes fallen lassen kann und damit dem Produkt ein neues Produktbild zuweisen.
Ich habe das mit der DropZone auch hinbekommen, jedoch verliert dann mein Main-Crt Fenster regelmäßig den Fokus. Der bleibt nämlich im Windows-Fenster stehen, aus dem ich die JPG-Datei kopiert habe.
Meine beiden CRT-Fenster sind nach dem Drop nicht aktiv.
Im DragDrop Codeblock habe ich aber versucht den Fokus auf mein Main CRT-Fenster zu setzen, leider ohne Erfolg.
Wo liegt das Problem ?
Code: Alles auswählen
FUNCTION HandleDragDrop( aState,oData )
LOCAL aRet := oData:GetData( XBPCLPBRD_FILELIST )
Local cShortFilename, cLongFilename, cData
Local cAnr := alltrim(oCrtCover:title)
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 val(cAnr) <= 0
Fehler("Die Artikelnummer ist unzul„ssig !",5)
otherwise
SetAppFocus( oCrtMain )
oCrtMain:Show()
oCrtMain:SetFrameState(XBPDLG_FRAMESTAT_NORMALIZED)
cLongFilename := aRet[1]
cShortFilename := afteratnum("\",cLongFilename)
if jn("Datei: "+cShortFilename+" als neues Cover zuweisen",12)
cData := FileStr(cLongFilename)
StrFile(cData,cpUncCover+alltrim(cAnr)+".jpg")
fehler("Die Datei wurde erfolgreich kopiert !",2)
endif
endcase
endif
//SetAppFocus(oCrtMain)
RETURN(XBP_DROPMODE_COPY)
Vielen Dank für Eure Mühe ....
Rudi