Hello,
is it possible to make in dialog window symbol counter? I want to make field where can type max 160 symbols (sms) and counter how many symbols left.
Thanks in advance.
Symbol counter
Moderators: Dorian (MJT support), JRL
- Dorian (MJT support)
- Automation Wizard
- Posts: 1385
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Symbol counter
I would have thought so, simply by comparing the existence of a symbol in user input to a list of variables. It would get quite complicated if you didn't want to allow duplicates though.
What kind of symbols?
What kind of symbols?
Yes, we have a Custom Scripting Service. Message me or go here
- Dorian (MJT support)
- Automation Wizard
- Posts: 1385
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Symbol counter
These two articles will help you learn the basics of Dialogs :
Article 1.
Article 2.
Once you've digested those, here's something very basic to get you started, but typing one single character as a proof of concept :
Article 1.
Article 2.
Once you've digested those, here's something very basic to get you started, but typing one single character as a proof of concept :
Code: Select all
Dialog>Dialog1
object Dialog1: TForm
Left = 1073
Top = 214
HelpContext = 5000
BorderIcons = [biSystemMenu]
Caption = 'CustomDialog'
ClientHeight = 417
ClientWidth = 1170
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -28
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = True
ShowHint = True
OnTaskBar = False
PixelsPerInch = 240
TextHeight = 32
object Label1: TLabel
Left = 24
Top = 216
Width = 114
Height = 32
Caption = 'Symbols'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -27
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
end
object Label2: TLabel
Left = 24
Top = 264
Width = 120
Height = 32
Caption = 'CountLeft'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -27
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
end
object Label3: TLabel
Left = 24
Top = 88
Width = 427
Height = 32
Caption = 'Type a symbol then click "check"'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -27
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
end
object Edit1: TEdit
Left = 21
Top = 144
Width = 242
Height = 40
TabOrder = 0
Text = '@'
end
object MSButton1: tMSButton
Left = 285
Top = 136
Width = 150
Height = 50
Caption = 'Check'
TabOrder = 1
DoBrowse = False
BrowseStyle = fbOpen
end
end
EndDialog>Dialog1
AddDialogHandler>Dialog1,MSButton1,OnClick,DoClick
Let>TheString=!"£$%^&*()_@><;:'
Len>TheString,LenString
SetDialogProperty>Dialog1,Label1,Caption,TheString
SetDialogProperty>Dialog1,Label2,Caption,%LenString% left
Show>Dialog1,res
SRT>DoClick
GetDialogProperty>Dialog1,Edit1,Text,TheTxt
StringReplace>TheString,TheTxt,,TheString
SetDialogProperty>Dialog1,Label1,Caption,TheString
Len>TheString,LenString
SetDialogProperty>Dialog1,Label2,Caption,%LenString% left
End>DoClick
Yes, we have a Custom Scripting Service. Message me or go here
Re: Symbol counter
I didn't mentioned something about dublicates. They can type everything they want.Dorian (MJT support) wrote: ↑Tue Jan 17, 2023 4:14 pmI would have thought so, simply by comparing the existence of a symbol in user input to a list of variables. It would get quite complicated if you didn't want to allow duplicates though.
What kind of symbols?
symbols I can get with Length> ,but I don't know how to show counter and update it on every symbol (numbers, letters and etc.) typed.
- Dorian (MJT support)
- Automation Wizard
- Posts: 1385
- Joined: Sun Nov 03, 2002 3:19 am
- Contact:
Re: Symbol counter
I've adjusted it to allow duplicates, and to continuously watch the input with no button clicks required. For this example I just used abcde... instead of symbols just so it was clearer to see. You'll see at the beginning where I've edited out the symbols line. You should be able to replace that with your list of symbols.
This uses regex to find the match, and then removes the matched characters from the original string. I'm not a regex expert and acquired that from online sources - so if you need to edit the regex to something more impressive (particularly if any of your symbols need to be escaped) I won't be able to help there.
But with regards to the Dialog and it's functionality, I think this does what you're looking for.
Always happy for others here to improve upon my suggestions :
This uses regex to find the match, and then removes the matched characters from the original string. I'm not a regex expert and acquired that from online sources - so if you need to edit the regex to something more impressive (particularly if any of your symbols need to be escaped) I won't be able to help there.
But with regards to the Dialog and it's functionality, I think this does what you're looking for.
Always happy for others here to improve upon my suggestions :
Code: Select all
//Character Match String
Let>TheString=abcdefghijklmnopqrstuvwxyz1234567890
//Let>TheString=!"£$%^&*()_@><;:'
Len>TheString,LenString
Dialog>Dialog1
object Dialog1: TForm
Left = 1073
Top = 214
HelpContext = 5000
BorderIcons = [biSystemMenu]
Caption = 'CustomDialog'
ClientHeight = 417
ClientWidth = 1170
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -28
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = True
ShowHint = True
OnTaskBar = False
PixelsPerInch = 240
TextHeight = 32
object Label1: TLabel
Left = 24
Top = 216
Width = 162
Height = 46
Caption = 'Symbols'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -40
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
end
object Label2: TLabel
Left = 24
Top = 264
Width = 120
Height = 32
Caption = 'CountLeft'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -27
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
end
object Label3: TLabel
Left = 24
Top = 88
Width = 484
Height = 32
Caption = 'Type your symbols from the list below'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -27
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
end
object Edit1: TEdit
Left = 21
Top = 144
Width = 242
Height = 40
TabOrder = 0
end
end
EndDialog>Dialog1
SetDialogProperty>Dialog1,Label1,Caption,TheString
SetDialogProperty>Dialog1,Label2,Caption,%LenString% left
Show>Dialog1
label>mainloop
GetDialogProperty>Dialog1,Edit1,Text,TheTxt
regex>[%TheTxt%],TheString,0,matches,nm,0,0,0
if>nm>0
let>adjustloop=0
repeat>adjustloop
let>adjustloop=adjustloop+1
StringReplace>TheString,matches_%adjustloop%,,TheString
Len>TheString,LenString
until>adjustloop,nm
SetDialogProperty>Dialog1,Label1,Caption,TheString
SetDialogProperty>Dialog1,Label2,Caption,%LenString% left
endif
goto>mainloop
Yes, we have a Custom Scripting Service. Message me or go here