Personalizzazione delle finestre

Da SIGLAkb.

Dp-ingranaggio3.png In SIGLA® è possibile personalizzare in modo semplice ed immediato le finestre di alcune anagrafiche, aggiungendo alcuni campi personalizzati che l’utente riempirà con i valori opportuni.

I campi aggiuntivi possono essere di due tipi diversi, automatici o manuali. Per i campi automatici la memorizzazione ed il reperimento delle informazioni è eseguito automaticamente da SIGLA®, mentre per i secondi, indicati anche con il termine di campi normali, la gestione della memorizzazione e del recupero dell'informazione dalla base dati è demandata al personalizzatore che dovrà operare una reimplementazione della funzione SIGLAPPSaveObject contenuta nella SIGPPDLL.DLL o della funzione SPPFrameIntSaveObject contenuta nella SPPFROLD.DLL.

L'operazione avviene definendo in un file ASCII, il cui nome varia in funzione della finestra di dialogo che si desidera personalizzare, un insieme di istruzioni in grado di descrivere i campi da aggiungere. La funzione SIGLAPPSaveObject contenuta nella SIGPPDLL.DLL (SPPFrameIntSaveObject contenuta nella SPPFROLD.DLL) consente, se opportunamente reimplementata, di effettuare controlli sui campi aggiunti e/o di acquisirne/modificarne il valore a video.

Definizione dei campi aggiuntivi

Per le finestre di dialogo per le quali è attiva la possibilità di gestire campi aggiuntivi è necessario creare, se si intende sfruttare questa funzionalità, un file ASCII contenente le specifiche dei campi da aggiungere.
Il nome del file è definito nella tabella riportata successivamente ed è univoco per ogni finestra. Per tutti i file il postfisso da usare è .USR. I file devono essere posizionati nell'indirizzario contenente le procedure eseguibili di SIGLA®/START®/.

Sintassi dei file di personalizzazione

I file di descrizione dei campi aggiuntivi sono composti da una serie di righe ognuna delle quali descrive un oggetto da aggiungere alla finestra. La struttura della riga è posizionale e le posizioni devono essere rigidamente rispettate.
Il primo carattere della riga stabilisce il tipo di oggetto da aggiungere, mentre la restante parte della riga riporta i parametri necessari per la definizione del campo stesso.
Tutte le coordinate necessarie per il posizionamento di un oggetto video sono espresse in caratteri (ad esempio, la coordinata orizzontale 10 rappresenta il carattere a colonna 10). Le coordinate dell'angolo alto sinistro della finestra sono x=00,y=00 (intendendo con x l'asse orizzontale e con y l'asse verticale). Il file può contenere delle righe di commento che devono iniziare con il carattere ; (punto e virgola).

 
 
 ; Questo è un commento
 ;
 ; Ogni riga di commento può contenere qualunque cosa
 
 


Definizione della label del folder aggiuntivo

Tutti i campi aggiuntivi devono essere contenuti all'interno di un folder che va ad aggiungersi a quelli normalmente gestiti nella finestra su cui si sta operando. La prima istruzione diversa da un commento che deve essere riportata all’interno del file deve essere quella necessaria ad impostare il titolo del folder aggiuntivo.

La riga di comando per definire la label del folder aggiuntivo è:

Ldescrizione

dove:

  • L in prima posizione individua il tipo di azione da intraprendere (definizione label folder aggiuntivo);
  • descrizione è il testo della label che individua il folder (il testo non deve superare gli 8 caratteri di ampiezza).
 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 
 


Disegno di un riquadro nel folder aggiuntivo

E’ possibile procedere alla definizione di un contorno all'interno del folder aggiuntivo. La riga di comando per definire un contorno è:

AxxyyXXYY

dove:

  • A in prima posizione individua il tipo di azione da intraprendere (disegno di un riquadro nel folder aggiuntivo)
  • xx,yy rappresentano le coordinate in caratteri dell'angolo alto sinistro del riquadro
  • XX,YY rappresentano le coordinate in caratteri dell'angolo basso destro del riquadro
 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 


Dp-acceptn72x72.png Tutti i riquadri devono essere definiti dopo la definizione della label del folder aggiuntivo e prima della definizione degli altri oggetti video.

Definizione di una didascalia

E’ possibile procedere alla definizione di una didascalia all’interno del folder aggiuntivo.

La riga di comando per definire una didascalia è:

TxxyyTesto

dove:

  • T in prima posizione individua il tipo di azione da intraprendere (definizione di una didascalia nel folder aggiuntivo)
  • xx,yy rappresentano le coordinate in caratteri del primo byte della didascalia
  • Testo è la stringa di caratteri che deve comparire sul video come didascalia
 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definizione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 


Definizione di un campo d'immissione numerico abilitato all'input

La riga di comando per definire un campo d’immissione numerico è:

INlldxxyy

dove:

  • I in prima posizione individua il tipo di azione da intraprendere (definizione di un campo d’immissione nel folder aggiuntivo)
  • N in seconda posizione individua il tipo di campo d’immissione (campo numerico abilitato all’input)
  • ll rappresenta, su due digit, l’ampiezza del campo (compreso il punto decimale e la parte decimale)
  • d rappresenta il numero di digit decimali da gestire dopo la virgola (massimo 5)
  • xx,yy rappresentano le coordinate in caratteri del primo byte della didascalia
 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definizione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 ; definizione dei campi d'immissione
 IN1322005
 


Definizione di un campo d'immissione numerico disabilitato all'input

La riga di comando per definire un campo d’immissione numerico disabilitato è:

Inlldxxyy

dove:

  • I in prima posizione individua il tipo di azione da intraprendere (definizione di un campo d’immissione nel folder aggiuntivo)
  • n in seconda posizione individua il tipo di campo d’immissione (campo numerico disabilitato all’input)
  • ll rappresenta, su due digit, l’ampiezza del campo (compreso il punto decimale e la parte decimale)
  • d rappresenta il numero di digit decimali da gestire dopo la virgola (massimo 5)
  • xx,yy rappresentano le coordinate in caratteri del primo byte del campo d'immissione
 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definzione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 ; definizione dei campi d’immissione
 In1322005
 


Definizione di un campo d'immissione data abilitato all'input

La riga di comando per definire un campo d’immissione data è:

IDlldxxyy

dove:

  • I in prima posizione individua il tipo di azione da intraprendere (definizione di un campo d'immissione nel folder aggiuntivo)
  • D in seconda posizione individua il tipo di campo d'immissione (campo data abilitato all'input)
  • ll rappresenta, su due digit, l'ampiezza del campo (per i campi data deve essere 08)
  • d rappresenta il numero di digit decimali da gestire dopo la virgola (per i campi data deve essere 0)
  • xx,yy rappresentano le coordinate in caratteri del primo byte del campo d'immissione
 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definizione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 ; definizione dei campi d’immissione
 ID0802003
 


Definizione di un campo d'immissione data disabilitato all'input

La riga di comando per definire un campo d’immissione data è:

Idlldxxyy

dove:

  • I in prima posizione individua il tipo di azione da intraprendere (definizione di un campo d'immissione nel folder aggiuntivo)
  • d in seconda posizione individua il tipo di campo d'immissione (campo data dsabilitato all'input)
  • ll rappresenta, su due digit, l'ampiezza del campo (per i campi data deve essere 08)
  • d rappresenta il numero di digit decimali da gestire dopo la virgola (per i campi data deve essere 0)
  • xx,yy rappresentano le coordinate in caratteri del primo byte del campo d'immissione
 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definizione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 ; definizione dei campi d’immissione
 Id0802003
 


Definizione di un campo d'immissione testo abilitato all'input

La riga di comando per definire un campo d’immissione testo è:

ITlldxxyyppp...p

dove:

  • I in prima posizione individua il tipo di azione da intraprendere (definizione di un campo d’immissione nel folder aggiuntivo)
  • T in seconda posizione individua il tipo di campo d’immissione (campo testo abilitato all’input)
  • ll rappresenta, su due digit, l’ampiezza del campo (per i campi testo deve essere minore o uguale a 60)
  • d rappresenta il numero di digit decimali da gestire dopo la virgola (per i campi testo deve essere 0)
  • xx,yy rappresentano le coordinate in caratteri del primo byte del campo d'immissione
  • ppp...p è una stringa di caratteri che viene usata come picture di lettura (obbligatoria) che deve avere la stessa lunghezza del campo

Le picture per i campi testo possono essere una combinazione dei seguenti caratteri:

  • X carattere alfanumerico case sensitive
  • ! carattere alfanumerico convertito in maiuscolo
  • A carattere alfabetico
  • 9 carattere numerico

La picture di lettura per un campo testo di 16 caratteri destinato a contenere un codice fiscale potrebbe essere impostato come:

!!!!!!99!99!999! o XXXXXX99X99X999X

 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definizione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 ; definizione dei campi d’immissione
 IT2002007XXXXXXXXXXXXXXXXXXXX
 


Definizione di un campo d'immissione testo disabilitato all'input

La riga di comando per definire un campo d’immissione testo disabilitato è:

Itlldxxyyppp...p

dove:

  • I in prima posizione individua il tipo di azione da intraprendere (definizione di un campo d’immissione nel folder aggiuntivo)
  • t in seconda posizione individua il tipo di campo d’immissione (campo testo disabilitato all’input)
  • ll rappresenta, su due digit, l’ampiezza del campo (per i campi testo deve essere minore o uguale a 60)
  • d rappresenta il numero di digit decimali da gestire dopo la virgola (per i campi testo deve essere 0)
  • xx,yy rappresentano le coordinate in caratteri del primo byte del campo d'immissione
  • ppp...p è una stringa di caratteri che viene usata come picture di lettura (obbligatoria) che deve avere la stessa lunghezza del campo

Le picture per i campi testo possono essere una combinazione dei seguenti caratteri:

  • X carattere alfanumerico case sensitive
  • ! carattere alfanumerico convertito in maiuscolo
  • A carattere alfabetico
  • 9 carattere numerico

La picture di lettura per un campo testo di 16 caratteri destinato a contenere un codice fiscale potrebbe essere impostato come:

!!!!!!99!99!999! o XXXXXX99X99X999X

 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definzione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 ; definizione dei campi d’immissione
 It2002007XXXXXXXXXXXXXXXXXXXX
 


Definizione di un campo d’immissione numerico automatico

La riga di comando per definire un campo d’immissione numerico automatico è:

DNlldxxyytfffffffffff

dove:

  • D in prima posizione individua il tipo di azione da intraprendere (definizione di un campo d’immissione automatico nel folder aggiuntivo)
  • N o n in seconda posizione individua il tipo di campo d’immissione (campo numerico abilitato o disabilitato all’input)
  • ll rappresenta, su due digit, l’ampiezza del campo (compreso il punto decimale e la parte decimale)
  • d rappresenta il numero di digit decimali da gestire dopo la virgola (massimo 5)
  • xx,yy rappresentano le coordinate in caratteri del primo byte del campo d'immissione
  • t rappresenta su un digit il numero della tabella del database in cui è posizionato il campo da gestire (il numero della tabella è un intero di un byte il cui valore minimo è 1 - i numeri possibili variano da finestra a finestra e sono mappati nella tabella che segue)
  • fffffffffff è una stringa di 11 caratteri che individua il nome del campo da aggiornare nella tabella definita al punto precedente
 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definzione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 ; definizione dei campi d’immissione
 DN13220051USR0001
 


Definizione di un campo d’immissione data automatico

La riga di comando per definire un campo d’immissione data automatico è:

DDlldxxyytfffffffffff

dove:

  • D in prima posizione individua il tipo di azione da intraprendere (definizione di un campo d’immissione automatico nel folder aggiuntivo)
  • D o d in seconda posizione individua il tipo di campo d’immissione (campo data abilitato o disabilitato all’input)
  • ll rappresenta, su due digit, l’ampiezza del campo (per i campi data deve essere 08)
  • d rappresenta il numero di digit decimali da gestire dopo la virgola (per i campi data deve essere 0)
  • xx,yy rappresentano le coordinate in caratteri del primo byte del campo d'immissione
  • t rappresenta su un digit il numero della tabella del database in cui è posizionato il campo da gestire (il numero della tabella è un intero di un byte il cui valore minimo è 1 - i numeri possibili variano da finestra a finestra e sono mappati nella tabella che segue)
  • fffffffffff è una stringa di 11 caratteri che individua il nome del campo da aggiornare nella tabella definita al punto precedente
 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definzione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 ; definizione dei campi d’immissione
 DD08020031USR0002
 


Definizione di un campo d’immissione testo automatico

La riga di comando per definire un campo d’immissione testo automatico è:

DTlldxxyytfffffffffffppp...p

dove:

  • D in prima posizione individua il tipo di azione da intraprendere (definizione di un campo d’immissione automatico nel folder aggiuntivo)
  • T o t in seconda posizione individua il tipo di campo d’immissione (campo testo abilitato o disabilitato all’input)
  • ll rappresenta, su due digit, l’ampiezza del campo (per i campi testo deve essere minore o uguale a 60)
  • d rappresenta il numero di digit decimali da gestire dopo la virgola (per i campi testo deve essere 0)
  • xx,yy rappresentano le coordinate in caratteri del primo byte del campo d'immissione
  • t rappresenta su un digit il numero della tabella del database in cui è posizionato il campo da gestire (il numero della tabella è un intero di un byte il cui valore minimo è 1 - i numeri possibili variano da finestra a finestra e sono mappati nella tabella che segue)
  • fffffffffff è una stringa di 11 caratteri che individua il nome del campo da aggiornare nella tabella definita al punto precedente
  • ppp...p è una stringa di caratteri che viene usata come picture di lettura (obbligatoria) che deve avere la stessa lunghezza del campo

Le picture per i campi testo possono essere una combinazione dei seguenti caratteri:

  • X carattere alfanumerico case sensitive
  • ! carattere alfanumerico convertito in maiuscolo
  • A carattere alfabetico
  • 9 carattere numerico

La picture di lettura per un campo testo di 16 caratteri destinato a contenere un codice fiscale potrebbe essere impostato come:

!!!!!!99!99!999! o XXXXXX99X99X999X

 
 
 ; definizione della label del Folder Aggiuntivo
 LNote
 ; definizione di un riquadro nel Folder Aggiuntivo
 A02025009
 ; definzione delle didascalie
 T0303Data
 T0305Importo
 T0307Descrizione
 ; definizione dei campi d’immissione
 DT20020071USR0003 XXXXXXXXXXXXXXXXXXXX
 


Chiamate a SIGLAPPSaveObject

Se è stata attivata la gestione di campi video aggiuntivi SIGLA®/START® eseguono una serie di chiamate alla funzione SIGLAPPSaveObject contenuta nella libreria a link dinamico SIGPPDLL.


Dp-editn72x72.png Le chiamate generate dalla gestione dei campi video aggiuntivi sono contraddistinte dal valore –1000 del parametro theActionID.


Il parametro theObject deve essere in tal caso castato sulla classe DPUsrFld. L'header file che definisce la classe DPUsrFld è distribuito assieme al sistema di sviluppo.

La funzione SIGLAPPSaveObject viene chiamata a seguito dei seguenti eventi:

  • durante la fase di cleanup dei campi video della finestra (ad esempio quando l’utente preme il push button Nuovo). In tal caso il campo actualfld dell'oggetto DPUsrFld assume il valore –4. La chiamata può essere sfruttata per inizializzare il contenuto dei campi aggiuntivi ad un valore di default. I campi automatici vengono sbiancati senza che sia necessario alcun intervento di programmazione.
  • immediatamente dopo la determinazione della chiave univoca per la finestra su cui si sta operando (ad esempio, dopo che l'utente ha individuato il codice univoco). In tal caso il campo actualfld dell'oggetto DPUsrFld assume il valore –1 e il campo keyfld contiene il valore della chiave univoca.
  • immediatamente dopo la memorizzazione del record su cui si sta operando (ad esempio quando l'utente preme il tasto Registra). In tal caso il campo actualfld dell'oggetto DPUsrFld assume il valore -2
  • immediatamente dopo la cancellazione del record su cui si sta operando (ad esempio quando l'utente preme il tasto Cancella). In tal caso il campo actualfld dell'oggetto DPUsrFld assume il valore -3
  • all'uscita di ogni campo aggiuntivo, comunque determinata. In tal caso il campo actualfld dell'oggetto DPUsrFld assume un valore maggiore o uguale a zero che individua il numero progressivo del campo da cui si è usciti. Il primo campo aggiuntivo di input è individuato dal valore 0, il secondo dal valore 1 e così via. Se la funzione restituisce il valore logico FALSE SIGLA® emette un segnale acustico e il controllo di input resta assegnato al campo attuale
  • immediatamente dopo la pressione del tasto RicercaPlus quando il controllo di input è assegnato ad un campo aggiuntivo. In questo caso la variabile booleana ricercaplus assume il valore TRUE. E’ quindi possibile, per il personalizzatore, sviluppare una adeguata funzione di ricerca.

In ogni caso all'uscita dalla chiamata il pacchetto controlla il valore contenuto nei buffer dei campi video (vedi descrizione della classe DPUsrFld) e riporta sullo schermo quelli variati. Si ha in questo modo la possibilità di operare modifiche sui campi video.


Dp-editn72x72.png Le chiamate con actionid -1000 possono essere attivate anche per SPPFrame ed intercettate nella funzione SPPFrameIntSaveObject della libreria SPPFrOld. Per l'attivazione è necessario implementare l'actionid -999 nella funzione SPPFrameIntSaveObject in maniera che il valore di ritorno della funzione sia False (V.documentazione FRAME per maggiori dettagli).

Se non si implementa l'actionid -999 per la SPPFrameIntSaveObject o se il ritorno è True le successive uscite -1000 continueranno ad essere indirizzate alla SIGPPDLL.DLL.

La classe DPUsrFld

La classe DPUsrFld definisce un insieme di dati membro che consentono al personalizzatore di operare sui campi video aggiuntivi.

I dati d’interesse sono i seguenti:

  • char videoname[64] contiene il nome del file di personalizzazione della finestra (senza il postfisso .USR). Il dato consente di determinare quale finestra personalizzata ha generato la chiamata a SIGLAPPSaveObject
  • int actualfld contiene un intero che determina o il campo video che detiene il controllo di input (valori maggiori o uguali a zero) o il motivo della chiamata alla funzione SIGLAPPSaveObject (valori negativi)
  • BOOL ricercaplus assume normalmente valore FALSE. E' impostato a TRUE se l'utente ha premuto il pulsante RicercaPlus. In tal caso la variabile actualfld individua il campo che detiene il controllo dell'input.
  • char *usrfld[60] vettore di 60 componenti ognuna delle quali individua il buffer di un campo video. Il buffer del primo campo video definito è contenuto in usrfld[0], quello del secondo in usrfld[1] e così via. I buffer associati a campi d'immissione di tipo data contengono l'informazione nel formato ANSI (AAAAMMGG), quelli associati a campi numerici contengono il dato sottoforma di stringa ASCII. In tutti i casi la stringa e null terminated.
 
 
 #include "dpdbase.h"
 
 #ifndef DPUSRFLD_H
  #define DPUSRFLD_H
 
  class DPUsrFld:public DPObject
  {
  public:
  char videoname[64];
  int actualfld;
  char keyfld[128];
  char *usrfld[60];
  double usrdoublefld[60];
  BOOL ricercaplus;
 
  DPUsrFld::DPUsrFld(DPDbase *db,char *vname);
  DPUsrFld::~DPUsrFld();
  int RetFindCriteriaNo();
  char far *RetFindTitle();
  char far *RetFindCriteriaDescr(int CriteriaNo=0);
  char far *RetFindCriteriaPict(int CriteriaNo=0);
  BOOL SeekFindCriteria(char *theKey,int CriteriaNo=0);
  BOOL RetFindRow(char *buffer,int CriteriaNo=0);
  BOOL Seek(char *theUniqueKey);
  BOOL SeekRange(char *theInitialKey,char *theFinalKey,int CriteriaNo=0);
  void Clear(void);
  BOOL StoreData(FILE *theFile);
  BOOL LoadData(FILE *theFile);
  BOOL DoPrint(char *buffer,int TipoStampaNo);
  BOOL CreateIndex(void);
  };
 #endif
 

Finestre Modificabili

Finestra Nome file .USR Tabelle disponibili
Agenti AGENTI 1 - AGENTI
Aliquote Iva TABIVA 1 - TABIVA
Anagrafica Magazzino ANAMAG 1 - ANAMAGA
Causali Contabili CAUSCO 1 - CAUSCONT
Centri di Costo CENCOS 1 – CENTRCOS
Clienti/Fornitori CLIFOR 1 – CLIFO
2 - CFVEN
Famiglie Merceologiche FAMMER 1 - GRUPMERC
Gruppi Merceologici GRUMER 1 - GRUPMERC
Magazzini TABMAG 1 - TABMAGAZ
Marchi MARCHI 1 - TMARCHI
Raggruppamento Magazzini RAGMAG 1 - RAGGRMAG
Sottoconti PIACON 1 - PIACON
Sottofamiglie Merceologiche SFAMER 1 - GRUPMERC
Vettori VETTOR 1 - VETTORI
Imballi IMBAL 1 – IMBALLI
Indirizzi di spedizione INDSPED 1 – INDSPED
Anagrafica Cespiti ANACES 1 – CESPITI
Causali di Magazzino CAUSMAGA 1 – CAUSMAGA
Anagrafica Cespiti TIPODOC 1 – TIPODOCU

Dp-ingranaggio3.png Esempio

Dp-Preview256.png Per approfondire, vedi la voce Esempio di personalizzazione dell'anagrafica articoli di magazzino.
Dp-Preview256.png Per approfondire, vedi la voce Esempio di personalizzazione dell'anagrafica clienti e fornitori.

Bibliografia

Voci correlate

Anagrafica articoli
Anagrafica dei clienti e fornitori
Come si personalizza SIGLA
Configurazione
Gestione documenti
La libreria SIGPPDLL
La libreria SPPFrame
SIGLAPPSaveObject