Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Rsview32 <-> Vba <-> Activex - Come riferire un oggetto activeX da VBA di RsView32


Messaggi consigliati

Inserito:

In una pagina di un progetto RsView32 ho inserito un oggetto activeX (ListBox).

Sto scrivendo una routine con VBA di RsView per accedere questo oggetto lista, e

vorrei definire una variabile da associare al mio oggetto lista tramite l'istruzione SET.

In questo modo potrei utilizzare la variabile così definita per eseguire le operazioni

sulla lista ... ma non ci riesco! Non so come riferire l'oggetto activeX dal codice VBA.

Qualcuno sa dirmi se quello che cerco di fare è possibile, e come ?

L'unica alternativa che conosco per accedere a metodi e proprietà di oggetti activeX è l'uso

della istruzione INVOKE, che vorrei evitare.

ciao, e GRAZIE !!

Mauro.


Inserita: (modificato)

Ciao,

Dunque, permesso che non ho ancora utilizzato RSView32, provo a darti un aiuto stimolando la tua immaginazione ... in linea di massima dalla esperienza su altri ambienti SCADA, dovrebbe presa poco essere cosi:

Una volta incastonato (embedded) l'oggetto sulla pagina video contenitora (previa installazione del activeX nel ambiente RSView32) .. fai, click col pulsante destro del mouse sull'oggetto, box ActiveXName properties, sul tab properties vedi elencata la lista per i property names, range, tag type e l'associated tag.

Suponiamo che sotto i property names hai una vaiabile nominata Var1, del tipo Real... allora clickando sul correspondente box per l'associated tag ti apparira' il rettangolino del browser.... che ti portera' al tagname Dictionary. Seleziona una tag name dello stesso tipo Real, se non e' sulla lista, dovresti crearlo previamente.

Una volta selezionato il tag, a fianco ti apparira'il simbolo per l'associazione della direzione per quella variabile (definita in fase di costruzione del activeX).

Per esempio:

Nome del ActiveX : OggettoCtrl.

OggettoCtrl properties box ->

Properties tab ->

Property  Range     Tag type   Associated Tag
-------------------------------------------
Var1      100.00    Real       <-> TagVar1

Il simbolo <-> (association direction) per esempio sta'a indicare che il tagname TagVar1 scrive e legge sulla property Var1.Questo viene definito nell'oggetto activeX.

Un altra strada di associazione sarebbe:

TagVar1=#OggettoCtrl.Var1; // per leggere dal activeX

#OggettoCtrl.Var1= TagVar1; // per scrivere nel activeX

Infatti, un activeX scripting reference ha 4 parti.

1- il segno[#] che indica il riferimento a una variabile activeX

2- nome del controllo

3- il delimeter character, un periodo [.] che separa il nome del controllo dall'ultima parte

4- Appunto l'ultima parte cioe' la propieta', metodo o parammetro evento.

Vedi se questa forma puo' fare il caso tuo.. e fammi sapere dei tuoi progressi riusciti in merito comunque , ti sarei grato per questa info, visto che ne sarei interessato anch'io.

Atrimenti, ti chiedo delle scuse e...come non detto. :)

Modificato: da Savino
Inserita:

Ciao Savino,

In effetti l'associazione tra Tag dell'ambiente RsVew32 e proprietà dell'oggetto activeX funziona come dici tu.

Io ho dei problemi invece (mi spiace di non essere stato abbastanza chiaro prima) con accesso ai metodi dell'oggetto activeX.

Vorrei ad esempio aggiungere/rimuovere elementi dalla mia listBox (di questo si tratta) con i metodi AddItem, DeleteItem, etc.

Se il nome dell'oggetto activeX nell'ambiente RsView è Pippo, speravo di poterne richiamare i metodi con una sintassi di questo tipo:

-> Pippo.AddItem(" ... ")

Ma questo non funziona. E non funziona nemmeno con la dichiarazione di un oggetto di tipo ListBox all'interno della routine VBA poi associato a Pippo:

-> Dim ListaReference as ListBox

-> Set ListaReference = Pippo

-> ListaReference.AddItem(" .... ")

L'unico sistema che ho trovato finora è quello di utilizzare l'istruzione "Invoke" che fa parte della lista di comandi Rsview32, richiamata dalla mia routine VBA in questo modo:

-> gCommand.Execute "Invoke Menu.ListaConservazioni.AddItem(""" & varName & """)"

Forse si tratta di una limitazione voluta, inserita in Rsview per controllare in qualche modo l'accesso al "modo esterno".

Al momento anche il supporto tecnico Rockwell non mi ha dato ancora nessun chiarimento.

Ciao. Mauro.

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...