Seite 1 von 1
Maximaler Wert im SpinGadget
Verfasst: 22.02.2005 15:58
von Sven
Hallo!
Wie groß darf der Wert in einem SpinGadget werden?
Wenn ich einen Bereich um 50000 rum angebe, gibt es komische Werte zurück und zählt rückwärts.
Kann es sein, dass SpinGadgets auf SignedInteger beschränkt sind? Kann man die Beschränkung umgehen?
Sven
Verfasst: 22.02.2005 16:19
von Ynnus
50000 sind aber keine signed integer. Selbst mit sint solltest du 2.147.483.648 Werte haben. Denn das sind dann 2^31. (Letzte bit für Vorzeichen).
Vielleicht eher Word. Aber die gehen ja "nur" bis 32768. Imo muss man aber doch beim Spingadget den Text selbst reinschreiben. Speicherst du diesen vielleicht zwischen in irgend einer Variable oder nimmst du den direkt aus dem GetGadgetState() ?
Ansonsten wüsste ich jetzt gerade nicht woras es liegt. Vielleicht gibt's da wirklich eine Grenze. Dann müsste man es mal mit der WinAPI direkt versuchen, ob's damit dann geht.
Verfasst: 22.02.2005 16:53
von Sven
>> Vielleicht eher Word.
Mein ich doch. Ich hätt eben gern LongInt oder zumindest unsigned Word.
>> Aber die gehen ja "nur" bis 32768.
Dann werd ich mal die genaue Grenze austesten.
>> Speicherst du diesen vielleicht zwischen in irgend einer Variable oder nimmst du den direkt aus dem GetGadgetState() ?
Aus GetGadgetState(), um variabel zu bleiben und verschieden SpinGadgets mit einer Procedure zu updaten:
Code: Alles auswählen
Procedure UpdateSpinGadget(gID.l) ;SpinGadget normal
Protected gID
If EventType() = #PB_EventType_Change Or EventType() = 1024 ;Eingabe in Textfeld
SetGadgetState(gID, Val(GetGadgetText(gID))) ;Wert an Text anpassen
If Str(GetGadgetState(gID)) <> GetGadgetText(gID) ;Vergleich auf Bereich
SetGadgetText(gID, GetGadgetState(gID)) ;Text update
EndIf
Else ;Spin Down oder Up, oder Click
SetGadgetText(gID, GetGadgetState(gID)) ;Text an Wert anpassen
EndIf
EndProcedure
Sven