Seite 3 von 3

Re: Image´s innerhalb des Programms

Verfasst: 23.11.2010 18:41
von Velindos
Hallo ts-soft,
ts-soft hat geschrieben:2. Den SetParent Quatsch entfernen. Nimmer z.B. mehrere Container übereinander, die Du bedarf
anzeigst (HideGadget(#Container1, #False) und die anderen versteckst.
Danke, für deinen Tip, gibt es dafür ein Beispiel?

Gruss ............ Velindos

Re: Image´s innerhalb des Programms

Verfasst: 23.11.2010 19:09
von ts-soft
Beispiel, ohne Proceduren (mit wäre schöner, aber so verstehste es vielleicht eher)

Code: Alles auswählen

EnableExplicit

Enumeration ; Fenster
  #frmMain
EndEnumeration

Enumeration ; Gadgets
  #Container1
  #Container2
  #Container3
  #Button1
  #Button2
  #Button3
  #ButtonContainer1
  #ButtonContainer2
  #ButtonContainer3
EndEnumeration

OpenWindow(#frmMain, #PB_Ignore, #PB_Ignore, 640, 450, "Containerbeispiel", #PB_Window_SystemMenu | #PB_Window_Invisible)

ContainerGadget(#Container1, 0, 0, 640, 380)
  ButtonGadget(#Button1, 10, 10, 80, 30, "Button1")
CloseGadgetList()
ContainerGadget(#Container2, 0, 0, 640, 380)
  ButtonGadget(#Button2, 20, 20, 80, 30, "Button2")
CloseGadgetList()
ContainerGadget(#Container3, 0, 0, 640, 380)
  ButtonGadget(#Button3, 30, 30, 80, 30, "Button3")
CloseGadgetList()

ButtonGadget(#ButtonContainer1, 20, 400, 100, 30, "Zeig Container 1")
ButtonGadget(#ButtonContainer2, 140, 400, 100, 30, "Zeig Container 2")
ButtonGadget(#ButtonContainer3, 260, 400, 100, 30, "Zeig Container 3")

HideGadget(#Container2, #True)
HideGadget(#Container3, #True)

HideWindow(#frmMain, #False)

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Button1
          Debug "Button1 in Container 1"
        Case #Button2
          Debug "Button2 in Container 2"
        Case #Button3
          Debug "Button3 in Container 3"          
        
        Case #ButtonContainer1
          HideGadget(#Container1, #False)
          HideGadget(#Container2, #True) 
          HideGadget(#Container3, #True) 
        Case #ButtonContainer2
          HideGadget(#Container1, #True)
          HideGadget(#Container2, #False) 
          HideGadget(#Container3, #True)           
        Case #ButtonContainer3
          HideGadget(#Container1, #True)
          HideGadget(#Container2, #True) 
          HideGadget(#Container3, #False)           
      EndSelect
  EndSelect
ForEver
Gruß
Thomas

Re: Image´s innerhalb des Programms

Verfasst: 23.11.2010 20:29
von ts-soft
Hier nochmal mit Procedure:

Code: Alles auswählen

EnableExplicit

Enumeration ; Fenster
  #frmMain
EndEnumeration

Enumeration ; Gadgets
  #Container1
  #Container2
  #Container3
  #Button1
  #Button2
  #Button3
  #ButtonContainer1
  #ButtonContainer2
  #ButtonContainer3
EndEnumeration

Procedure ShowContainer(index = #Container1)
 Protected i
 
 For i =  #Container1 To #Container3
  HideGadget(i, #True)
 Next
 HideGadget(index, #False)
EndProcedure

OpenWindow(#frmMain, #PB_Ignore, #PB_Ignore, 640, 450, "Containerbeispiel", #PB_Window_SystemMenu | #PB_Window_Invisible)

ContainerGadget(#Container1, 0, 0, 640, 380)
  ButtonGadget(#Button1, 10, 10, 80, 30, "Button1")
CloseGadgetList()
ContainerGadget(#Container2, 0, 0, 640, 380)
  ButtonGadget(#Button2, 20, 20, 80, 30, "Button2")
CloseGadgetList()
ContainerGadget(#Container3, 0, 0, 640, 380)
  ButtonGadget(#Button3, 30, 30, 80, 30, "Button3")
CloseGadgetList()

ButtonGadget(#ButtonContainer1, 20, 400, 100, 30, "Zeig Container 1")
ButtonGadget(#ButtonContainer2, 140, 400, 100, 30, "Zeig Container 2")
ButtonGadget(#ButtonContainer3, 260, 400, 100, 30, "Zeig Container 3")

ShowContainer()

HideWindow(#frmMain, #False)

Define Gadget
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      Gadget = EventGadget()
      Select Gadget
        Case #Button1
          Debug "Button1 in Container 1"
        Case #Button2
          Debug "Button2 in Container 2"
        Case #Button3
          Debug "Button3 in Container 3"         
       
        Case #ButtonContainer1, #ButtonContainer2, #ButtonContainer3
          ShowContainer(Gadget - #ButtonContainer1)
      EndSelect
  EndSelect
ForEver 

Re: Image´s innerhalb des Programms

Verfasst: 25.11.2010 13:14
von Velindos
Hallo dysti,

die Sache mit dem Image über PureForm funktioniert Super. Da ich eine Softwareverwaltung als Beispiel gewählt habe, wollte ich die einzelnen String$ mit einen Bild aus dem Internet versehen. Das ich ein Bild auf das ImageGagdet ziehe läuft. Aber dann kann ich das Bild nur in einer Datei speichern, aber nicht mir mehere Bilder zu meiner Software(Software$(a)) zuordnen und anschliessend als eine Datei speichern.
Wäre so als wollte ich einen pinguin pro Zeile zuordnen und dann alle Zeilen mit den zugeordneten Pinguinen in einer Textdatei mit abspeichern.

Gruss … Velindos

Re: Image´s innerhalb des Programms

Verfasst: 08.12.2010 19:07
von dysti
Willst du die Bilder einem Array zuordnen?
Software(Software$(a))
und dann das Array in einer Datei speichern.
Ich verstehe den ganzen Vorgang nicht.
Wandelst du die Bilder erst in Pureform um und ordnest die dem Array zu?
Oder suchst du die automatische Umwandlung wie in Pureform?

Re: Image´s innerhalb des Programms

Verfasst: 09.12.2010 16:56
von Velindos
Hallo,
habe die Sache bis Dato wie folgt gelöst! Über das ImageGadget hole ich mir ein Bild;

Code: Alles auswählen

      Case #I_Bild
        If EventDropImage(#myDropImage)
          ResizeImage (#myDropImage,210,215)
          SetGadgetState(#I_Bild, ImageID(#myDropImage))
          If CreateImage(SpeicherBild, ImageWidth(#myDropImage), ImageHeight(#myDropImage))
            If StartDrawing(ImageOutput(SpeicherBild))
              DrawImage(ImageID(#myDropImage),0,0)
              StopDrawing()
              SaveImage(SpeicherBild, #SavePath+"redrawn clipboard Image.bmp")                  
speicher es in der Festplatte. Anschliessend hole ich mir das gespeicherte Bild wie folgt mit folgender Procedure wieder für das speichern in der Datenbank:

Code: Alles auswählen

Procedure DatensatzHinzu()
    DB=1
  Bildspalte=4
    If CreateFile(0, DatabaseFile$)
    CloseFile(0)
  EndIf
    OpenDatabase(DB, DatabaseFile$, "", "", #PB_Database_SQLite)
  DatabaseUpdate(DB, "Create Table Velindos (ID INTEGER,Stichwort TEXT,Notiz TEXT,Pfad TEXT, myBild BLOB)")
    ID$=GetGadgetText(#S_Data) 
  STICHWORT$=GetGadgetText(#S_Stichwort) 
  NOTIZ$=GetGadgetText(#S_Notiz) 
  PFAD$=GetGadgetText(#S_Pfad) 
    ReadFile(0,  #SavePath+"redrawn clipboard Image.bmp")
  Buffersize = Lof(0)
  Buffer = AllocateMemory(Buffersize)
  ReadData(0, Buffer, Buffersize)
  CloseFile(0)
    SetDatabaseBlob(DB, 0, Buffer, Buffersize)
  DatabaseUpdate(DB, "Insert Into Velindos (ID, Stichwort, Notiz,Pfad,myBild) Values ('"+ID$+"','"+STICHWORT$+"','"+NOTIZ$+"','"+PFAD$+"',?);")
  DatabaseQuery(DB, "Select * From Velindos")
  NextDatabaseRow(DB)
    ID$= GetDatabaseString(DB,0)
  SetGadgetText(#S_Data,ID$)
  STICHWORT$= GetDatabaseString(DB,1)
  SetGadgetText(#S_Stichwort,STICHWORT$)
  NOTIZ$= GetDatabaseString(DB,2)
  SetGadgetText(#S_Notiz,NOTIZ$)
  PFAD$= GetDatabaseString(DB,3)
  SetGadgetText(#S_Pfad,PFAD$)
    ; hier auslesen:
  If DatabaseColumnType(DB, Bildspalte) = #PB_Database_Blob
    picsize = DatabaseColumnSize(DB,Bildspalte)
    If picsize
      *blobreadpuffer = AllocateMemory(picsize)
      If *blobreadpuffer
        If GetDatabaseBlob(DB, Bildspalte, *blobreadpuffer, picsize)
          myImage = CatchImage(0, *blobreadpuffer)
          ;ImageGadget(#I_Bild, 240, 175, 210, 215, myImage, #PB_Image_Border)
          SetGadgetState(#I_Bild,myImage)
        Else
          Debug "GetDatabaseBlob ist fehlgeschlagen"
        EndIf
        FreeMemory(*blobreadpuffer)
      Else
        Debug "Nicht genügend Speicher vorhanden"
      EndIf
    Else
      Debug "picsize is null"
    EndIf
  Elsenif
    Debug "DatabaseColumnType(0, 1) ist kein Blob"
  EndIf
    CloseDatabase (DB)
  EndProcedure
Resume: Es ist mir nicht gelungen das Bild elegant an die Datenbank zu übergeben. Hat richtig Schweiss gekostet diese Lösung und habe anscheinend einige Leute verkrault, bin aber Anfänger mit Purebasic und muss mich auch erst hineinleben.

Gruss ... Velindos
PS: Bin für jeden Verbesserungsvorschlag zu haben!

Re: Image´s innerhalb des Programms

Verfasst: 11.12.2010 14:31
von dysti
Vielleicht hilft dir dieser Link weiter:
http://purebasic-lounge.com/viewtopic.php?p=57615