Manuale per la programmazione Tivoli Service Desk 6.0 Developer's Toolkit Script

Capitolo 6: Utilizzo del Sistema di finestre TSD Script

Ritorna all'Indice analitico


Introduzione

Utilizzando il TSD Script, è possibile creare finestre generiche, finestre a scorrimento virtuali e moduli. Il sistema di finestre TSD Script è composto da un numero di istruzioni TSD Script che consentono di creare un'interfaccia utente personalizzata.

Questo capitolo:

Descrizione finestra

Una finestra è una parte di schermo o di desktop che contiene un documento o un messaggio. I seguenti termini vengono utilizzati per descrivere le parti di una finestra generica.

Utilizzo di WinCreate

Creazione di una finestra generica

WinCreate viene utilizzato per creare finestre generiche. Una finestra generica è la finestra più semplice e flessibile fornita da TSD Script. Le finestre generiche possono inoltre contenere messaggi propri.

VARIABLES 
  mainWindow: Window; 
ACTIONS 
WinCreate($Desktop,mainWindow,MainEvent, 
            1,1,100,30,'',0); 

Argomenti WinCreate di esempio

La seguente spiegazione descrive gli argomenti WinCreate utilizzati nella sezione delle azioni dell'esempio precedente:

Il sistema di coordinate inizia con (1,1) posizionato nell'angolo sinistro superiore dello schermo. Le coordinate X aumentano man mano verso destra; le coordinate y aumentano man mano che scendono verso il basso dello schermo.

I due argomenti successivi sono (rispettivamente) la larghezza e l'altezza dell'area client della nuova finestra. Vengono espressi in unità di carattere.

La finestra creata nell'esempio ha l'angolo superiore sinistro nell'angolo superiore sinistro dello schermo. Ha una larghezza di 100 caratteri e un'altezza di 30 caratteri.

Utilizzo degli indicatori di creazione

Nel seguente esempio, l'ultimo argomento è un'espressione intera dove ogni posizione bit rappresenta un indicatore on/off. Ad esempio:

WinCreate($Desktop,mainWindow,MainEvent, 
          1,1,100,30,'',
          BitOr($WinTitle,$WinBorder,$WinMinMax)); 

Il risultato della funzione BitOr indica che questa finestra viene creata con tre voci: una barra dei titoli, un margine e una serie di pulsanti minimizza/ingrandisci nell'angolo superiore destro.

Per informazioni dettagliate sugli indicatori della creazione forniti dal TSD Script, consultare Riferimento Lingua del TSD 6.0 Developer's Toolkit Script.

Creazione di una finestra

E' possibile creare la finestra principale delle applicazioni in TSD Script. In TSD Script, la creazione di una finestra coinvolge i seguenti passi:

  1. L'handler degli eventi associato alla finestra viene richiamato con un evento $MsgSize. Questo si verifica prima che la finestra venga evidenziata sullo schermo.
    Inoltre, due altre informazioni vengono passate all'handler degli eventi: la larghezza e l'altezza della nuova finestra, espresse in caratteri. Questi valori vengono inoltrati rispettivamente al primo parametro degli eventi non denominato (INTEGER) e al secondo parametro degli eventi non denominato (INTEGER).
  2. L'handler degli eventi viene quindi richiamato con un evento $MsgCreate. Questo segnala all'handler degli eventi che la finestra sta per essere evidenziata sullo schermo. A questo punto, l'handler degli eventi deve eseguire delle azioni per aggiungere i comandi di menu, i tool ed altri elementi visivi.

Nota: Se l'handler degli eventi esegue delle azioni che modificano le dimensioni dell'area client della finestra, viene creato un nuovo messaggio $MsgSize. L'area client di una finestra è l'area di lavoro di un utente finale. Gli elementi non inseriti nell'area client comprendono:

  1. La frame della finestra viene evidenziata nello schermo.
  2. L'handler degli eventi viene richiamato con un messaggio $MsgPaint. A questo punto, l'handler degli eventi deve evidenziare tutte le altre informazioni che appaiono all'interno dell'area client della finestra.

La maggior parte delle finestre sono interessate solo dal secondo e dal quarto passo tra i quattro riportati. Il messaggio $MsgCreate è importante perché indica all'handler degli eventi il momento opportuno per apportare delle modifiche finali alla finestra, prima di essere visualizzata, e per inizializzare i valori nei dati di istanza.

Quando la routine MainEvent riceve il messaggio $MsgCreate, essa esegue due azioni:

Nota: L'indicatore $WinIconBar nell'istruzione WinCreate del programma principale determina che le dimensioni della nuova finestra sono corrette, in tal modo l'area client sarà pronta nel momento in cui viene aggiunta la barra degli strumenti.

Menu a discesa

Creazione di un sistema dei menu a discesa

Questa sezione indica come creare un sistema di menu. Si immagini di voler creare un sistema di menu con tre menu: File, Modifica e ?. Nel menu File sono riportati i seguenti comandi:

Nel menu Modifica sono riportati i seguenti comandi:

Infine, nel menu ? sono riportati i seguenti comandi:

Opzioni Menu

La struttura del menu bidimensionale viene convertita in un elenco unidimensionale aggiungendo le opzioni dall'alto verso il basso e da sinistra verso destra.

ListInsert(menuList,''); 
ListInsert(menuList,'Save ~As'); 
WinSetMenuBar($Handle,{'File','New','Open',...,
'General Help''}: LIST OF STRING); 
WinSetMenuBar($Handle,{'File','New','Open',..., '/L-',
'General Help'}: LIST OF STRING);


Parametri degli eventi e comandi dei menu

Quando un utente seleziona un comando menu, l'handler degli eventi per la finestra riceve un messaggio $MsgMenu. Il primo parametro degli eventi $MenuSelection (INTEGER) contiene un numero intero che indica il comando del menu selezionato. Questo numero intero viene codificato come:

major*100 + minor 

Major è il numero del comando del menu orizzontale selezionato (100 per quello più a sinistra), e minor è il numero del comando del menu verticale selezionato (101 per quello in alto). In questo modo, se l'utente seleziona il comando Incolla nel menu Modifica, il primo parametro degli eventi non denominato (valore intero) deve avere il valore 203 perché Modifica è il secondo comando orizzontale e Incolla è il terzo comando verticale. I numeri compresi tra 1 e 99 rappresentano i tool, perché anche gli eventi del tool vengono gestiti da $MsgMenu.

Finestre generiche

Posizione del cursore in una finestra generica

TSD Script fornisce un numero di istruzioni che modificano l'aspetto dell'area client di una finestra generica. Internamente, le finestre generiche tengono traccia della posizione corrente del cursore. Questa è una posizione (x,y) dove si verificano alcune operazioni di emissione (come ad esempio WinWrite).


La posizione evidenziata nel sistema di coordinate al momento selezionato può essere misurata dalla posizione (1,1), nell'angolo superiore sinistro dell'area client. La posizione evidenziata può essere misurata in:

Le posizioni della coordinata X aumentano verso destra e le posizioni della coordinata y aumentano verso il basso.

Istruzioni della finestra

Le istruzioni che possono essere utilizzate con le finestre generiche sono elencate nella tabella seguente. I parametri vengono elencati in Manuale per la programmazione Tivoli Service Desk 6.0 Developer's Toolkit Script.

Istruzione Descrizione
WinGoToXY Sposta la posizione corrente in una determinata coordinata (x,y).
WinWrite Scrive una stringa nella posizione corrente.
WinWriteAt Scrive una stringa in una determinata posizione.
WinWriteLN Scrive una stringa nella posizione corrente e sposta il puntatore della posizione all'inizio della riga successiva.
WinX Restituisce la coordinata x dell'emissione di testo corrente.
WinY Restituisce la coordinata y dell'emissione di testo corrente.
WinWidth Restituisce la larghezza della finestra in caratteri.
WinHeight Restituisce l'altezza della finestra in coordinate.
WinClear Elimina dall'intera finestra il colore dello sfondo corrente.
WinClearEOL Elimina dall'intera finestra il colore dello sfondo corrente (iniziando dalla posizione corrente del cursore alla fine della riga corrente).
WinClearEOW Ripulisce la finestra nel colore di sfondo corrente (partendo dalla destra della posizione cursore corrente e andando in fondo alla posizione corrente del cursore).
WinClearRectangle Elimina da un'area rettangolare il colore evidenziato dello sfondo corrente.
WinGetXPos Restituisce la posizione della coordinata x di un handle della finestra valido.
WinGetYPos Restituisce la posizione della coordinata y di un handle della finestra valido.
WinSetColor Imposta i colori evidenziati dello sfondo e del primo piano per la finestra.

Istruzioni per la creazione della finestra

Le seguenti istruzioni sono le funzioni utilizzate per creare le finestre.

Istruzione Descrizione
WinSetIconBar Imposta il contenuto della barra delle icone.
WinSetMenuBar Imposta il contenuto della barra dei menu.
WinCreateClock Crea una finestra timer o orologio all'interno della finestra generica.
WinCreateImage Crea un programma di visualizzazione delle immagini all'interno della finestra generica che visualizza un determinato file di immagini.
WinCreateMouseRect Crea un'"area sensibile" rettangolare sulla finestra in una determinata posizione. I clic del mouse in quest'area creano gli eventi per l'handler degli eventi della finestra generica.

Aggiornamento delle finestre generiche

L'evento $MsgPaint (definito anche come messaggio di aggiornamento) indica che alcune parti della finestra generica devono essere ridisegnate.

Se un utente chiude un'altra finestra oppure fa clic sulla finestra generica, il gestore della finestra deve rivisualizzare il contenuto della finestra generica. Per far ciò è necessario inviare il messaggio $MsgPaint. Poiché il gestore delle finestre non ricorda il contenuto di ogni finestra che viene aperta sul desktop, prevede che ogni finestra sia in grado di riaggiornarsi da sola.

Ad esempio, si supponga che:

Se un utente fa clic sull'altra finestra, questa viene evidenziata andando così a ricoprire una parte (o tutta) della finestra generica. Per aggiornare la visualizzazione, entrambe le finestre devono aggiornarsi.

Un handler degli eventi può ricevere in un qualsiasi momento un messaggio $MsgPaint per una finestra che gestisce. Esistono due trigger di base che risultano nel messaggio di aggiornamento:

Nota: In generale, le finestre generiche che scrivono nella parte client della finestra devono operare in questo modo solo nella parte dell'handler degli eventi che serve l'evento $MsgPaint.

Finestre a scorrimento virtuali

Le finestre generiche devono essere in grado di gestire i messaggi di aggiornamento e di ricreare il loro contenuto in un qualsiasi momento. TSD Script fornisce una finestra a scorrimento virtuale che opera le seguenti attività:

Una finestra a scorrimento virtuale è completamente virtuale. E' possibile scrivere le informazioni ovunque nello spazio bidimensionale e utilizzare le barre di scorrimento (orizzontale e verticale) per visualizzarle.

Nota: Una finestra di scorrimento virtuale non ha alcuna nozione della struttura dei dati. E' più facile utilizzare da utilizzare rispetto ad una finestra generica, ma può rivelarsi meno efficiente.

Creazione di una finestra a scorrimento virtuale

Una finestra a scorrimento virtuale viene creata con l'istruzione WinCreateScrollWindow. Questa istruzione prende i seguenti argomenti:

Nome dell'argomento Descrizione
whdlParent L'handle per la finestra padre di una finestra appena creata.
whdl L'handle della finestra appena creata viene restituito in questo parametro. In caso di errore, la variabile viene impostata su $Unknown.
EventHandler Un handler degli eventi per elaborare gli eventi creati dalla finestra o dalla casella di dialogo. Qualora non venisse richiesta l'elaborazione degli eventi, è possibile utilizzare la parola chiave $NullHander.
xLoc La posizione della X dell'angolo superiore sinistro della finestra. Le coordinate X vengono misurate in celle di caratteri.
yLoc La posizione della Y dell'angolo superiore sinistro della finestra. Le coordinate Y vengono misurate in celle di caratteri.
width La larghezza (dimensione X) della finestra, escluso il bordo. Le coordinate X vengono misurate in celle di caratteri.
height L'altezza (dimensione Y) della finestra escluso il bordo, la barra dei titolo, la barra dei menu, la barra delle icone e la barra di stato. Le coordinate Y vengono misurate in celle di caratteri.
titolo Il titolo da visualizzare nella barra dei titoli della finestra. La finestra deve avere una barra dei titoli per un titolo che deve essere visualizzato. Utilizzare lo stile $WinTitle.
font Il nome di un font del sistema disponibile.
pointSize La dimensione in punti del font da utilizzare all'interno della finestra a scorrimento.
style Una maschera bit intera che rappresenta un elenco di indicatori di stile utilizzati per controllare l'aspetto della finestra.

Esempio di finestra a scorrimento virtuale

Le finestre a scorrimento virtuali sono utili per registrare le informazioni "una riga alla volta". Il seguente esempio crea una finestra che opera come "lavagna scorrevole" La finestra viene utilizzata per elencare i nomi e i numeri della previdenza sociale di tutti i dipendenti nella tabella EMPLOYEES. Questi nomi e numeri sono scritti nella finestra una riga alla volta, partendo dalla parte superiore della finestra.

VARIABLES 
  vWin: Window; 
  i: INTEGER; 
  cursor: SQLCursor; 
ACTIONS 
  WinCreateScrollWindow($Desktop,vWin,$NullHandler,
                        1,1, 80,25,'Matches',
                        SystemMonospaced, 10,
                        BitOr($WinDefaultStyle,
                              $WinViscroll,
                              $WinAutoScroll)); 
  i:=SQLSelect(cursor,'SELECT * FROM EMPLOYEES'); 
  WHILE i > 0 DO 
    i:=SQLFetch(cursor,employee); 
    IF i > 0 THEN 
    WinWriteLn(vWin,employee.first_name & ' ' & 
             employee.last_name & ' ' & employee.ssn); 
      END; 
      END; 
  SQLCloseCursor(cursor); 

Poiché viene utilizzato lo stile $WinAutoScroll, le voci meno recenti ripartono dall'alto una volta raggiunta la fine della finestra.

E' possibile utilizzare la barra di scorrimento verticale ogni volta per ritornare indietro e visualizzare le voci meno recenti. Quando un utente ha terminato con la finestra, può chiudere la finestra con il menu del sistema oppure è possibile inviare esplicitamente un messaggio $MsgClose all'applicazione.

Istruzioni finestra a scorrimento virtuali

Le seguenti istruzioni possono essere utilizzate per modificare l'aspetto e la funzione di una finestra a scorrimento virtuale:

Nome dell'istruzione Descrizione
WinGoToXY Sposta la posizione corrente su una determinata coordinata (x,y) virtuale.
WinWrite Scrive una stringa nella posizione corrente.
WinWriteAt Scrive una stringa in una determinata posizione.
WinWriteLN Scrive una stringa nella posizione corrente e sposta il puntatore della posizione all'inizio della riga successiva. Se la posizione corrente è quella nella parte inferiore della finestra e si utilizza lo stile $WinAutoScroll, l'intera finestra viene spostata in alto di una riga.
WinX Restituisce la coordinata x della posizione dell'emissione di testo corrente.
WinY Restituisce la coordinata y della posizione dell'emissione di testo corrente.
WinWidth Restituisce la larghezza della finestra (fisica) in caratteri.
WinHeight Restituisce l'altezza della finestra (fisica) in coordinate.
WinClear Elimina dall'intera finestra il colore dello sfondo corrente.
WinClearEOL Elimina dalla finestra virtuale, dalla posizione del cursore alla fine della riga corrente, il colore dello sfondo corrente.
WinClearEOW Ripulisce la finestra nel colore di sfondo corrente (partendo dalla destra della posizione cursore corrente e andando in fondo alla posizione corrente del cursore).
WinClearRectangle Elimina da un'area rettangolare il colore dello sfondo corrente.
WinSetColor Imposta i colori evidenziati dello sfondo e del primo piano per la finestra.
WinSetIconBar Imposta il contenuto della barra delle icone.
WinSetMenuBar Imposta il contenuto della barra dei menu.
WinCreateClock Crea una finestra timer o orologio all'interno della finestra a scorrimento. L'orologio scorre automaticamente all'interno della finestra di scorrimento.
WinCreateImage Crea un programma di visualizzazione delle immagini all'interno della finestra di scorrimento che visualizza un determinato file di immagini. Questa immagine scorre automaticamente all'interno della finestra di scorrimento.
WinGetXPos Restituisce la posizione della coordinata x di un handle di finestra valido
WinGetYPos Restituisce la posizione della coordinata y di un handle della finestra valido.
WinCreateMouseRect Crea un'area sensibile rettangolare sulla finestra in una determinata posizione. I clic del mouse in quest'area creano gli eventi per l'handler degli eventi della finestra di scorrimento.

Posizione del cursore

Come accade per le finestre generiche, le finestre virtuali conservano una posizione del cursore (x,y) interna. Questa posizione del cursore indica dove hanno inizio determinate operazioni di emissione (come ad esempio WinWrite). Dopo un operazione WinWrite, la posizione x del cursore viene incrementata dal numero dei caratteri scritti.

E' possibile rilevare la posizione del cursore richiamando le funzioni WinX e WinY. La posizione del cursore può essere modificata richiamando la funzione WinGotoXY( ).


Manuale per la programmazione Tivoli Service Desk 6.0 Developer's Toolkit Script

Ritorna all'Indice analitico

Copyright