Aktuelle Zeit: 30.05.2020 23:38

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Mit StringGadget Kommazahl einlesen
BeitragVerfasst: 28.03.2020 16:56 
Offline

Registriert: 20.01.2010 17:49
Danke @Danilo

Ich finde es toll dass Ihr alle im Forum Beispiele gibt.

So kann man Purebasic gut lernen. :allright:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit StringGadget Kommazahl einlesen
BeitragVerfasst: 29.03.2020 10:11 
Offline
Benutzeravatar

Registriert: 11.11.2004 17:52
Wohnort: Bremen
Ich wollt meinen Senf auch dazu geben,
denn ich finde die Idee von Danilo sehr interessant.
Bis dato habe ich, ähnlich wie ts-soft, meine Stringgadgets auf Numerickurs gebracht
aber ich werde es wohl jetzt auf die Art von Danilo ändern.
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
; mit kleiner Änderung
;

Procedure CreateNumericString(vID.i, vKomma.s = Chr(44), vNKv.a = 0, vNKb.a = 2)
   Protected pText.s = "^\-{0,1}\d*$|^\-{0,1}\d+\"

   pText + vKomma + "\d{"
   pText + Str(vNKv) + ","
   pText + Str(vNKb) + "}$|^$"
   CreateRegularExpression(vID, pText)
;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 }
EndProcedure

Procedure InputNumericString(vID.i)
   Protected pEndPos.i, pString.s = GetGadgetText(vID)
   Static Dim pText.s(1)

   If (pText(0)<>Str(vID)): pText(0) = Str(vID): pText(1) = Left(pString, Len(pString)-1): EndIf
   If (MatchRegularExpression(vID, pString)=#False)              ; wenn kein Treffer, dann wieder vorherigen text setzen
      SendMessage_(GadgetID(vID), #EM_GETSEL, #False, @pEndPos)  ; cursor position holen
      pEndPos - 1
      SetGadgetText(vID, pText(1))                               ; alten text wieder setzen
      SendMessage_(GadgetID(vID), #EM_SETSEL, pEndPos, pEndPos)  ; cursor position wieder setzen
   Else
      pText(1) = pString
   EndIf
EndProcedure

OpenWindow(0, #PB_Ignore, #PB_Ignore, 250, 70, "")
StringGadget(0, 10, 10, 200, 20, ""): CreateNumericString(0)
StringGadget(1, 10, 40, 200, 20, ""): CreateNumericString(1)
SetActiveGadget(0)
Repeat
   Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
         Break
      Case #PB_Event_Gadget
         If (EventType()=#PB_EventType_Change)
            Select EventGadget()
               Case 0: InputNumericString(0)
               Case 1: InputNumericString(1)
            EndSelect
         EndIf
   EndSelect
ForEver

End
Auch ich danke für Eure Ideen :praise:

_________________
Ohne Zeit kein Fleiß
Auf neustem Stand zu sein ist eine Kunst die nicht jeder perfektioniert [Win10Pro(64); PB5.72 LTS].


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Mit StringGadget Kommazahl einlesen
BeitragVerfasst: 29.03.2020 10:37 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Ok,

damit es auch auf allen OS funktioniert, kann man auch eigene Gadgets mit dem CanvasGadget erstellen.
Hier mal ein paar Beispiele auch mit einem NumberGadget

Link: https://www.purebasic.fr/english/viewto ... 12&t=74267

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 13 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


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