Spingadget: Zeigerposition nach hinten verschieben

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Spingadget: Zeigerposition nach hinten verschieben

Beitrag von Chimorin »

Heyho,

gibt es eine Möglichkeit in einem Spingadget die Zeigerposition nach hinten, hinter das Geschriebene, zu verschieben?
Wir der Inhalt mit SetGadgetText() gesetzt, wandert der Zeiger nach vorne, bzw. markiert je nach Anwendung den gesamten Eintrag (In der PB-Hilfe ist das so).

Code: Alles auswählen

If OpenWindow(0, 0, 0, 140, 70, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    SpinGadget     (0, 20, 20, 100, 25, 0, 1000)
    SetGadgetState (0, 5) : SetGadgetText(0, "5")   ; legt den Anfangswert fest
    Repeat
      Event = WaitWindowEvent()
      If Event = #PB_Event_Gadget
        If EventGadget() = 0
          SetGadgetText(0, Str(GetGadgetState(0)))
        EndIf
      EndIf
    Until Event = #PB_Event_CloseWindow
  EndIf
Bild

- formerly known as Bananenfreak -
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Spingadget: Zeigerposition nach hinten verschieben

Beitrag von RSBasic »

Meinst du den Cursor?
Wenn ja, dann kannst du die Cursorposition ans Ende setzen, wenn man die Pfeiltaste nach oben/unten drückt:

Code: Alles auswählen

EnableExplicit

Define Event
Define SpinEditHandle

If OpenWindow(0, 0, 0, 140, 70, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  SpinGadget     (0, 20, 20, 100, 25, 0, 1000)
  SetGadgetState (0, 5) : SetGadgetText(0, "5")   ; legt den Anfangswert fest
  
  Repeat
    Event = WaitWindowEvent()
    If Event = #PB_Event_Gadget
      If EventGadget() = 0
        SetGadgetText(0, Str(GetGadgetState(0)))
        
        SpinEditHandle = GetWindow_(GadgetID(0), #GW_HWNDFIRST)
        SendMessage_(SpinEditHandle, #EM_SETSEL, $fffffff, $fffffff)
        
      EndIf
    EndIf
  Until Event = #PB_Event_CloseWindow
EndIf
Bezüglich der Gesamtmarkierung nach dem Klick auf einen Pfeilbutton schaue ich später an.

\\Edit:
Ich wüsste jetzt gerade nicht, wie man die automatische Markierung abschaltet, nachdem man auf einen Pfeilbutton geklickt hat. Vielleicht im Callback.
Oder reicht der obere Code schon aus?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Spingadget: Zeigerposition nach hinten verschieben

Beitrag von Chimorin »

Die Pfeiltaste nach oben/unten löst nur die Pfeile des Spingadgets aus (Nach oben, bzw. unten).

Code: Alles auswählen

SpinEditHandle = GetWindow_(GadgetID(0), #GW_HWNDFIRST)
        SendMessage_(SpinEditHandle, #EM_SETSEL, $fffffff, $fffffff)
Danke für die Hilfe, RsBasic. Dein Code ändert leider nichts an dem Problem.
Ich habe mein Programm einfach soweit angepasst, dass dieser Fall nur noch auftritt, wenn ich das will.
Bild

- formerly known as Bananenfreak -
Antworten