Seite 1 von 1

StringGadget mit Clearbutton

Verfasst: 22.07.2017 10:59
von hjbremer
fast jede Webseite hat Sie. Wie eine Seuche :roll:

Aber irgendwie recht praktisch.

Code: Alles auswählen

Procedure.i StringGadgetX_CB(hwnd, msg, wParam, lParam)   
   
   Protected pbnr, oldproc = GetWindowLongPtr_(hwnd, #GWL_USERDATA)   
   
   Select msg 
      Case #WM_CTLCOLORSTATIC 
         SetTextColor_(wParam, #Red) 
         SetBkMode_(wparam, #TRANSPARENT)
         ProcedureReturn GetStockObject_(#HOLLOW_BRUSH)
         
      Case #WM_PARENTNOTIFY
         pbnr = GetDlgCtrlID_(hwnd)   ;Purebasicnr. abfragen
         SetGadgetText(pbnr, "")
         SetActiveGadget(pbnr) 
                      
   EndSelect
   
   ProcedureReturn CallWindowProc_(oldproc, hwnd, msg, wParam, lParam)     
EndProcedure

Procedure.i StringGadgetX(gadget, x, y, br, hh, inhalt$, flags = 0) 
      
   Protected gadgetnr, gadgetid, returnnr, oldproc, rect.rect   
   Protected textnr, textid, tbr = 16
   
   If gadget = #PB_Any      
      gadgetnr = StringGadget(#PB_Any, x, y, br, hh, inhalt$, flags|#ES_MULTILINE)
      gadgetid = GadgetID(gadgetnr)    ;es muß #ES_MULTILINE sein, sonst Probleme
      returnnr = gadgetnr
   Else      
      gadgetnr = gadget
      gadgetid = StringGadget(gadget, x, y, br, hh, inhalt$, flags|#ES_MULTILINE)  
      returnnr = gadgetid
   EndIf   
         
   textnr = TextGadget(#PB_Any, br - tbr -2, 0, tbr, hh-3, "X", #SS_NOTIFY|#SS_CENTER|#SS_CENTERIMAGE)
   textid = GadgetID(textnr)   
   SetParent_(textid, gadgetid)   
   SetGadgetFont(textnr, #PB_Default)  ;Textgadgetfont für das x auf Standard setzen
   
   oldproc = SetWindowLongPtr_(gadgetid, #GWL_WNDPROC, @StringGadgetX_CB())
   SetWindowLongPtr_(gadgetid, #GWL_USERDATA, oldproc)  
      
   SendMessage_(gadgetid, #EM_GETRECT, 0, rect)   
   rect\right - tbr + 3
   SendMessage_(gadgetid, #EM_SETRECT, 0, rect)
      
   ProcedureReturn returnnr
EndProcedure



; Zeigt mögliche Flags des StringGadgets in Aktion...
  If OpenWindow(0, 0, 0, 322, 225, "StringGadget Flags", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    StringGadgetx(0, 8,  10, 306, 20, "Normal StringGadget...")
    StringGadgetx(1, 8,  35, 306, 20, "1234567", #PB_String_Numeric)
    StringGadgetx(2, 8,  60, 306, 20, "Readonly StringGadget", #PB_String_ReadOnly)
    StringGadgetx(3, 8,  85, 306, 20, "lowercase...", #PB_String_LowerCase)
    StringGadgetx(4, 8, 110, 306, 30, "uppercase...", #PB_String_UpperCase)
    StringGadgetx(5, 8, 150, 306, 30, "Borderless StringGadget", #PB_String_BorderLess)
    StringGadgetx(6, 8, 190, 306, 20, "Password geht nicht mehr, ist mir aber egal", #PB_String_Password)
    SetGadgetColor(0, #PB_Gadget_BackColor, #Gray)
    SetGadgetColor(1, #PB_Gadget_BackColor, #Yellow)
    SetGadgetColor(2, #PB_Gadget_FrontColor, #Blue)
    
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf

PS: wer ein rotes X nicht mag, kanns ja ändern

Re: StringGadget mit Clearbutton

Verfasst: 22.07.2017 11:27
von RSBasic
:allright: :allright: :allright: