Passa al contenuto principale

DEFLOADMACHINE

28.0Desktop

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

ParametroDefinizioneI/OInformazioniVersione traduttoreSMP
NOMEInteroINObbligatorioDesktop
RETINObbligatorioDesktop
POSINDesktop
DIMINDesktop
IDStringaINDesktop
COLLEZIONEDATICollezione di classiObbligatorioDesktop
DROPINDesktop
AZIONEAzioneINDesktop
AZIONECLICKAzioneINDesktop
AZIONEDOPPIOCLICKAzioneIN32.4Desktop
AZIONERESIZEAzioneIN30.7Desktop
AZIONETASKAzioneINDesktop
CONTROLLODROPAzioneINDesktop
MODIFICABILEInteroINBinarioDesktop
DOPPIOCLICKAzioneINDesktop
LAYOUTEnumerazione32.0Desktop
AZIONEESPANDIAzioneINDesktop
DETTAGLIOCONNESSIONEAzioneINDesktop
GRIDINDesktop
STACKINDesktop
EXPANDERINDesktop
DOCKINDesktop
LINKTOINDesktop

NOME

InteroINInputObbligatorioObbligatorioValore non necessarioValore non necessarioDesktop

Nome del controllo

RET

INInputObbligatorioObbligatorioValore non necessarioValore non necessarioDesktop

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

INInputValore non necessarioValore non necessarioDesktop

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]]

note

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

INInputValore non necessarioValore non necessarioDesktop

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]]

note

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

StringaINInputValore non necessarioValore non necessarioDesktop

Definisce la variabile o la costante di programma che contiene l'identificatore univoco del controllo.

note

Viene utilizzato dall'ambiente per gestire le personalizzazioni effettuate durante l'esecuzione del programma.

COLLEZIONEDATI

Collezione di classiObbligatorioObbligatorioValore non necessarioValore non necessarioDesktop

Elenco entità da rappresentare.
Collezione di BC_VID_LM_RESOURCE.

DROP

INInputValore non necessarioValore non necessarioDesktop
SottoParametri

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

AzioneINInputValore non necessarioValore non necessarioDesktop
SottoParametri

Callback richiamata alla selezione di un'entità

AZIONECLICK

AzioneINInputValore non necessarioValore non necessarioDesktop
SottoParametri

Callback richiamata al singolo click su un'entità.

AZIONEDOPPIOCLICK

32.4AzioneINInputValore non necessarioValore non necessarioDesktop
SottoParametri

Callback richiamata in seguito al doppio click su una risorsa senza selezionare un task

AZIONERESIZE

30.7AzioneINInputValore non necessarioValore non necessarioDesktop
SottoParametri

Callback richiamata al ridimensionamento di un'entità.

AZIONETASK

AzioneINInputValore non necessarioValore non necessarioDesktop
SottoParametri

Callback richiamata alla modifica di un task

CONTROLLODROP

AzioneINInputValore non necessarioValore non necessarioDesktop
SottoParametri

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

InteroINInputBinarioBinarioValore non necessarioValore non necessarioDesktop

Abilitazione modifica risorsa di produzione ed orario di inizio delle fasi

Parametro con valori ammessi, si possono utilizzare i seguenti valori:

ValoreDescrizione
0No
1Si

DOPPIOCLICK

AzioneINInputValore non necessarioValore non necessarioDesktop
SottoParametri

Callback richiamata dal doppio click su un'entità

LAYOUT

32.0EnumerazioneValore non necessarioValore non necessarioDesktop

Layout della rappresentazione grafica

Parametro enumerato, può assumere i seguenti valori:

ValoreDescrizione
DEFAULTSfondo con gradient. Dimensione BC 1.1 righe
TRASPORTINessuno sfondo font più grande. Dimensione BC 1.6 righe senza sottotitolo, 2.7 righe con sottotitolo

AZIONEESPANDI

AzioneINInputValore non necessarioValore non necessarioDesktop
SottoParametri

Callback richiamata dall'espansione di un'entità

DETTAGLIOCONNESSIONE

AzioneINInputValore non necessarioValore non necessarioDesktop
SottoParametri

Callback richiamata alla richiesta di dettaglio sulla connessione

GRID

INInputValore non necessarioValore non necessarioDesktop
SottoParametri

Attached Property per pannello di tipo Grid

STACK

INInputValore non necessarioValore non necessarioDesktop
SottoParametri

Attached Property per pannello di tipo Stack

EXPANDER

INInputValore non necessarioValore non necessarioDesktop
SottoParametri

Attached Property per pannello di tipo Expander

DOCK

INInputValore non necessarioValore non necessarioDesktop
SottoParametri

Consente di indicare se l'oggetto deve occupare tutto lo spazio del DockPanel in verticale e/o in orizzontale (possono essere indicati entrambi).

LINKTO

INInputValore non necessarioValore non necessarioDesktop
SottoParametri

Consente di creare un legame tra due controlli esistenti all'interno della stessa videata.

Metodi

MetodoDescrizioneSMP
Abilita_MultiselezioneImposta la possibilità di selezionare più fasi in contemporanea. Default: trueDesktop
Add_TaskSelezionatoAggiunge un task alla lista di quelli selezionatiDesktop
Get_AmpiezzaStepDettaglioRestituisce il numero di pixel minimo di un intervallo temporale sopra il qule vengono mostrati i dettagli grafici.
Get_DataCorrenteRestituisce la data selezionata correntementeDesktop
Get_NumTaskSelezionatiRestituisce il numero degli elementi selezionatiDesktop
Get_OraCorrenteRestituisce l'ora selezionata correntementeDesktop
Get_OreIndisponibilitaDettaglioRestituisce il numero di ore della durata delle indisponibilità al di sopra della quale vengono mostrati sempre i dettagli grafici.
Get_RisorsaCorrenteRestituisce il record della risorsa correnteDesktop
Get_RisorsaDropRestituisce il record della risorsa correnteDesktop
Get_RisorsaPrecedenteRestituisce il record della risorsa precedenteDesktop
Get_TaskCorrenteRestituisce il record del task selezionato correntementeDesktop
Get_TaskDropRestituisce la stringa della risorsa correnteDesktop
Get_TaskResizedRestituisce la reference al task ridimensionatoDesktop
Get_TaskSelezionatiRestituisce la lista degli identificativi di tutti i task selezionatiDesktop
Get_ZoomRestituisce il livello dello zoomDesktop
Is_TaskSelezionatoRestituisce l'informazione se il task indicato è selezionato o menoDesktop
Multiselezione_in_corsoRitorna l'informazione se al momento l'utente sta effettuando una multiselezioneDesktop
Remove_TaskSelezionatoRimuove un task dalla lista di quelli selezionatiDesktop
Set_AmpiezzaStepDettaglioIndica il numero di pixel minimo di un intervallo temporale sopra il quale vengono mostrati i dettagli grafici.
Set_DataDefinisce l'intervallo da visualizzareDesktop
Set_DettaglioDefinisce se le informazioni mostrate dal controllo sono dettagliate o meno. 0: Sintetico - 1: DettagliatoDesktop
Set_IntervalloDefinisce l'intervallo orario per ogni giornataDesktop
Set_MostraFigliDefinisce se le visualizzare i figli dei task. 0: Nascondi - 1: Mostra solo selezionataDesktop
Set_MostraParalleliDefinisce se le visualizzare i task in parallelo. 0: Nascondi - 1: Mostra solo selezionataDesktop
Set_MostraPrecedenzeDefinisce se le visualizzare le precedenze dei task. 0: Nascondi - 1: Mostra solo selezionataDesktop
Set_Mouse_Zoom_stepDefinisce lo step con il quale effettuare lo zoom tramite la rotella del mouseDesktop
Set_OreIndisponibilitaDettaglioIndica il numero di ore della durata delle indisponibilità al di sopra della quale vengono mostrati sempre i dettagli grafici.
Set_ScalaDefinisce la scala, espressa in minuti di discretizzazione dell'asse temporaleDesktop
Set_TaskSelezionatoEvidenzia il task selezionatoDesktop
Set_ZoomDefinisce lo zoom della scala dei tempiDesktop
Vai_a_dataImposta la data sulla quale centrare la visualizzazioneDesktop
Vai_a_risorsaImposta la risorsa sulla quale centrare la visualizzazioneDesktop
Visualizza_giorniImposta il numero di giorni da visualizzare in una schermataDesktop

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