DEFEDITMULTISEL
Consente di definite un edit di multiselezione.
Il controllo permette di inserire più campi testuali, identificandoli tramite le loro chiavi o la loro descrizione e di selezionarli tramite l'autocompletamento o la ricerca.
La query di lookup effettua la decodifica del testo applicativo esposto all'utente.
Per i prodotti destinati anche alla piattaforma desktop, è necessario porre attenzione ad alcuni accorgimenti per quanto riguarda il layout della videata. Per un corretto comportamento grafico del controllo, è necessario che:
- La riga che contiene l'edit multisel deve avere il DIMENSIONAMENTOAUTOMATICO
- Il pannello contenente l'edit multisel deve avere il DIMENSIONAMENTOAUTOMATICO, ricordandosi che il meccanismo va a ridurre la dimensione di partenza e non aumenta mai.
- Non inserire LAYOUT[#DINAMICA] o ALTEZZADINAMICA[1] onde evitare meccanismi aggiuntivi che implicano il dimensionamento partendo dal controllo
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| NOME | Intero | ||||
| RET | |||||
| POS | |||||
| DIM | |||||
| ID | Stringa | ||||
| COLLEZIONESELEZIONATI | Collezione di classi | ||||
| COLLEZIONEDATI | Collezione di BC_DA_VALUE_OPTION | ||||
| COLLEZIONECHIAVI | Collezione di BC_DA_VALUE | 30.7 | |||
| OGGETTOCORRENTE | Classe BC_DA_VALUE | 30.7 | |||
| VAR | Variabile | 32.3 | |||
| POSTDERIVAZIONEDATI | Azione | 32.0 | |||
| RIC | |||||
| OBBLIGATORIO | Condizione | ||||
| COMMENTO | Variabile | ||||
| SUGGERIMENTO | Stringa | ||||
| COMBO | Intero | ||||
| CHECKBOX | Intero | 31.3 | |||
| VARENUMERATO | Variabile | ||||
| IDQUERY | Variabile | ||||
| AUTOCOMPLETAMENTO | Numerico | 30.7 | |||
| AZIONE | Azione | ||||
| IDMENU | Stringa | ||||
| NASCOSTO | Condizione | ||||
| DISABILITATO | Condizione | ||||
| LOOKUP | 30.7 | ||||
| OUTPUT | Condizione | 29.3 | |||
| GRID | |||||
| PERSONALIZZABILE | Intero | ||||
| LINKTO | |||||
| DETTAGLIO | Booleano | 31.1 |
RET
Coordinate della cella del reticolo da associare al controllo.
Queste informazioni hanno lo scopo di inserire il controllo nella logica di gestione degli spostamenti sulla videata.
POS
Posizionamento del controllo.
Consente di indicare la riga e la colonna. Per entrambi è possibile specificare l'unità di misura.
POS[RigaVid [UnitàMisura], ColonnaVid [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.
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
Definisce la variabile o la costante di programma che contiene l'identificatore univoco del controllo.
Viene utilizzato dall'ambiente per gestire le personalizzazioni effettuate durante l'esecuzione del programma.
COLLEZIONESELEZIONATI
Elenco dei valori selezionati nel contesto.
COLLEZIONEDATI
Elenco dei valori da visualizzare.
La collezione ad oggi è gestita come datasource in presenza del parametro COMBO.
Il tipo del controllo viene desunto dal primo elemento presente nella COLLEZIONEDATI.
L'utilizzo del parametro esclude l'utilizzo del parametro IDQUERY
COLLEZIONECHIAVI
Elenco delle chiavi dei record da visualizzare.
OGGETTOCORRENTE
Oggetto con la chiave del dato attualmente selezionato.
VAR
Oggetto contenente la serializzazione delle chiavi di tipo BC_STRING degli oggetti inseriti nel controllo
L'utilizzo del parametro esclude l'utilizzo dei parametri: COLLEZIONESELEZIONATI, COLLEZIONECHIAVI
POSTDERIVAZIONEDATI
Callback da eseguire subito dopo quella di derivazione dati del modello.
RIC
Attributo di definizione della ricerca
OBBLIGATORIO
Consente di indicare l'obbligatorietà del campo.
SUGGERIMENTO
Consente di visualizzare all'interno del campo di edit un suggerimento sul come o sul perché il campo deve essere compilato.
La stringa automatica non verrà mai restituita al programma BC e sparirà automaticamente appena il campo acquisirà il fuoco.
COMBO
Consente di definire l'edit multiselezione come combo con check di multiselezione.
CHECKBOX
Consente di attivare l'esposizione con checkbox su tutti gli elementi contenuti in COLLEZIONEDATI.
VARENUMERATO
Variabile tipizzata associata ad un tipo dato avente valori ammessi o query di autocompletamento.
L'utilizzo del parametro esclude l'utilizzo dei parametri: IDQUERY, COLLEZIONEDATI
IDQUERY
Identificativo della query di estrazione dati per l'autocompletamento.
AUTOCOMPLETAMENTO
Consente di associare una query da utilizzare per gestire l'autocompletamento.
AZIONE
Azione da richiamare in seguito al doppio click eseguito su un record.
IDMENU
Consente di definire il menu contestuale da visualizzare da tasto destro su ogni singolo elemento presente nell'edit.
NASCOSTO
Permette di indicare la condizione per nascondere il controllo.
La condizione viene applicata solo in fase di creazione della videata (in contesto desktop).
DISABILITATO
Permette di indicare la condizione per disabilitare il controllo.
LOOKUP
Consente di definire la query di lookup che estrae la decodifica della chiave e indica il testo che deve essere visualizzato.
OUTPUT
Permette di indicare la condizione per rendere in output il controllo.
GRID
Attached Property per pannello di tipo Grid
PERSONALIZZABILE
Consente di definire l'oggetto grafico come 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 oggetti video.
DETTAGLIO
Consente di indicare il campo di edit come visualizzabile tramite 'Mostra di più'.
Esempi
Definizione controllo di base
DIM objCorrente [CLASSE[BC_DA_VALUE]]
DIM collDati [CLASSE[BC_DA_VALUE] COLLEZIONE]
'@DEFVID DIM[8,90] TIT["Videata"] ID["IDVideata"]
'@DEFGRIDPANEL NOME[GridPanel1] ID["IDGridPanel1"] DIMENSIONAMENTOAUTOMATICO[1] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO] ] _
RIGA[ALTEZZA[1] LAYOUT[#DINAMICO] DIMENSIONAMENTOAUTOMATICO[1] ] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO] ] _
RIGA[ALTEZZA[1] LAYOUT[#DINAMICO] DIMENSIONAMENTOAUTOMATICO[1] ] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO] ] _
COLONNA[LUNGHEZZA[1] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[30] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[1] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[50] LAYOUT[#DINAMICO]]
'@DEFLABEL VAR["Multiselezione"] ID["IDLabel_1"] DIM[1,1] POS[1,1] GRID[COL[2] RIGA[2] COLDIN[1] RIGADIN[1]]
'@DEFEDITMULTISEL NOME[TestMul] _
COLLEZIONECHIAVI[CollDati] _
LOOKUP[QUERY[idQueryLookup] ALIAS["AliasColonnaCalcolataQueryLookup"]] _
AUTOCOMPLETAMENTO[IDQUERY[idQuery]] _
OGGETTOCORRENTE[objCorrente] _
POS[1,1] RET[1,1] DIM[1,1] _
GRID[RIGA[2] COL[4] COLDIN[1] RIGADIN[1]]
'@ENDGRIDPANEL NOME[GridPanel1]
'@RUNVID
Definizione sub di ricerca
DIM objCorrente [CLASSE[BC_DA_VALUE]]
DIM collDati [CLASSE[BC_DA_VALUE] COLLEZIONE]
'@DEFVID DIM[8,90] TIT["Videata"] ID["IDVideata2"]
'@DEFGRIDPANEL NOME[GridPanel2] ID["IDGridPanel2"] DIMENSIONAMENTOAUTOMATICO[1] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO] ] _
RIGA[ALTEZZA[1] LAYOUT[#DINAMICO] DIMENSIONAMENTOAUTOMATICO[1] ] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO] ] _
RIGA[ALTEZZA[1] LAYOUT[#DINAMICO] DIMENSIONAMENTOAUTOMATICO[1] ] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO] ] _
COLONNA[LUNGHEZZA[1] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[30] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[1] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[50] LAYOUT[#DINAMICO]]
'@DEFLABEL VAR["Multiselezione"] ID["IDLabel_1"] DIM[1,1] POS[1,1] GRID[COL[2] RIGA[2] COLDIN[1] RIGADIN[1]]
'@DEFEDITMULTISEL NOME[TestMul2] _
COLLEZIONECHIAVI[CollDati] _
LOOKUP[QUERY[idQueryLookup] ALIAS["AliasColonnaCalcolataQueryLookup"]] _
AUTOCOMPLETAMENTO[IDQUERY[idQuery]] _
OGGETTOCORRENTE[objCorrente] _
RIC[Ricerca()] _
POS[1,1] RET[1,1] DIM[1,1] _
GRID[RIGA[2] COL[4] COLDIN[1] RIGADIN[1]]
'@ENDGRIDPANEL NOME[GridPanel2]
'@RUNVID
...
'@SRP Ricerca()
DIM codice[STRING]
DIM descr[STRING]
DIM code[CLASSE[BC_DA_VALUE]]
DIM selectedColl[CLASSE[BC_DA_VALUE] COLLEZIONE]
'@DEFVID DIM[20,50] TIT["Griglia avanzata"] TOOLBAR[IDTOOLBAR["ToolBar"]]
'@DEFTOOLBAR IDTOOLBAR["ToolBar"] _
BOTTONE[IDBOTTONE["SYS_EXIT"] TITOLO["Abbandona"] AZIONE[Abbandona()] ACCELERATORE["F1"]] _
BOTTONE[IDBOTTONE["SYS_OK"] TITOLO["Conferma"] AZIONE[Conferma(code [INOUT], selectedColl [INOUT])] ACCELERATORE["F10"]] _
'@DEFGRIDPANEL NOME[GridPanelRicerca] ID["IDGridPanelRicerca"] TIT["Caricamento dati da query"] _
LAYOUTTIT[STILE[#INTESTAZIONE_VIDEATA] SOTTOTITOLO["Interfaccia Utente - UI Automation"] ] _
COLONNA[LUNGHEZZA[0.5] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[49] LAYOUT[#DINAMICO]] _
COLONNA[LUNGHEZZA[0.5] LAYOUT[#FISSO]] _
RIGA[ALTEZZA[26.5] LAYOUT[#DINAMICO]]
'@DEFGRIDADV NOME[GridADV] ID["GRID_QRY"] INSRIGHE[InserimentoRighe()] RET[1,1] POS[1,1] MULTISEL[1] _
GRID[COL[2] RIGA[1] COLDIN[1] RIGADIN[1]]
'@DEFCOLGRIDADV NOMEGRIGLIA[GridADV] ID["UNO"] VAR[codice] LARG[10] TIT["Codice"] CELLA[FMT[TESTO]]
'@DEFCOLGRIDADV NOMEGRIGLIA[GridADV] ID["DUE"] VAR[descr] LARG[30] TIT["Descrizione"] CELLA[FMT[TESTO]] LARGDINAMICA[1]
'@ENDGRIDPANEL NOME[GridPanelRicerca]
'@RUNVID
Return
...
'@SRP Conferma(code[CLASSE[BC_DA_VALUE]] [INOUT], selectedColl[CLASSE[BC_DA_VALUE] COLLEZIONE] [INOUT])
DIM numeroRigheSel[INT] = GridADV.Get_Numero_Righe_Sel()
For I[INT]=1 To numeroRigheSel
'@GETROWGRIDADV NOMEGRIGLIA[GridADV] SEL[I]
code.Clear()
code.SETSTRING("Stringa")
selectedColl.AggiungiValore(code [INOUT])
Next
Return
Definizione sub per doppio click
DIM objCorrente [CLASSE[BC_DA_VALUE]]
DIM collDati [CLASSE[BC_DA_VALUE] COLLEZIONE]
DIM var[STRING]
'@DEFVID DIM[8,90] TIT["Videata"] ID["IDVideata3"]
'@DEFGRIDPANEL NOME[IDGRIDPANEL] ID["g1"] DIMENSIONAMENTOAUTOMATICO[1] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO] ] _
RIGA[ALTEZZA[1] LAYOUT[#DINAMICO] DIMENSIONAMENTOAUTOMATICO[1] ] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO] ] _
RIGA[ALTEZZA[1] LAYOUT[#DINAMICO] DIMENSIONAMENTOAUTOMATICO[1] ] _
RIGA[ALTEZZA[1] LAYOUT[#FISSO] ] _
COLONNA[LUNGHEZZA[1] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[30] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[1] LAYOUT[#FISSO]] _
COLONNA[LUNGHEZZA[50] LAYOUT[#DINAMICO]]
'@DEFLABEL VAR["Multiselezione"] ID["IDLabel_1"] DIM[1,1] POS[1,1] GRID[COL[2] RIGA[2] COLDIN[1] RIGADIN[1]]
'@DEFEDITMULTISEL NOME[TestMul3] _
COLLEZIONECHIAVI[collDati] _
LOOKUP[QUERY[idQueryLookup] ALIAS["DES"]] _
AUTOCOMPLETAMENTO[IDQUERY[idQuery]] _
OGGETTOCORRENTE[objCorrente] _
AZIONE[Azione(var, objCorrente [INOUT])] _
POS[1,1] RET[1,1] DIM[1,1] _
GRID[RIGA[2] COL[4] COLDIN[1] RIGADIN[1]]
'@DEFLABEL VAR["Edit"] ID["label_Edit"] DIM[1,1] POS[1,1] GRID[COL[2] RIGA[4] COLDIN[1] RIGADIN[1]]
'@DEFEDIT VAR[var] ID["ID"] FMT[TESTO] DIM[1,1] POS[1,1] RET[4,4] GRID[COL[4] RIGA[4] COLDIN[1] RIGADIN[1]]
'@ENDGRIDPANEL NOME[IDGRIDPANEL]
'@RUNVID
...
'@SRP Azione(var[STRING] [IN], objCorrente[CLASSE[BC_DA_VALUE]] [INOUT])
objCorrente.GETBCSTRING()
If var <> "" Then
'@DEFVIDMSG MSG[var]
EndIf
Return