DEFLOADMACHINE
Permette di configurare il controllo grafico destinato a visualizzare e gestire la distribuzione dei carichi di lavoro di uno o più ordini di produzione su una o più risorse di produzione.
L'oggetto di controllo carichi prevede alcuni metodi per interagire con il controllo video senza dover rieseguire il codice di definizione della videata.
L'unico vincolo per l'utilizzo dei metodi è quello di utilizzarli all'interno del sorgente in cui è stato definito il controllo grafico.
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| NOME | Intero | ||||
| RET | |||||
| POS | |||||
| DIM | |||||
| ID | Stringa | ||||
| COLLEZIONEDATI | Collezione di classi | ||||
| DROP | |||||
| AZIONE | Azione | ||||
| AZIONECLICK | Azione | ||||
| AZIONEDOPPIOCLICK | Azione | 32.4 | |||
| AZIONERESIZE | Azione | 30.7 | |||
| AZIONETASK | Azione | ||||
| CONTROLLODROP | Azione | ||||
| MODIFICABILE | Intero | ||||
| DOPPIOCLICK | Azione | ||||
| LAYOUT | Enumerazione | 32.0 | |||
| AZIONEESPANDI | Azione | ||||
| DETTAGLIOCONNESSIONE | Azione | ||||
| GRID | |||||
| STACK | |||||
| EXPANDER | |||||
| DOCK | |||||
| LINKTO |
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.
COLLEZIONEDATI
Elenco entità da rappresentare.
Collezione di BC_VID_LM_RESOURCE.
DROP
Azione da eseguire nel caso in cui venga iniziata un'operazione di DRAG di Windows (esempio: trascinamento di una riga della griglia).
Consente di indicare:
- Il nome dell'oggetto (Identificativo) da associare alle informazioni che vengono trasmesse, in modo che possano essere riconosciute dal controllo/programma di destinazione
- Una callback di programma che permette di specificare le informazioni in base allo stato corrente del controllo (valori della riga corrente della griglia ad esempio), mediante l'impiego della funzione @SETDRAGOBJEC
La funzione definisce la sorgente dati (le informazioni usate nel trascinamento come origine).
La destinazione per un programma BC è definita mediante il parametro DROP ('@GETDROPPEDOBJECT ).
AZIONE
Callback richiamata alla selezione di un'entità
AZIONECLICK
Callback richiamata al singolo click su un'entità.
AZIONEDOPPIOCLICK
Callback richiamata in seguito al doppio click su una risorsa senza selezionare un task
AZIONERESIZE
Callback richiamata al ridimensionamento di un'entità.
AZIONETASK
Callback richiamata alla modifica di un task
CONTROLLODROP
Callback richiamata subito dopo aver effettuato il DROP di un task.
All'interno della callback è necessario confermare i dati del DROP, riportando le proprietà del task rilasciato all'interno della collezione dati.
MODIFICABILE
Abilitazione modifica risorsa di produzione ed orario di inizio delle fasi
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
DOPPIOCLICK
Callback richiamata dal doppio click su un'entità
LAYOUT
Layout della rappresentazione grafica
Parametro enumerato, può assumere i seguenti valori:
| Valore | Descrizione |
|---|---|
DEFAULT | Sfondo con gradient. Dimensione BC 1.1 righe |
TRASPORTI | Nessuno sfondo font più grande. Dimensione BC 1.6 righe senza sottotitolo, 2.7 righe con sottotitolo |
AZIONEESPANDI
Callback richiamata dall'espansione di un'entità
DETTAGLIOCONNESSIONE
Callback richiamata alla richiesta di dettaglio sulla connessione
EXPANDER
Attached Property per pannello di tipo Expander
DOCK
Consente di indicare se l'oggetto deve occupare tutto lo spazio del DockPanel in verticale e/o in orizzontale (possono essere indicati entrambi).
LINKTO
Consente di creare un legame tra due controlli esistenti all'interno della stessa videata.
Metodi
| Metodo | Descrizione | SMP |
|---|---|---|
| Abilita_Multiselezione | Imposta la possibilità di selezionare più fasi in contemporanea. Default: true | |
| Add_TaskSelezionato | Aggiunge un task alla lista di quelli selezionati | |
| Get_AmpiezzaStepDettaglio | Restituisce il numero di pixel minimo di un intervallo temporale sopra il qule vengono mostrati i dettagli grafici. | |
| Get_DataCorrente | Restituisce la data selezionata correntemente | |
| Get_NumTaskSelezionati | Restituisce il numero degli elementi selezionati | |
| Get_OraCorrente | Restituisce l'ora selezionata correntemente | |
| Get_OreIndisponibilitaDettaglio | Restituisce il numero di ore della durata delle indisponibilità al di sopra della quale vengono mostrati sempre i dettagli grafici. | |
| Get_RisorsaCorrente | Restituisce il record della risorsa corrente | |
| Get_RisorsaDrop | Restituisce il record della risorsa corrente | |
| Get_RisorsaPrecedente | Restituisce il record della risorsa precedente | |
| Get_TaskCorrente | Restituisce il record del task selezionato correntemente | |
| Get_TaskDrop | Restituisce la stringa della risorsa corrente | |
| Get_TaskResized | Restituisce la reference al task ridimensionato | |
| Get_TaskSelezionati | Restituisce la lista degli identificativi di tutti i task selezionati | |
| Get_Zoom | Restituisce il livello dello zoom | |
| Is_TaskSelezionato | Restituisce l'informazione se il task indicato è selezionato o meno | |
| Multiselezione_in_corso | Ritorna l'informazione se al momento l'utente sta effettuando una multiselezione | |
| Remove_TaskSelezionato | Rimuove un task dalla lista di quelli selezionati | |
| Set_AmpiezzaStepDettaglio | Indica il numero di pixel minimo di un intervallo temporale sopra il quale vengono mostrati i dettagli grafici. | |
| Set_Data | Definisce l'intervallo da visualizzare | |
| Set_Dettaglio | Definisce se le informazioni mostrate dal controllo sono dettagliate o meno. 0: Sintetico - 1: Dettagliato | |
| Set_Intervallo | Definisce l'intervallo orario per ogni giornata | |
| Set_MostraFigli | Definisce se le visualizzare i figli dei task. 0: Nascondi - 1: Mostra solo selezionata | |
| Set_MostraParalleli | Definisce se le visualizzare i task in parallelo. 0: Nascondi - 1: Mostra solo selezionata | |
| Set_MostraPrecedenze | Definisce se le visualizzare le precedenze dei task. 0: Nascondi - 1: Mostra solo selezionata | |
| Set_Mouse_Zoom_step | Definisce lo step con il quale effettuare lo zoom tramite la rotella del mouse | |
| Set_OreIndisponibilitaDettaglio | Indica il numero di ore della durata delle indisponibilità al di sopra della quale vengono mostrati sempre i dettagli grafici. | |
| Set_Scala | Definisce la scala, espressa in minuti di discretizzazione dell'asse temporale | |
| Set_TaskSelezionato | Evidenzia il task selezionato | |
| Set_Zoom | Definisce lo zoom della scala dei tempi | |
| Vai_a_data | Imposta la data sulla quale centrare la visualizzazione | |
| Vai_a_risorsa | Imposta la risorsa sulla quale centrare la visualizzazione | |
| Visualizza_giorni | Imposta il numero di giorni da visualizzare in una schermata |
Esempi
Definizione semplice
'@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]]
'@DEFLOADMACHINE NOME[LOAD] ID["LOAD"] _
POS[1,1] RET[1,1] DIM[1,1] _
COLLEZIONEDATI[ResourceCollection] _
AZIONE[ChangeTask()] _
GRID[COL[2] RIGA[2] COLDIN[1] RIGADIN[1]]
'@ENDGRIDPANEL NOME[GridPanel]
'@RUNVID
...
'@SRP Load()
'@DEFSTYLE STILE["Finito"] COLOREBORDO[VERDE] DIMBORDO[1]
'@DEFSTYLE STILE["Bloccato"] COLOREBORDO[ROSSO] DIMBORDO[1]
'@DEFSTYLE STILE["Normale"] COLOREBORDO[GIALLO] DIMBORDO[1]
GoSub DefResources
Return
...
'@SR DefResources
DIM resource[CLASSE[BC_VID_LM_RESOURCE]] ' Singola resource
DIM task[CLASSE[BC_VID_LM_TASK]] ' Singola task
DIM message[CLASSE[BC_VID_ERROR]] ' message di errore
DIM Schedule[CLASSE[BC_VID_LM_SCHEDULE] COLLEZIONE] ' Schedule del carico macchine
DIM SingolaSchedule[CLASSE[BC_VID_LM_SCHEDULE]] ' Singola schedule
DIM currDate[DATE] = BCSystemInfo.GetDate()
resource.Clear()
ResourceCollection.Clear()
'Definizione reparto meccanico
resource.Id="RepMeccanico" ' ID del reparto
resource.Riga1="Reparto Meccanico" ' Nome reparto
resource.Contask=#FALSE ' Non può avere task, solo la Riga1 verrà visualizzata
resource.Stato=5 ' Nessuno stato
ResourceCollection.AddResource(resource [INOUT], message [OUT]) ' Aggiunge alla collezione
resource.Clear()
'Definizione taglialegna
resource.Id="Taglialegna" ' ID della resource
resource.Riga1="Taglialegna" ' Nome della resource
resource.Riga2="COMAP evolution SD 100" ' Descrizione resource
resource.Riga3="Reparto Meccanico " ' Nome del reparto (solo mostrato a video)
resource.Padre="RepMeccanico" ' Nome del reparto (usato per collegare la resource al reparto)
resource.Stato = 0 ' Stato 0 = OK
'Definizione task taglia assi
task.Id="TagliaAssi" ' ID della task
task.Riga1="Taglia assi quercia" ' Riga 1 - Nome
task.Riga2="Taglia 200 assi di quercia 20x30x10cm" ' Riga 2 - Descrizione
task.Riga3="Reparto meccanico" ' Riga 3 - reparto
task.Durata=4320 ' Durata, in secondi
task.Inizio.Data=currDate ' Data inizio
task.Inizio.Ora=050000 ' Ora inizio
task.Percentuale=70 ' Percentuale completamento
task.Stile = "Normale" ' Stile
task.Spostamento=#TRUE ' Può essere spostata con drag and drop
'Definizione tornio
resource.Id="Tornio" ' ID della resource
resource.Riga1="Tornio" ' Nome della resource
resource.Riga2="PRoxxon 27020" ' Descrizione resource
resource.Riga3="Reparto Meccanico" ' Nome del reparto (solo mostrato a video)
resource.Padre="RepMeccanico" ' Nome del reparto (usato per collegare la resource al reparto)
resource.Stato = 1 ' Stato 1 = Spenta
SingolaSchedule.PrimaOccorrenza.SetInizio(currDate, 020000) ' Inizio prima occorrenza di indisponibilità
SingolaSchedule.PrimaOccorrenza.SetDurata(14000) ' Ora prima occorrenza di indisponibilità
SingolaSchedule.UltimaOccorrenza = FNDATEADD(currDate,1,0,0) ' Ora di ultima occorrenza di indisponibilità
SingolaSchedule.Giornata = 1 ' Il primo giorno nel periodo di occorrenza
Schedule.Aggiungi(SingolaSchedule [INOUT]) ' Aggiunge alla collezione di schedule
resource.Indisponibilita = Schedule ' Associa la schedule alla resource
'Definizione task tornitura
task.Id="Tornitura" ' ID della task
task.Riga1="Tornitura tondini di metallo" ' Riga 1 - Nome
task.Riga2="Lavora 500 tondini di metallo" ' Riga 2 - Descrizione
task.Riga3="Reparto meccanico" ' Riga 3 - reparto
task.Durata=8640 ' Durata, in secondi
task.Inizio.Data=currDate ' Data inizio
task.Inizio.Ora=060000 ' Ora inizio
task.Stile = "Normale" ' Stile
task.Percentuale=40 ' Percentuale completamento
task.Spostamento=#TRUE ' Può essere spostata con il drag and drop
Return
...
'@SRP ChangeTask()
Return
Definizione con ridimensionamento
'@DEFVID DIM[35,140] NOME[VideataResize] ID["IDVIDEATA"] TIT["Titolo Videata"]
'@DEFGRIDPANEL NOME[GridPanelResize] 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]]
'@DEFLOADMACHINE NOME[LOADResize] ID["LOAD"] _
POS[1,1] RET[1,2] DIM[1,1] _
COLLEZIONEDATI[ResourceCollection] _
AZIONERESIZE[Resize()] _
GRID[COL[2] RIGA[2] COLDIN[1] RIGADIN[1]]
'@ENDGRIDPANEL NOME[GridPanelResize]
'@RUNVID
...
'@SRP Resize()
DIM currTask[CLASSE[BC_VID_LM_TASK]]
DIM resizedTask[CLASSE[BC_VID_LM_TASK]]
LOADResize.Get_TaskResized(resizedTask)
LOADResize.Get_TaskCorrente(currTask)
currTask.Durata = resizedTask.Durata
Return
Definizione con cambio visuale
'@DEFVID DIM[35,140] NOME[VideataView] ID["IDVIDEATA"] TIT["Titolo Videata"]
'@DEFGRIDPANEL NOME[GridPanelView] 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]]
'@DEFLOADMACHINE NOME[LOADView] ID["LOAD"] _
POS[1,1] RET[1,2] DIM[1,1] _
COLLEZIONEDATI[ResourceCollection] _
GRID[COL[2] RIGA[2] COLDIN[1] RIGADIN[1]]
'@ENDGRIDPANEL NOME[GridPanelView]
'@RUNVID
...
'@SR LoadView
' DIM currDate[DATE]
DIM tomorrowDate[DATE]
currDate = BCSystemInfo.GetDate()
tomorrowDate = FNDAYDATEADD(currDate, 1)
DIM scale[INT]
' Inizializza la vista del grafico
LOADView.Set_Data(currDate, tomorrowDate)
' LOADView.Set_Scala(scale, tomorrowDate)
Return
...
'@SRP ChangeView()
' Variabili valorizzate tramite edit (campi di input)
DIM dateFrom[DATE]
DIM dateTo[DATE]
DIM scale[INT]
DIM destinationDate[DATE]
' Imposta il range che si può vedere sul grafico
LOADView.Set_Data(dateFrom, dateTo)
' Va alla data scelta
' LOADView.Set_Scala(scale)
' Controlla se la data di destinazione va oltre dal range del grafico
If destinationDate > dateTo Or destinationDate < dateFrom Then
MESSAGEBOX(#INFO,"Data incogruente", "La data selezionata va oltre il range del grafico" + CHR$(10) _
+ "Aumentare il range per mostrare la data")
ExitSr
EndIf
LOADView.Vai_a_data(destinationDate)
Return