Seite 1 von 1

EventType()=#PB_EventType_Change fürs EditorGadget

Verfasst: 10.01.2007 14:34
von Purethom
Hallo und frohes, neues Jahr euch allen!

Ich brauche eine Funktionalität, die feststellt, ob der Inhalt eines EditorGadgets geändert wurde. Für das StringGadget gibt es die EventType() = #PB_EventType_Change Funktion, die diese Prüfung übernimmt. Genau so etwas brauche ich für das EditorGadget. Wie kann ich das bewerkstelligen?

Dank im voraus und Grüße sendet

PureThom

Verfasst: 10.01.2007 15:57
von edel
Versuch mal folgende Zeile nach dem erstellen des Gadget einzufuegen :

Code: Alles auswählen

SendMessage_(GadgetID(#editorgadet),#EM_SETEVENTMASK,0,#ENM_CHANGE)
Dann sollte das mit "EventType() = #PB_EventType_Change" auch klappen.

Verfasst: 10.01.2007 16:25
von Purethom
Hallo edel!

Hat prima funktioniert!!! Vielen Dank dafür. Klappt das mit Focus und LostFocus in der gleichen Art?

Nochmals Danke sagt

PureThom

Verfasst: 10.01.2007 21:10
von edel
Benutz dafuer Callbacks

Beispiel :

Code: Alles auswählen

  
  Macro HiWord(long)
    (long >> 16) & $FFFF
  EndMacro
  Macro LoWord(long)
    long & $FFFF
  EndMacro
  
  Prototype callback(hwnd,msg,wparam,lParam)
  
  Procedure EditorCallback(hwnd,msg,wparam,lParam)
    shared OldEditorCB.Callback
    
    if msg = #WM_SETFOCUS
      debug "SETFOCUS"
    EndIf
    
    if msg = #WM_KILLFOCUS
      debug "KILLFOCUS"
    EndIf
    
    ProcedureReturn OldEditorCB(hwnd,msg,wparam,lParam)
  EndProcedure
  
  Procedure WindowCallback(hwnd,msg,wparam,lParam)
    
    if msg = #WM_COMMAND
      
      gadget = LoWord(wparam)
      code   = HiWord(wparam)
      
      if code = #en_change
        debug "Change"
        debug "gadget :" +str(gadget) 
      EndIf
      
    EndIf
    
    ProcedureReturn #PB_ProcessPureBasicEvents
  EndProcedure  
  
  
  hwnd = OpenWindow(0,0,0,200,200,"")
  
  CreateGadgetList(hwnd)
  EditorGadget(0,0,0,200,200)
  
  SetWindowCallback(@WindowCallback(),0)
  OldEditorCB.Callback = SetWindowLong_(GadgetID(0),#GWL_WNDPROC,@EditorCallback())
  
  SendMessage_(GadgetID(0),#EM_SETEVENTMASK,0,#ENM_CHANGE)
  
  Repeat
    e = WaitWindowEvent()
     
    
  Until e = 16