Hallo,
wie kann ich in einem Editorgadget den Text direkt bei der Eingabe ersetzen.
Ich möchte, daß bei der direkten Texteingabe der Text in einer Zeile solange in Großbuchstaben umgewandelt wird, bis das Zeichen ";" eingegeben wird.
Ist dies mit den normalen Purebasic-Libraries möglich ?
Text bei der Eingabe ersetzen
Code: Alles auswählen
new$=getgadgettext(x)
if new$<>old$
;Changecode
endif
old$=getgadgettext(x)
mal so auf die schnelle mit im Board zusammengeklauten Code:
Code: Alles auswählen
Global oldProc
#frmMain = 0
#txtInput = 1
Procedure WatchStringGadget(hWnd,Msg,wParam,lParam)
If Msg = #WM_KEYUP
myString$ = GetGadgetText(#txtInput)
If myString$
SemikolonPos = FindString(myString$, ";", 1)
If SemikolonPos
LinkerTeil$ = UCase(Left(myString$, SemikolonPos-1))
RechterTeil$ = Mid(myString$, SemikolonPos + 1, Len(myString$))
SendMessage_(GadgetID(#txtInput), #EM_GETSEL, @startpos.l, @endpos.l)
SetGadgetText(#txtInput, LinkerTeil$ + ";" + RechterTeil$)
SendMessage_(GadgetID(#txtInput), #EM_SETSEL, startpos, endpos)
EndIf
EndIf
EndIf
ProcedureReturn CallWindowProc_(oldProc,hWnd,Msg,wParam,lParam)
EndProcedure
OpenWindow(#frmMain, 0, 0, 200, 30, #PB_Window_ScreenCentered | #PB_Window_SystemMenu , "")
CreateGadgetList(WindowID(#frmMain))
StringGadget(#txtInput, 5, 5, 190, 20, "")
ActivateGadget(#txtInput)
oldProc = SetWindowLong_(GadgetID(#txtInput),#GWL_WNDPROC,@WatchStringGadget())
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
a²+b²=mc²
Hallo Macros, Hallo Kiffi
funktioniert beides einwandfrei, jedoch nur in einem normalen Fenster innerhalb eines Windows.
In meinem Programm befindet sich im Window ein Panelgadget, welches auf jedem Panel ein EditorGadget besitzt.
Wenn ich nun versuche mittels
eine Textänderung im Editirgadget zu erfassen, erhalte ich als Resultat nur -1, egal ob ich eine Änderung mache oder nicht.
Solange ich keine Textänderung erfassen kann, klappt's auch nicht mit der weiteren Verarbeitung des Textes
Kann mir dabei vielleicht jemand helfen ???
funktioniert beides einwandfrei, jedoch nur in einem normalen Fenster innerhalb eines Windows.
In meinem Programm befindet sich im Window ein Panelgadget, welches auf jedem Panel ein EditorGadget besitzt.
Wenn ich nun versuche mittels
Code: Alles auswählen
SendMessage_(GadgetID(GadgetID) , #EM_GETMODIFY , 0 , 0)
Solange ich keine Textänderung erfassen kann, klappt's auch nicht mit der weiteren Verarbeitung des Textes
Kann mir dabei vielleicht jemand helfen ???