Seite 1 von 1

SetGadgetState-Probleme

Verfasst: 15.11.2014 21:11
von stevie1401
Ich möchte einem vorhandenen Imagegadget ein neues geladenes Image zuweisen.
Ich begreife leider das mit den Gadged IDs und Nr und Image Id und Nr nicht.
Ich bekomme es jedenfalls nicht hin.
Die Meldung lautet immer:Das angegebene #Image ist nicht initialisiert.
Das mag ja sein, geladen ist es zumindest.
Kann mir jemand ein einfaches und funktionierendes Beispiel geben?

Re: SetGadgetState-Probleme

Verfasst: 15.11.2014 21:15
von RSBasic

Code: Alles auswählen

EnableExplicit

CreateImage(1, 100, 100, 24, RGB(128, 255, 128))
CreateImage(2, 100, 100, 24, RGB(64, 64, 255))

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ImageGadget(1, 10, 10, 0, 0, ImageID(1), 0)
  ButtonGadget(2, 10, 120, 100, 20, "Ändern", 0)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 2
            SetGadgetState(1, ImageID(2))
        EndSelect
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Re: SetGadgetState-Probleme

Verfasst: 15.11.2014 21:32
von ts-soft
Innerhalb der Image lib arbeitet man meist mit dem Image.
Bei Verwendung mit anderer lib, mit ImageID!
Das hat den Vorteil, das auch, andere per API geladene Bilder,
dargestellt werden können.
Solange man bei Images auf #PB_Any verzichten kann, sollte man
dies auch tun, solange man die Zusammenhänge nicht so kennt.

Ich hoffe etwas Licht ins dunkle gebracht zu haben, aber kann natürlich
sein, das es jetzt noch dunkler geworden ist. Dann hilft probieren, soviele
Möglichkeiten sind es ja nicht :mrgreen:

Gruß
Thomas

Re: SetGadgetState-Probleme

Verfasst: 15.11.2014 21:38
von stevie1401
Genau da ist mein Problem:
Ich mache das anders:

Bild(i)=loadimage(#pb_any,.....)

Die Imagegadgets habe ich so gemacht:

SpielkarteImgID(i)=imagegadget(#pb_any,10,20,30,40,imageid(bild(i)))

Nun soll das Imagegadget Img(3) das geladene Bild bild(12) bekommen.

Habs hinbekommen:
SetGadgetState(SpielkarteImgID(3),ImageID(bild(8)))

Sehr verwirrend.
Bei SetGadgetState muss ich NICHT, wie angenommen, die GadgetID angeben, sondern die NUMMER.
Dafür muss ich aber die ImageID des neuen Bildes angeben und NICHT die Nummer.


Vielen Dank für eure Hilfe (und eure Geduld mit mir :oops: ) :allright:

Re: SetGadgetState-Probleme

Verfasst: 15.11.2014 21:52
von ts-soft
SetGadgetState erwartet natürlich die Nummer des Gadgets. Gehört ja zur GadgetLib.
Bei dem Image wird aber die ImageID erwartet, weil gehört nicht zur GadgetLib und es sollte
auch ein Bild, das auf andere Weise geladen wurde, zum Beispiel mit API, darstellen können.

Naja, wirste wohl noch öfter durcheinander kommen, aber im Laufe der Zeit geht das über wie
...

Gruß
Thomas