Seite 1 von 1

Gelöst: Wie markiert man den vorhandenen Text ?

Verfasst: 11.11.2019 11:21
von bin_neu_hier
Hallo Leute,

wie kann man bei diesem Code von Danilo

Code: Alles auswählen

;
; by Danilo
;
; http://www.purebasic.fr/german/viewtopic.php?f=16&t=26388&start=7
;
; Nummern-Eingabe Beispiele: 123  567,88  -12  -4,5
;
OpenWindow(0, #PB_Ignore, #PB_Ignore, 250, 80, "")
StringGadget(0, 10, 10, 200, 20, "")

CreateRegularExpression(0,"^\-{0,1}\d*$|^\-{0,1}\d+\,\d{0,2}$|^$") ; ^       = Anfang des Strings
                                                                   ; $       = Ende des Strings
                                                                   ; \d      = Dezimalzahl 0-9
                                                                   ; +       = 1 oder mehr Vorkommen
                                                                   ; *       = 0 oder mehr Vorkommen
                                                                   ; |       = alternative Moeglichkeit (Or in PureBasic)
                                                                   ; \,      = Komma
                                                                   ; \-{0,1} = Minus{0 oder 1 mal}
                                                                   ; \d{0,2} = Dezimalzahl 0-9 { 0 bis 2 mal }
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
      If EventGadget() = 0 And EventType() = #PB_EventType_Change
        txt$ = GetGadgetText(0)
        If MatchRegularExpression(0,txt$)=0                           ; wenn kein Treffer, dann wieder vorherigen text setzen
          SendMessage_(GadgetID(0),#EM_GETSEL,0,@endpos) : endpos - 1 ; cursor position holen
          SetGadgetText(0,old$)                                       ; alten text wieder setzen
          SendMessage_(GadgetID(0),#EM_SETSEL,endpos,endpos)          ; cursor position wieder setzen
        Else
          old$ = txt$
        EndIf
      EndIf
  EndSelect
ForEver
den vorhandenen Wert markieren, sobald das Gadget den Fokus erhält? Habe das mit

Code: Alles auswählen

SendMessage_(GadgetID(1),#EM_SETSEL,0,-1)
an verschiedenen Stellen versucht, es tut's aber nicht.

Re: Wie markiert man den vorhandenen Text ?

Verfasst: 11.11.2019 15:46
von HeX0R

Code: Alles auswählen

;
; by Danilo
;
; http://www.purebasic.fr/german/viewtopic.php?f=16&t=26388&start=7
;
; Nummern-Eingabe Beispiele: 123  567,88  -12  -4,5
;
OpenWindow(0, #PB_Ignore, #PB_Ignore, 250, 80, "")
StringGadget(0, 10, 10, 200, 20, "")
StringGadget(1, 10, 35, 200, 20, "change focus", #PB_String_ReadOnly)

CreateRegularExpression(0,"^\-{0,1}\d*$|^\-{0,1}\d+\,\d{0,2}$|^$") ; ^       = Anfang des Strings
																																	 ; $       = Ende des Strings
																																	 ; \d      = Dezimalzahl 0-9
																																	 ; +       = 1 oder mehr Vorkommen
																																	 ; *       = 0 oder mehr Vorkommen
																																	 ; |       = alternative Moeglichkeit (Or in PureBasic)
																																	 ; \,      = Komma
																																	 ; \-{0,1} = Minus{0 oder 1 mal}
																																	 ; \d{0,2} = Dezimalzahl 0-9 { 0 bis 2 mal }
Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			Break
		Case #PB_Event_Gadget
			Select EventGadget()
				Case 0
					Select EventType()
						Case #PB_EventType_Change
							txt$ = GetGadgetText(0)
							If MatchRegularExpression(0,txt$)=0                           ; wenn kein Treffer, dann wieder vorherigen text setzen
								SendMessage_(GadgetID(0),#EM_GETSEL,0,@endpos) : endpos - 1	; cursor position holen
								SetGadgetText(0,old$)																				; alten text wieder setzen
								SendMessage_(GadgetID(0),#EM_SETSEL,endpos,endpos)					; cursor position wieder setzen
							Else
								old$ = txt$
							EndIf
						Case #PB_EventType_Focus
							SendMessage_(GadgetID(0),#EM_SETSEL,0,-1)
					EndSelect
			EndSelect
	EndSelect
ForEver

Re: Gelöst: Wie markiert man den vorhandenen Text ?

Verfasst: 11.11.2019 18:24
von bin_neu_hier
Super! Besten Dank!