Seite 1 von 1
Text bei der Eingabe ersetzen
Verfasst: 25.01.2006 16:29
von John Doe
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 ?
Verfasst: 25.01.2006 16:32
von Macros
Auslesen, überarbeiten, einschreiben.
Verfasst: 25.01.2006 16:43
von John Doe
Dies erscheint mir etwas umständlich und wie teile ich dem Programm nach jedem Tastenschlag mit das der Text geändert wurde und das Programm darauf ggf. mit Textänderung reagieren soll.
Verfasst: 25.01.2006 16:45
von Macros
Code: Alles auswählen
new$=getgadgettext(x)
if new$<>old$
;Changecode
endif
old$=getgadgettext(x)
Verfasst: 25.01.2006 17:20
von Kiffi
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
Verfasst: 25.01.2006 17:53
von John Doe
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
Code: Alles auswählen
SendMessage_(GadgetID(GadgetID) , #EM_GETMODIFY , 0 , 0)
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 ???