Seite 1 von 1

EditorGadget zu StringGadget

Verfasst: 16.09.2014 10:49
von es_91
Das StringGadget kann, selbst mit Callback, keine Return-Tastenereignisse wiedergeben.

Das EditorGadget schon.

Darum wollte ich ein EditorGadget zu einem StringGadget umwandeln.

So sieht der code aus:

Code: Alles auswählen

Procedure WindowCB(hwnd, msg, wparam, lparam)
  
  Static OldGadgetText.s
  
  Select msg
      
    Case 273
      
      If (lparam) = GadgetID(0)
        If GetGadgetText(0) <> OldGadgetText.s
          SendMessage_(GadgetID(0), #EM_GETSEL, @Position, @EndPosition)
          If FindString(GetGadgetText(0), #CRLF$)
            gefunden = #True
          EndIf
          SetGadgetText(0, ReplaceString(GetGadgetText(0), #CRLF$, ""))
          SendMessage_(GadgetID(0), #EM_SETSEL, Position, EndPosition)
          OldGadgetText.s = GetGadgetText(0)
          
          If gefunden
            Debug "enter"
            gefunden = #False
          EndIf
        EndIf
      EndIf
      
    Default
      
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents
  
EndProcedure

If OpenWindow(0, 0, 0, 322, 205, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  EditorGadget(0, 8,  10, 306, 20)
  SetGadgetText(0, "One-Line EditorGadget...")
  SetWindowCallback(@WindowCB(), 0)
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Er funktioniert noch nicht einwandfrei. Momentan werden noch Return-Tastenereignisse als Eingabe gewertet, heißt: ist Text markiert/selektiert, wird dieser durch einen Return-Tastendruck ersetzt, auch wenn im Endeffekt nichts mehr eingefügt wird.

Jemand ne Idee, wie man das noch hinbekommen kann?

Grüße,

es_91.

Re: EditorGadget zu StringGadget

Verfasst: 16.09.2014 10:58
von RSBasic
Du möchtest nur ermitteln, ob jemand Enter gedrückt hat ohne Enter-Funktion?

Code: Alles auswählen

EnableExplicit

If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  StringGadget(1, 10, 10, 480, 20, "String", 0)
  
  AddKeyboardShortcut(0, #PB_Shortcut_Return, 1)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1
            If GetActiveGadget() = 1
              Debug "Enter gedrückt"
            EndIf
        EndSelect
      Case #PB_Event_CloseWindow
        End
    EndSelect
  ForEver
EndIf

Re: EditorGadget zu StringGadget

Verfasst: 16.09.2014 11:01
von es_91
wt- :? :o

Dankeschön.