Es soll nur zeigen wie Protected Text funktioniert.
Denn das heraus zu finden gehört mal wieder nicht zu den Sternstunden der MSDN Api Beschreibung


Der große Nachteil ist für mich das es einen MainCallback geben muß !!!
Farben und Zoom sind etwas Spielkram um Text zu verschönern
Code: Alles auswählen
Procedure SetInputColor(pbnr, p1, p2, color)
;es muß an p1 mindestens ein Zeichen vorhanden sein
;Protected Text kann nicht geändert werden
Protected pbid = GadgetID(pbnr)
Protected charformat.charformat2\cbSize = SizeOf(charformat2)
charformat\dwMask = #CFM_COLOR
charformat\crTextColor = color
SendMessage_(pbid, #EM_SETSEL, p1, p2)
SendMessage_(pbid, #EM_SETCHARFORMAT, #SCF_SELECTION, charformat)
SendMessage_(pbid, #EM_SETSEL, p2, p2)
EndProcedure
Procedure SetInputText(pbnr, p$, t$="", cp=0, ct=0)
;p$ wird protected, t$ ist normaler Text der verändert werden kann
;cp + ct sind Farbwerte welche vor Protected gesetzt werden müssen
SetGadgetText(pbnr, p$ + " " + t$)
SetInputColor(pbnr, 0, Len(p$), cp)
SetInputColor(pbnr, Len(p$), 1000, ct)
Protected pbid = GadgetID(pbnr)
Protected charformat.charformat2\cbSize = SizeOf(charformat2)
Protected eventmask = SendMessage_(pbid, #EM_GETEVENTMASK, 0, 0)
SendMessage_(pbid, #EM_SETEVENTMASK, 0, eventmask|#ENM_PROTECTED)
charformat\dwMask = #CFM_PROTECTED
charformat\dwEffects = #CFE_PROTECTED
SendMessage_(pbid, #EM_SETSEL, 0, Len(p$)+1)
SendMessage_(pbid, #EM_SETCHARFORMAT, #SCF_SELECTION, charformat)
SendMessage_(pbid, #EM_SETSEL, $FFFF, $FFFF) ;Caret ans Ende
EndProcedure
Procedure MainCallback(hWnd, Msg, wParam, lParam)
Protected result = #PB_ProcessPureBasicEvents
Protected *nmhdr.nmhdr
Select Msg
Case #WM_NOTIFY
*nmhdr.nmhdr = lParam
If *nmhdr\code = #EN_PROTECTED
Debug "#EN_PROTECTED"
ProcedureReturn #True
EndIf
EndSelect
ProcedureReturn result
EndProcedure
pbnr = 12
OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetWindowCallback(@MainCallback())
EditorGadget(pbnr,10,10,200,150 )
SetInputText(pbnr, "Bananen 1 kg:", "9.23", #Blue, #Red)
;noch etwas Spielkram
; SendMessage_(GadgetID(pbnr), #EM_SETSEL, 14, $FFFF)
; SendMessage_(GadgetID(pbnr), #EM_SETFONTSIZE, 4, 0)
; SendMessage_(GadgetID(pbnr), #EM_SETSEL, $FFFF, $FFFF)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow