Aktuelle Zeit: 12.12.2019 06:06

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Gelöst: Wie markiert man den vorhandenen Text ?
BeitragVerfasst: 11.11.2019 11:21 
Offline

Registriert: 06.03.2019 21:52
Hallo Leute,

wie kann man bei diesem Code von Danilo

Code:
;
; 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:
SendMessage_(GadgetID(1),#EM_SETSEL,0,-1)

an verschiedenen Stellen versucht, es tut's aber nicht.

_________________
Der beste Fisch ist der Schnitzel


Zuletzt geändert von bin_neu_hier am 11.11.2019 18:24, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Wie markiert man den vorhandenen Text ?
BeitragVerfasst: 11.11.2019 15:46 
Offline
Benutzeravatar

Registriert: 10.09.2004 09:59
Code:
;
; 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

_________________
Link tot?
Ändere h3x0r.ath.cx in hex0rs.coderbu.de und alles wird gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Gelöst: Wie markiert man den vorhandenen Text ?
BeitragVerfasst: 11.11.2019 18:24 
Offline

Registriert: 06.03.2019 21:52
Super! Besten Dank!

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye