DEFDIAGRAMENTITY
Consente di definire un grafico (relazionale o non relazionale) basato sulla visualizzazione di entità.
La fonte dati del controllo è una collezione di tipo BC_VID_DGR_ENT, che a sua volta contiene una seconda collezione di tipo BC_VID_DGR_ENT_ELEM per ogni entità.
- BC_VID_DGR_ENT rappresenta l'entità
- BC_VID_DGR_ENT_ELEM rappresenta i singoli elementi dell'entità.
La modifica sulla collezione BC_VID_DGR_ENT (aggiunta o rimozione degli elementi) si riflette automaticamente sul componente grafico.
Nel caso in cui si debbano eseguire modifiche massive è possibile sospende l'aggiornamento del controllo video tramite la specifica '@SUSPENDEDVIDREFRESH.
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| NOME | Intero | ||||
| RET | |||||
| POS | |||||
| DIM | |||||
| ID | Stringa | ||||
| COLLEZIONEDATI | Collezione di classi | ||||
| MODIFICABILE | Booleano | ||||
| AZIONE | Azione | ||||
| AZIONECLICK | Azione | ||||
| AZIONEESPANDI | Azione | ||||
| DETTAGLIOCONNESSIONE | Azione | ||||
| MULTISELEZIONE | Enumerazione | ||||
| ORIENTAMENTO | Enumerazione | ||||
| VISUALIZZAZIONE | Enumerazione | ||||
| TIPOLOGIA | Enumerazione | ||||
| GRID | |||||
| STACK | |||||
| EXPANDER | |||||
| DOCK | |||||
| PERSONALIZZABILE | Intero | ||||
| LINKTO |
NOME
Consente di definire il nome del controllo.
RET
Consente di definire le coordinate della cella del reticolo da associare al controllo, allo scopo di gestire gli spostamenti sulla videata.
POS
Consente di definire la posizione del controllo rispetto al contenitore.
DIM
Dimensione del controllo.
Consente di indicare l'altezza e la larghezza. Per entrambi è possibile specificare l'unità di misura.
DIM[Altezza [UnitàMisura], Larghezza [UnitàMisura]]
L'unità di misura può essere: 'C' per il posizionamento a caratteri e 'P' per il posizionamento in pixel. L'indicazione è opzionale, se omesso si assume 'C' come default.
ID
Consente di definire l'identificativo univoco del controllo.
Viene utilizzato dall'ambiente per gestire le personalizzazioni effettuate durante l'esecuzione del programma.
COLLEZIONEDATI
Consente di definire le entità da visualizzare.
MODIFICABILE
Consente di definire se il diagramma è modificabile.
AZIONE
Consente di definire la callback richiamata quando un'entità viene selezionata.
AZIONECLICK
Consente di definire la callback richiamata dal click singolo su un'entità.
AZIONEESPANDI
Consente di definire la callback richiamata quando un'entità viene espansa.
DETTAGLIOCONNESSIONE
Consente di definire la callback richiamata quando viene eseguita una richiesta di dettagli sulla connessione.
MULTISELEZIONE
Consente di abilitare o disabilitare la multiselezione sul diagramma (solo per gli elementi delle entità).
Parametro enumerato, può assumere i seguenti valori:
| Valore | Descrizione |
|---|---|
DIAGRAMMA_NESSUNA | |
DIAGRAMMA_TOTALE | |
DIAGRAMMA_ENTITA |
ORIENTAMENTO
Consente di definire l'orientamento del diagramma.
Parametro enumerato, può assumere i seguenti valori:
| Valore | Descrizione |
|---|---|
DIAGRAMMA_VERTICALE | Ogni elemento figlio viene inserito su una nuova riga all'interno del diagramma, le entità figlie dello stesso elemento sono posizionati sulla medesima ma riga su colonne differenti |
DIAGRAMMA_ORIZZONTALE | Ogni elemento figlio viene inserito su una nuova colonna all'interno del diagramma, le entità figlie dello stesso elemento sono posizionati sulla medesima ma colonna su righe differenti. |
VISUALIZZAZIONE
Consente di definire la dimensione iniziale e il layout delle entità.
Parametro enumerato, può assumere i seguenti valori:
| Valore | Descrizione |
|---|---|
DIAGRAMMA_PICCOLO | 150*50 pixel |
DIAGRAMMA_MEDIO | 150*120 pixel |
DIAGRAMMA_GRANDE | 150*180 pixel |
TIPOLOGIA
Consente di definire la tipologia del diagramma da visualizzare.
Parametro enumerato, può assumere i seguenti valori:
| Valore | Descrizione |
|---|---|
DATABASE | Definisce un diagramma di tipo database |
ENTITA | Definisce un diagramma di tipo entita |
GRID
Consente di definire l'attached property riferita ad un pannello grid.
STACK
Consente di definire l'attached property riferita ad un pannello stack.
EXPANDER
Consente di definire l'attached property riferita ad un pannello expander.
DOCK
Consente di indicare se il controllo deve occupare tutto lo spazio del DockPanel in verticale e/o in orizzontale.
PERSONALIZZABILE
Consente di definire se il controllo grafico è personalizzabile dall'utente in fase di runtime.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
LINKTO
Consente di definire un legame tra due controlli esistenti all'interno della stessa videata.
Metodi
| Metodo | Descrizione | SMP |
|---|---|---|
| AdattaEntita | Adatta la dimensione dell'entità al numero di campi presenti | |
| AggiornaEntita | Aggiorna l'elemento grafico con l'idenitificativo passato | |
| Aggiungi_if | Aggiunge un blocco if | |
| Aggiungi_switch | Aggiunge un blocco switch al diagramma | |
| Aggiungi_While | Aggiunge un blocco while al diagramma | |
| Allinea | Allinea i nodi selezionati | |
| AnteprimaPagina | Mostra un'anteprima di stampa della pagina. Le dimensioni sono definite dagli argomenti del metodo | |
| Copia_Su_Clipboard | Copia il diagramma in memoria | |
| Distribuisci | Imposta la stessa dimensione a tutti gli elementi attualmente selezionati | |
| Get_Campi_Selezionati | Restituisce la classe riferita al campo selezionato | |
| Get_Elemento | Restituisce la classe riferita all'elemento selezionato | |
| Get_Entita_Connessione | Restituisce le entita che fanno parte della connessione selezionata (di cui si sta richiedendo il dettaglio) | |
| Get_Num_Entita_Connessione | Restituisce il numero dei link attualmente selezionati | |
| Get_Numero_Campi_Selezionati | Restituisce il numero di entità selezionate | |
| Get_Numero_Campi_Selezionati_Totali | Restituisce il numero di entità selezionate | |
| Get_Numero_Elementi | Restituisce il numero di entità selezionate | |
| Get_Selezionati | Restituisce la lista degli identificativi di tutti gli elementi selezionati | |
| NascondiAnteprimaPagina | Nasonde l'anteprima di stampa della pagina. | |
| PosizionaSu | Posizionati su un dato elemento all'interno del diagramma | |
| PosizionaSuCampo | Posizionati sul campo di un dato elemento all'interno del diagramma | |
| Redo | Applica un'operazione precedentemente annullata | |
| Remove_Entita_Connessione | Rimuove il link attualmente selezionato | |
| Riposizionamento_Automatico | Riposiziona senza personalizzazioni tutti gli elementi del diagramma | |
| Salva_Immagine | Salvataggio del diagramma come immagine | |
| SET_AVANTI | Porta l'elemento selezionato in avanti di una posizione | |
| Set_Editabile | Definisce se il diagramma è modificabile o meno | |
| Set_Entita_Connessione | Modifica la connessione specifica | |
| SET_INDIETRO | Porta l'elemento selezionato indietro di una posizione | |
| Set_link_automatici | Indica se i link devono essere rivaluttati in modo automatico o meno | |
| Set_Paste_Mode | Definisce se il diagramma è in fase di incollaggio degli elementi | |
| SET_PRIMO_PIANO | Porta l'elemento selezionato in primo piano | |
| SET_SULLO_SFONDO | Porta l'elemento selezionato sullo sfondo | |
| Set_Zoom | Imposta un fattore di zoom | |
| Stampa | Stampa diagramma | |
| StessaDimensione | Imposta la stessa dimensione a tutti gli elementi attualmente selezionati | |
| StileSfondo | Imposta lo stile dello sfondo | |
| TipoSfondo | Imposta il tipo di sfondo da applicare al diagramma | |
| Undo | Annulla l'operazione eseguita |
Esempi
Esempio definizione basedati
'@DEFVID DIM[35,140] NOME[Videata] ID["IDVIDEATA"] TIT["Titolo Videata"]
'@DEFGRIDPANEL NOME[GridPanel] ID["GridPanel"] _
RIGA[ALTEZZA[0.5] LAYOUT[#FISSO]] _
RIGA[ALTEZZA[34] LAYOUT[#FISSO]] _
RIGA[ALTEZZA[0.5] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[0.5] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[139] LAYOUT[#DINAMICO]] _
COLONNA[LUNGHEZZA[0.5] LAYOUT[#FISSO]]
'@DEFDIAGRAMENTITY NOME[DIAG] ID["IDDIAG"] RET[1,1] POS[1,1] DIM[10,150] _
ORIENTAMENTO[#DIAGRAMMA_VERTICALE] _
COLLEZIONEDATI[CollezioneDiagrammi] MODIFICABILE[0] _
VISUALIZZAZIONE[#DIAGRAMMA_PICCOLO] GRID[COL[2] RIGA[2]]
'@ENDGRIDPANEL NOME[GridPanel]
'@RUNVID
...
'@SRP Load()
InitDiagramma()
Return
...
'@SRP InitDiagramma()
Diagramma.Id="ABC0001"
Diagramma.Nome="Testata"
Diagramma.IdPadre=""
CollezioneElementi => Diagramma.Elem
CollezioneElementi.Clear()
Elemento.Clear():Elemento.Id="IDElemento":Elemento.Nome="Testata documento"
CollezioneElementi.AggiungiElemento(Elemento [INOUT])
CollezioneDiagrammi.AggiungiEntita(Diagramma [INOUT], BCTD_TAB_REL_CARDINALITA.UnoUno, "", #False, "", "Label_Start", "Label_End")
CollezioneElementi.Release()
Diagramma.Id="ABC9876"
Diagramma.Nome="Righe"
Diagramma.IdPadre="ABC0001"
CollezioneElementi => Diagramma.Elem
CollezioneElementi.Clear()
Elemento.Clear():Elemento.Id="IDElemento":Elemento.Nome="Righe corpo"
CollezioneElementi.AggiungiElemento(Elemento [INOUT])
CollezioneDiagrammi.AggiungiEntita(Diagramma [INOUT], BCTD_TAB_REL_CARDINALITA.UnoUno, "", #False, "", "Label_Start", "Label_End")
CollezioneElementi.Release()
Diagramma.Id="ABC9875"
Diagramma.Nome="Clienti"
Diagramma.IdPadre="ABC0001"
CollezioneElementi => Diagramma.Elem
CollezioneElementi.Clear()
Elemento.Clear():Elemento.Id="IDElemento":Elemento.Nome="Lista clienti"
CollezioneElementi.AggiungiElemento(Elemento [INOUT])
CollezioneDiagrammi.AggiungiEntita(Diagramma [INOUT], BCTD_TAB_REL_CARDINALITA.UnoUno, "", #False, "", "Label_Start", "Label_End")
CollezioneElementi.Release()
Return
Esempio definizione relazionale generico
'@DEFVID DIM[35,140] NOME[VideataDgmGenerico] ID["IDVIDEATA"] TIT["Titolo Videata"]
'@DEFGRIDPANEL NOME[GridPanelDgmGenerico] ID["GridPanel"] _
RIGA[ALTEZZA[0.5] LAYOUT[#FISSO]] _
RIGA[ALTEZZA[34] LAYOUT[#FISSO]] _
RIGA[ALTEZZA[0.5] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[0.5] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[139] LAYOUT[#DINAMICO]] _
COLONNA[LUNGHEZZA[0.5] LAYOUT[#FISSO]]
'@DEFDIAGRAMENTITY NOME[DIAGGenerico] ID["IDDIAG"] RET[1,1] POS[1,1] DIM[1,1] _
ORIENTAMENTO[#DIAGRAMMA_ORIZZONTALE] _
COLLEZIONEDATI[CollezioneDiagrammi] MODIFICABILE[1] _
AZIONE[GoSub DiagramCallBack] VISUALIZZAZIONE[#DIAGRAMMA_PICCOLO] _
GRID[COL[2] RIGA[2] COLDIN[1] RIGADIN[1]] TIPOLOGIA[#ENTITA]
'@ENDGRIDPANEL NOME[GridPanelDgmGenerico]
'@RUNVID
...
'@SRP Load1()
InitDiagrammaRelGenerico()
Return
...
'@SRP InitDiagrammaRelGenerico()
' Definizione stili
'@DEFSTYLE STILE["base"] COLORESFONDO[BIANCO] COLOREBORDO[NERO] DIMBORDO[1] COLORETESTO[NERO]
'@DEFSTYLE STILE["redline"] COLORESFONDO[ROSSO]
'@DEFSTYLE STILE["violetline"] COLORESFONDO[VIOLA]
'@DEFSTYLE STILE["yellowline"] COLORESFONDO[GIALLO]
' Definizione variabili per creazione diagrammi e elementi
DIM dgrId[STRING]
DIM dgrName[STRING]
DIM dgrParent[STRING]
DIM dgrColor[STRING]
DIM elemId[STRING]
DIM elemName[STRING]
' Creazione diagrammi
Diagramma.Clear()
CollezioneElementi => Diagramma.Elem
CollezioneElementi.Clear()
dgrId="IDDiagram1":dgrName="Ordine Cliente":dgrParent="":dgrColor="base"
elemId="1":elemName="2016.1.125 del 15/09/2016":AddElement(elemId, elemName)
elemId="2":elemName="Sistemi SpA" :AddElement(elemId, elemName)
AddDiagram(dgrId, dgrName, dgrParent, dgrColor)
CollezioneElementi.Release()
Diagramma.Clear()
CollezioneElementi => Diagramma.Elem
CollezioneElementi.Clear()
dgrId="IDDiagram2":dgrName="Ordine di Produzione":dgrParent="IDParent":dgrColor="base"
elemId="1":elemName="2016.1.1425 del 16/09/2016":AddElement(elemId, elemName)
elemId="2":elemName="Sistemi SpA" :AddElement(elemId, elemName)
AddDiagram(dgrId, dgrName, dgrParent, dgrColor)
CollezioneElementi.Release()
Return
...
'@SRP AddDiagram(DgrId[STRING] [IN], DgrName[STRING] [IN], DgrParent[STRING] [IN], DgrColor[STRING] [IN])
' Popolamento diagrammi
Diagramma.Id = DgrId
Diagramma.Nome = DgrName
Diagramma.IdPadre = DgrParent
Diagramma.Colori = DgrColor
CollezioneDiagrammi.AggiungiEntita(Diagramma [INOUT], BCTD_TAB_REL_CARDINALITA.UnoUno, DgrColor, #False, "", "Label_Start", "Label_End")
Return
...
'@SRP AddElement(ElemId[STRING] [IN], ElemName[STRING] [IN])
' Popolamento elementi
Elemento.Clear()
Elemento.Id = ElemId
Elemento.Nome = ElemName
CollezioneElementi.AggiungiElemento(Elemento [INOUT])
Return