StringGadget mit Clearbutton

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

StringGadget mit Clearbutton

Beitrag 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
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: StringGadget mit Clearbutton

Beitrag von RSBasic »

:allright: :allright: :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten