It works like this. Call the included script at the beginning of the main script using the include function.
Include>ScriptName.scp
This line imports the included script into the main script. The main script will have a non-modal dialog with edit and/or memo objects. In a loop in the non-modal dialog main script, place a line that calls the subroutine from the included script.
In this case the subroutine call needs three parameters.
-- First the number of characters to which text in the object will be limited.
-- Second is the name of the main script's dialog.
-- Third is the name of the edit or memo object.
Call the subroutine and add the three parameters for each object that needs field length control.
Here is the script that will be the included script. to work with the sample main script, the main script and the included script need to be located in the same folder and the name of the included script needs to be "FieldLengthLimit.scp"
Code: Select all
SRT>FieldLimit
Let>value=%FieldLimit_var_2%.%FieldLimit_var_3%
StringReplace>value,%CR%,,value
Length>%value%,elen
Separate>value,%LF%,var
If>var_count>1
If>var_%var_count%=
Sub>var_count,2
Else
Sub>var_count,1
EndIf
Let>FieldLimit_var_1={%FieldLimit_var_1%+(%var_count%*1)}
EndIf
If>elen>%FieldLimit_var_1%
MidStr>%value%,1,%FieldLimit_var_1%,value
Let>%FieldLimit_var_2%.%FieldLimit_var_3%=%value%
LibFunc>user32,SetFocus,SetRes,0
ResetDialogAction>%FieldLimit_var_2%
EndIf
END>FieldLimit
Code: Select all
//Place this Include> line at the top of any script
//that you want to have any dialog field length limited.
//The unremarked line will work if the script is run outside
//the advanced editor. If the script is to be run inside the
//editor, remark the second line and unremark the first.
//Include>FieldLengthLimit.scp
Include>%script_dir%\FieldLengthLimit.scp
Dialog>Dialog1
Caption=Field Length Limiting
Width=193
Height=239
Top=CENTER
Left=CENTER
Max=0
Min=0
Resize=0
Edit=msEdit1,32,40,121,
Memo=msMemo1,32,72,121,65,
Button=Ok,56,168,75,25,3
Default=Ok
EndDialog>Dialog1
Show>dialog1
Label>Loop
GetDialogAction>dialog1,res1
If>res1=2,EOF
If>res1=3,Process
//Dialog field length limit usage:
//Gosub>FieldLimit,Character Limit,Dialog Name,Object Name
//Place one GoSub>FieldLimit line for each object that needs a length limit
GoSub>FieldLimit,4,dialog1,msedit1
GoSub>FieldLimit,8,dialog1,msMemo1
Goto>Loop
SRT>Process
MDL>%dialog1.msedit1%%CRLF%%dialog1.msMemo1%
ResetDialogAction>dialog1
Press End
END>Process
Label>EOF