Seite 1 von 1

BindGadgetEvent() und StringGadget

Verfasst: 13.02.2017 13:16
von Bisonte
Hallo. Ich habe da ein merkwürdiges Phänomen....

Wenn ich per BindGadgetEvent() einem StringGadget eine EventProzedur zuweise, wird diese zwar ausgeführt,
aber SendMessage_() scheint nicht zu funktionieren.

Wenn ich aber direkt in der Eventloop genau den gleichen Code schreibe funktionierts.
Kann mir das jemand erklären ?

Code: Alles auswählen

Define Event

Procedure Event_String()
  SendMessage_(GadgetID(EventGadget()), #EM_SETSEL, Len(GetGadgetText(EventGadget())), 0)
EndProcedure

OpenWindow(0, 0, 0, 640, 480, "Test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)

StringGadget(1, 10, 10, 200, 20, "sldkjfhaölsdhfalfds", #PB_String_BorderLess)
BindGadgetEvent(1, @iString_Events(), #PB_EventType_Focus)

Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_CloseWindow
      Break
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
;           If EventType() =   #PB_EventType_Focus
;             SendMessage_(GadgetID(EventGadget()), #EM_SETSEL, Len(GetGadgetText(EventGadget())), 0)
;           EndIf
          
      EndSelect

  EndSelect
  
ForEver
Sollte doch egal sein ob per BindGadgetEvent oder in der Eventloop das abgefragt wird...
So funktionierts jedenfalls bei anderen Gadgets definitiv, nur beim StringGadget irgendwie nicht...

Re: BindGadgetEvent() und StringGadget

Verfasst: 13.02.2017 13:31
von RSBasic

Code: Alles auswählen

Define Event

Procedure Event_String()
  PostMessage_(GadgetID(EventGadget()), #EM_SETSEL, Len(GetGadgetText(EventGadget())), 0)
EndProcedure

OpenWindow(0, 0, 0, 640, 480, "Test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)

StringGadget(1, 10, 10, 200, 20, "sldkjfhaölsdhfalfds", #PB_String_BorderLess)
BindGadgetEvent(1, @Event_String(), #PB_EventType_Focus)

Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_CloseWindow
      Break
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          ;           If EventType() =   #PB_EventType_Focus
          ;             SendMessage_(GadgetID(EventGadget()), #EM_SETSEL, Len(GetGadgetText(EventGadget())), 0)
          ;           EndIf
          
      EndSelect
      
  EndSelect
  
ForEver

Re: BindGadgetEvent() und StringGadget

Verfasst: 13.02.2017 23:56
von Bisonte
Echt jetzt ? Bild

Danke... !