SetGadgetState-Probleme

Anfängerfragen zum Programmieren mit PureBasic.
stevie1401
Beiträge: 700
Registriert: 19.10.2014 15:51
Kontaktdaten:

SetGadgetState-Probleme

Beitrag 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?
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: SetGadgetState-Probleme

Beitrag 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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: SetGadgetState-Probleme

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
stevie1401
Beiträge: 700
Registriert: 19.10.2014 15:51
Kontaktdaten:

Re: SetGadgetState-Probleme

Beitrag 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:
Ich programmiere nur noch mit Linux.
Linux Mint 21.x
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: SetGadgetState-Probleme

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten