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