Navision consente di definire variabili di tipo OCX in modo da poter utilizzare tramite codice C/AL funzionalità installate sul client. Ovviamente affinché il codice venga eseguito sarà necessario che sui client sia installato l'OCX se questi eseguono codice C/AL che lo referenzia.
Sfruttando questa possibilità è possibile tramite l'OCX di Windows Script Host (ScriptControl Object C:\Windows\System32\msscript.ocx) simulare la pressione di uno o più tasti utilizzando il metodo SendKeys dell'oggetto WScript.Shell. In questo modo di fatto si possono creare delle macro artigianali per evitare di l'esecuzioni da parte dell'utente di azioni ripetitive.
L'ultima versione attualmente disponibile di Windows Script Host (WSH) e scaricabile al seguente link: Microsoft Windows Script Downloads.
Sommario
Creare una CodeUnit WindowsScripHost contenente una funzione pubblica per ciascun metodo dell'engine WSH che si intende utilizzare, per evitare memory leak in conviene definire una variabile locale che faccia riferimento all'OCX del WSH in ciascuna funzione in modo che le risorse dell'OCX siano rilasciate al termine dell'esecuzione.
Nel seguente esempio è illustrata la creazione di una funzione per l'utilizzo del metodo SendKeys dell'oggetto WScript.Shell:
ShellSendKeys(Keys : Text[30])
SCO.Language:= 'VBScript';
SCO.ExecuteStatement('CreateObject("WScript.Shell").SendKeys("' + Keys + '")');
CLEAR(SCO);
Dove SCO è una variabile locale definita come segue:
| Name |
DataType |
Subtype |
Length |
| SCO |
OCX |
ScriptControl Object |
|
Per aprire ad esempio la form Customer Card (21) in modalità inserimento basta definire una variabile WSH di tipo CodeUnit che faccia riferimento alla CodeUnit WindowsScripHost e utilizzare il seguente codice:
FORM.RUN(21);
WSH.SendKeys('{F3}');ShellSendKeys(Keys : Text[30]);