besten Dank für deinen Vorschlag! Da meine spätere Anwendung Menue, Button und Drag&Drop umfasst, versuche ich die Sache in diesem Rahmen zu lösen.
Habe mir ein Beispiel für die Bilder gemacht, wobei ich einmal die Bilder über das Menü lade und des nächsten wo ich Bilder über Drag&Drop einfüge. Anschliesend lege ich das Bild in der Temp ab. Mittels der MemLoad Taste füge ich das Bild wieder ein um es anschliessen mit der SaveDatabase Taste in der Datenbank zu speichern.
Das laden der Bilder funktioniert, das Zwischenspeichern und das Lesen. Aber wenn ich ein Bild per Drop auf das ImageGadget ziehe stürzt die Sache[Das Drag&Drop Ereignis war kein #PB-Drop_Image_Ereigniss], obwohl die selbige in anderen Anwendungen funktioniert.
Code: Alles auswählen
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Image Plugins
UsePNGImageDecoder()
UseJPEGImageDecoder()
Enumeration ; Text
#ToolBar
#Menu0
#Menu1
#Text0
#Text1
#Text2
#Button1
#Button2
#Button3
#Button4
#MeinBild1
#MeinBild2
#MeinBild3
#MeinBild4
#MeinImage
#LoadBild
#TargetImage
#Readfile
#myDropImage
#myImage
EndEnumeration
;- Image Enumeration
;
Enumeration ; Images
;
EndEnumeration
;- Image Globals
Global Image0
Global Image1
Global Image2
Global Image3
Global Image4
Global MyImage
;- Catch Images
;- Images
DataSection
EndDataSection
OpenWindow(#Window_0, 0, 0, 840, 600, "Velindos - Image Converter",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
;Das ist ein Menue
CreateToolBar(#ToolBar, WindowID(0))
ToolBarStandardButton(#Menu0, #PB_ToolBarIcon_Open)
ToolBarStandardButton(#Menu1, #PB_ToolBarIcon_Save)
ImageGadget(#MeinBild1, 30, 30, 220, 210, Image0,#PB_Image_Border)
ImageGadget(#MeinBild2, 495, 30, 220, 210, Image1,#PB_Image_Border)
ImageGadget(#MeinBild3, 30, 295, 250, 220, Image2,#PB_Image_Border)
ImageGadget(#MeinBild4, 495, 295, 250, 220, Image2,#PB_Image_Border)
ButtonGadget(#Button1, 280, 20, 155, 40, "MemSaveFile")
ButtonGadget(#Button2, 280, 295, 155, 40, "MemSaveDrop")
ButtonGadget(#Button3, 330, 455, 155, 40, "MemLoad")
ButtonGadget(#Button4, 330, 497, 155, 40, "SaveDatabase")
EnableGadgetDrop(#MeinBild3, #PB_Drop_Files, #PB_Drag_Copy)
Define EventID
Define GadgetID
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_Menu ; ToolBar are acting as menu
EventID = WaitWindowEvent()
Select EventMenu()
Case #Menu0 : Debug "Menu1"
Filename$ = OpenFileRequester("Choose a picture", "", "All Images Formats|*.bmp;*.jpg;*.png;*.tif;*.tga", 0)
LoadImage(#LoadBild, Filename$)
SetGadgetState(#MeinBild1, ImageID(#LoadBild)) ; change the picture in the gadget
;Case 1 :Debug "Menu2"
EndSelect
ElseIf EventID = #PB_Event_Gadget
GadgetID = EventGadget()
Select GadgetID
Case #Button1 : Debug "SaveFile"
ImageGadget(#MeinBild2, 495, 30, 220, 210, ImageID(#LoadBild))
SaveImage(#LoadBild, GetTemporaryDirectory()+"redbox.bmp")
;Image1=ImageID(#LoadBild)
;Image4=ImageID(#LoadBild)
;ImageGadget(#MeinBild4, 495, 295, 250, 220, Image4,#PB_Image_Border)
Case #Button2 :Debug "SaveDrop"
ImageGadget(#MeinBild2, 495, 30, 220, 210, ImageID(#myDropImage))
SaveImage(#myDropImage, GetTemporaryDirectory()+"redbox.bmp")
Case #Button3 :Debug "Load"
If ReadFile(0, GetTemporaryDirectory()+"redbox.bmp")
length0 = Lof(0) : *filebuffer0 = AllocateMemory(length0) : ReadData(0,*filebuffer0,length0) : CloseFile(0)
EndIf
;*filebuffer0 ist jetzt Bild
MyImage = CatchImage(0,*filebuffer0)
ImageGadget(#MeinBild4, 495, 295, 250, 220, MyImage,#PB_Image_Border)
Case #Button4 :Debug "SaveDatabase"
;Beispiel Datenbank speichern
;OpenDatabase(0,DatabaseFile$,"","")
;DatabaseUpdate(0, "CREATE TABLE PHOTOS (PIC_1 BLOB, SIZE_1 integer, DESC_1 varchar, PIC_2 BLOB, SIZE_2 integer, DESC_2 varchar)")
;SetDatabaseBlob(0, 0, *filebuffer0, Length0)
;desc_1$ = "Red Box"
;sql$ = "INSERT INTO PHOTOS (PIC_1, SIZE_1, DESC_1, PIC_2, SIZE_2, DESC_2 ) values ( ?, " + "'" + Str(Length0) + "', '" + desc_1$+"', ?, " + "'" + Str(Length1) +"', '" + desc_2$ + "');"
;DatabaseUpdate(0, sql$)
EndSelect
ElseIf EventID = #PB_Event_GadgetDrop
Select EventGadget()
Case #MeinBild3
If EventDropImage(#myDropImage)
SetGadgetState(#MeinBild3, ImageID(#myDropImage))
ImageGadget(#MeinBild3, 30, 295, 250, 220, ImageID(#myDropImage),#PB_Image_Border)
EndIf
EndSelect
EndIf
Until EventID = #PB_Event_CloseWindow ; If the user has pressed on the close button
End ; All is automatically freed by PureBasic
;Wenn Du ein Bild (=Binärdatei) in eine Textdatei speichern willst, musst Du die Binärdaten
;vorher in Base64 wandeln (Stich-/Suchwörter für Dich Base64Decoder() / Base64Encoder()).
Gruss ... Velindos