EditorGadget() placeholder text

Just starting out? Need help? Post your questions and find answers here.
dige
Addict
Addict
Posts: 1417
Joined: Wed Apr 30, 2003 8:15 am
Location: Germany
Contact:

EditorGadget() placeholder text

Post by dige »

hi guys,

does anyone know how I can assign a placeholder text to the editor gadget?
I have not found anything with the forum search.

Chat GPT has suggested an interesting, working solution - but isn't there a simpler way?

Code: Select all

; Created by ChatGPT4


; Konstanten für die Gadget-IDs
Enumeration
  #Editor
EndEnumeration

; Initialer Platzhaltertext
Global Placeholder$ = "Bitte Text eingeben..."

; Fenster und EditorGadget erstellen
If OpenWindow(0, 100, 100, 300, 100, "Editor mit Platzhalter", #PB_Window_SystemMenu)
  EditorGadget(#Editor, 10, 10, 280, 80)
  SetGadgetText(#Editor, Placeholder$)
  
  ; Ereignisschleife
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Editor
            If EventType() = #PB_EventType_Focus
              If GetGadgetText(#Editor) = Placeholder$
                SetGadgetText(#Editor, "")
              EndIf
            ElseIf EventType() = #PB_EventType_LostFocus
              If Len(GetGadgetText(#Editor)) = 0
                SetGadgetText(#Editor, Placeholder$)
              EndIf
            EndIf
        EndSelect
    EndSelect
  Until Event() = #PB_Event_CloseWindow
EndIf

"Daddy, I'll run faster, then it is not so far..."
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4991
Joined: Sun Apr 12, 2009 6:27 am

Re: EditorGadget() placeholder text

Post by RASHAD »

Hi dige
I tried to use #EM_SETCUEBANNER with the editor but I failed :)
Try
#1 :

Code: Select all

Enumeration
  #Editor
  #Text
EndEnumeration

; Initialer Platzhaltertext
Global Placeholder$ = "  Bitte Text eingeben..."

; Fenster und EditorGadget erstellen
If OpenWindow(0, 100, 100, 300, 200, "Editor mit Platzhalter", #PB_Window_SystemMenu)
  TextGadget(#Text,12,12,250,24,Placeholder$,#WS_CLIPSIBLINGS)
  SetGadgetColor(#Text,#PB_Gadget_BackColor,$FFFFFF)
  EditorGadget(#Editor, 10, 10, 280, 80,#WS_CLIPSIBLINGS)
  DisableGadget(#Text,1)
  ; Ereignisschleife
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Editor
            If EventType() = #PB_EventType_Focus
              HideGadget(#Text,1)
            ElseIf EventType() = #PB_EventType_LostFocus
              HideGadget(#Text,0)
            EndIf
        EndSelect
    EndSelect
  Until Event() = #PB_Event_CloseWindow
EndIf
#2 :

Code: Select all

Enumeration
  #Editor
  #string
EndEnumeration

; Initialer Platzhaltertext
Global Placeholder$ = "  Bitte Text eingeben..."

; Fenster und EditorGadget erstellen
If OpenWindow(0, 100, 100, 300, 200, "Editor mit Platzhalter", #PB_Window_SystemMenu)
  EditorGadget(#Editor, 10, 10, 280, 80)
  StringGadget(#string,11,11,250,24,"")
  SendMessage_(GadgetID(#string),#EM_SETCUEBANNER,1,Placeholder$)
  SetWindowLongPtr_(GadgetID(#string), #GWL_EXSTYLE, GetWindowLongPtr_(GadgetID(0), #GWL_EXSTYLE)  &~ #WS_EX_CLIENTEDGE)
  SetWindowPos_(GadgetID(#string), 0, 0, 0, 0, 0, #SWP_NOZORDER | #SWP_NOMOVE | #SWP_NOSIZE | #SWP_FRAMECHANGED)
  ; Ereignisschleife
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Editor
            If EventType() = #PB_EventType_Focus
              HideGadget(#string,1)
            ElseIf EventType() = #PB_EventType_LostFocus
              HideGadget(#string,0)
            EndIf
        EndSelect
    EndSelect
  Until Event() = #PB_Event_CloseWindow
EndIf
Egypt my love
BarryG
Addict
Addict
Posts: 4219
Joined: Thu Apr 18, 2019 8:17 am

Re: EditorGadget() placeholder text

Post by BarryG »

dige wrote: Wed Apr 17, 2024 3:58 pm

Code: Select all

; Created by ChatGPT4

; Konstanten für die Gadget-IDs
Enumeration
  #Editor
EndEnumeration

; Initialer Platzhaltertext
Global Placeholder$ = "Bitte Text eingeben..."

; Fenster und EditorGadget erstellen
If OpenWindow(0, 100, 100, 300, 100, "Editor mit Platzhalter", #PB_Window_SystemMenu)
  EditorGadget(#Editor, 10, 10, 280, 80)
  SetGadgetText(#Editor, Placeholder$)
  
  ; Ereignisschleife
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Editor
            If EventType() = #PB_EventType_Focus
              If GetGadgetText(#Editor) = Placeholder$
                SetGadgetText(#Editor, "")
              EndIf
            ElseIf EventType() = #PB_EventType_LostFocus
              If Len(GetGadgetText(#Editor)) = 0
                SetGadgetText(#Editor, Placeholder$)
              EndIf
            EndIf
        EndSelect
    EndSelect
  Until Event() = #PB_Event_CloseWindow
EndIf
ChatGPT wrote that? That's pretty impressive! :shock: I've never seen it create compilable PureBasic code before, but you used ChatGPT 4 and I'm only on 3.5 (can't afford to pay for 4), so maybe that's why.
Quin
Addict
Addict
Posts: 1135
Joined: Thu Mar 31, 2022 7:03 pm
Location: Colorado, United States
Contact:

Re: EditorGadget() placeholder text

Post by Quin »

BarryG wrote: Thu Apr 18, 2024 12:38 am ChatGPT wrote that? That's pretty impressive! :shock: I've never seen it create compilable PureBasic code before, but you used ChatGPT 4 and I'm only on 3.5 (can't afford to pay for 4), so maybe that's why.
Yeah, GPT4 can actually generate compilable PB code. I don't pay for it myself either ($20.00 a month is incredibly steep considering how much I'd use it), but it's impressive.
dige
Addict
Addict
Posts: 1417
Joined: Wed Apr 30, 2003 8:15 am
Location: Germany
Contact:

Re: EditorGadget() placeholder text

Post by dige »

RASHAD wrote: Wed Apr 17, 2024 5:42 pm Hi dige
I tried to use #EM_SETCUEBANNER with the editor but I failed :)
[..]
Nevertheless, thanks RASHAD, it looks better :-)
"Daddy, I'll run faster, then it is not so far..."
User avatar
jacdelad
Addict
Addict
Posts: 2032
Joined: Wed Feb 03, 2021 12:46 pm
Location: Riesa

Re: EditorGadget() placeholder text

Post by jacdelad »

dige wrote: Thu Apr 18, 2024 7:19 pm Nevertheless, thanks RASHAD, it looks better :-)
You can always trust in RASHAD-GPT! :mrgreen:
Good morning, that's a nice tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
RASHAD
PureBasic Expert
PureBasic Expert
Posts: 4991
Joined: Sun Apr 12, 2009 6:27 am

Re: EditorGadget() placeholder text

Post by RASHAD »

Hi jacdelad
Is that mean he should pay me $20 per month :mrgreen:
Egypt my love
User avatar
jacdelad
Addict
Addict
Posts: 2032
Joined: Wed Feb 03, 2021 12:46 pm
Location: Riesa

Re: EditorGadget() placeholder text

Post by jacdelad »

RASHAD wrote: Thu Apr 18, 2024 10:44 pm Hi jacdelad
Is that mean he should pay me $20 per month :mrgreen:
$20 well invested. I'll think about that. :wink:
Good morning, that's a nice tnetennba!

PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
dige
Addict
Addict
Posts: 1417
Joined: Wed Apr 30, 2003 8:15 am
Location: Germany
Contact:

Re: EditorGadget() placeholder text

Post by dige »

RASHAD wrote: Thu Apr 18, 2024 10:44 pm Hi jacdelad
Is that mean he should pay me $20 per month :mrgreen:
RASHAD my friend! What is your bank account? :D :mrgreen:
"Daddy, I'll run faster, then it is not so far..."
Post Reply