Iris _

Pixsys Forum

everybody's effort for the same goal

Chiudere sinottico con Basic Script

Post Reply
Marco
Posts: 34
Joined: 05/05/2019, 14:40

Chiudere sinottico con Basic Script

Post by Marco »

Buongiorno,

vorrei poter chiudere un sinottico aperto come "modale" con un comando da basic script.
Ho provato utilizzando la funzione Closesynoptic() ma non la riconosce, probabilmente non è utilizzabile in WinCE.
Esiste un altro modo per chiudere il sinottico attivo alla fine dello script?

Grazie per la cortesia e cordiali saluti.
Pixsys tecnico 1
Moderatore
Posts: 1699
Joined: 29/10/2010, 10:09
Contact:

Re: Chiudere sinottico con Basic Script

Post by Pixsys tecnico 1 »

Salve,
la funzione "CloseSynoptic()" funziona correttamente anche nella piattaforma CE, ad esempio questo script locale nel popup, lo chiude dopo 8 secondi:

Option Explicit

Public Sub OnTimer()
TimeElapsed = TimeElapsed + 1
If TimeElapsed > 8 Then
TimeElapsed = 0
CloseSynoptic()
End If
End Sub

"TimeElapsed" è una variabile locale del sinottico di tipo byte
Marco
Posts: 34
Joined: 05/05/2019, 14:40

Re: Chiudere sinottico con Basic Script

Post by Marco »

Buongiorno,

vi ringrazio per la risposta, però ho provato anche copiando ed incollando l'esempio che mi avete dato, ma non riesco ancora a far riconoscere la funzione CloseSynoptic(), non riesco a capire dove commetto l'errore. Se vi invio il progetto potreste dirmi dove sto sbagliando?

Ringrazio per la cortesia e cordialmente saluto.
Pixsys tecnico 1
Moderatore
Posts: 1699
Joined: 29/10/2010, 10:09
Contact:

Re: Chiudere sinottico con Basic Script

Post by Pixsys tecnico 1 »

si certo,
invii pure il progetto in uno zip a support@pixsys.net
Pixsys tecnico 1
Moderatore
Posts: 1699
Joined: 29/10/2010, 10:09
Contact:

Re: Chiudere sinottico con Basic Script

Post by Pixsys tecnico 1 »

Grazie per aver inviato il progetto.
Da una prima analisi il problema credo derivi dal fato che lo script è di tipo "globale" e non locale sul sinottico, per cui il comando CloseSynoptic() non funziona. Purtroppo questo comando non prevede argomenti (cioè il sinottico da chiudere) perciò una soluzione è spostare questo script localmente nel sinottico (o il popup) che lo avvia.
Per fare ciò la prima cosa da fare è abilitare la possibilità di inserire script locali nel progetto. Per fare ciò:
- chiudere il progetto Movicon
- entrare nella cartella del progetto e cerca il file "nomeprogetto".costraints
- aprire tale file con un editor di testo
- cercare la voce <AllowScriptInScreen>0</AllowScriptInScreen> e portare il valore a 1 --> <AllowScriptInScreen>1</AllowScriptInScreen>
- salvare e chiudere il file
- riaprire il progetto Movicon
A questo punto sul sinottico desiderato sarà possibile inserire codice script selezionando il pulsante desiderato e usando l'evento "Click":
ScriptOnClick.png
Una alternativa possibile da provare nè che nello script globale, invece di usare il comando CloseSynoptic() si usi quello per cambiare (caricare) un sinottico diverso con questi comandi:

SetVariableValue("_SysVar_:ScreenToLoad", IDSinottico)
'Wait 1
SetVariableValue("_SysVar_:StrobeLoadScreen", 1)
'Wait 1

Questi comandi prevedono che ogni sinottico esistente nel progetto abbia un proprio ID univoco (che si passerà alla variabile IDSinottico):
ID_Sinottico.png
You do not have the required permissions to view the files attached to this post.
Marco
Posts: 34
Joined: 05/05/2019, 14:40

Re: Chiudere sinottico con Basic Script

Post by Marco »

Buongiorno,

Per prima cosa vi ringrazio moltissimo della risposta, che mi è stata di grande aiuto soprattutto per poter associare uno script ad un sinottico o ad un pulsante.

Ho provato con il primo metodo e purtroppo al primo tentativo non mi funzionava. In pratica la funzione CloseSynoptic() riuscivo ad usarla solo all'interno di uno script associato al sinottico che volevo chiudere e non se contenuta in uno script associato al pulsante. Per farla funzionare ho creato uno script su "evento variabile" associato al sinottico da chiudere che, quando la variabile assume valore True modificata all'interno dello script globale, chiama la funzione CloseSynoptic() e chiude il sinottico.

Il secondo metodo funziona senza problemi a patto che il sinottico da chiudere non sia aperto come "Modale" atrimenti rimane sempre in primo piano.

Vi ringrazio ancora per l'aiuto e cordialmente saluto.
Post Reply