Checkboxstatus

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Checkboxstatus

Beitrag von DrNo »

Hallo,
Ich möchte bei Knopfdruck den Status (0/1) eines CheckBoxGadgets abrufen. Das sieht bei mir so aus:

Code: Alles auswählen

If Event = #PB_Event_Gadget
       If EventGadget() = 5
         DisableGadget(2, 1)
         DisableGadget(3, 1)
         DisableGadget(4, 1)
         DisableGadget(5, 1)
         stadt$ = GetGadgetText(2)
         If stadt$ = "1"
            MessageRequester("Info", "Erfolgreich!")
           Else
            MessageRequester("Info", "Dann halt net")
         EndIf
       EndIf
    EndIf
Laut Handbuch gibt GetGadgetText dann 1 wenn aktiviert und 0 wenn nicht zurück.

Code: Alles auswählen

stadt$ = GetGadgetText(2)
         If stadt$ = "1"
So geht es jedenfalls nich...wie führe ic hdann eine Aktion aus nur wenn der Gadget gecheckt ist?
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

Beitrag von ts-soft »

> Laut Handbuch gibt GetGadgetText dann 1 wenn aktiviert und 0 wenn nicht zurück.
Das will ich mal so nicht glauben :wink:
GetGadgetState wird in PB für Zustände genommen, bzw. wenns mal mehr
ist GetGadgetAttribute. GetGadgetText sollte immer den Text zurückgeben!
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
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

Hä?
Das ist mir jetzt ein bisschen unerklärlich...
Ich hab GetGadgetText durch GetGadgetState ersetzt dass dann auch "laut Handbuch" unterstütz wird, also so:

Code: Alles auswählen

If Event = #PB_Event_Gadget
       If EventGadget() = 5
         DisableGadget(2, 1)
         DisableGadget(3, 1)
         DisableGadget(4, 1)
         DisableGadget(5, 1)
         stadt$ = GetGadgetState(2) 
         If stadt$ = "1"
            MessageRequester("Info", "Erfolgreich!")
           Else
            MessageRequester("Info", "Dann halt net")
         EndIf
       EndIf
    EndIf
Allerdings kommt dann der Fehler
"Cant write numeral value into string variable."
Was mach ich jetzt schonwieder falsch?

Sorry wenn ich mich so dumm anstelle, aber ich mach nur das was im Handbuch steht.
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

Beitrag von ts-soft »

GetGadgetState gibt natürlich einen numerischen Wert zurück (#True oder
#False) und keinen String.
Also den Variablentyp ändern, oder den Wert in einen String umwandeln,
was eigentlich in diesem Fall kaum sinn macht.

Code: Alles auswählen

         stadt.l = GetGadgetState(2)
         If stadt = 1
            MessageRequester("Info", "Erfolgreich!")
           Else
            MessageRequester("Info", "Dann halt net")
         EndIf 
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
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

Okay danke, dass klappt.

Jetzt muss ich aber noch Fragen (ich frags mich schon länger) was die Punkte zwischen z.B. stadt.1 oder result.s immer bedeuten.

Danke!

grüße DrNo
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

Beitrag von ts-soft »

.s ist dasselbe wie $, so wird ein String gekennzeichnet.
.l = long, .w = word, .b = byte, .q = quad, .f = float und .d = double

Vielleicht mal in der Hilfe unter Datentypen nachlesen und bei der
Gelegenheit gleich angewöhnen, diese Variablen zu deklarieren und
EnableExplicit zu aktivieren. Findeste alles in der Hilfe

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