Riferimento Lingua del Tivoli Service Desk 6.0 Developer's Toolkit Script
Ritorna alla pagina principale
Nota: Tutte le funzioni Win hanno gli stessi codici di ritorno. Questa tabella di codici appare nella funzione WinAboutBox e appare un collegamento a questa tabella con ogni funzione Win.
Ritorna alla pagina principale
Nota:
Questa è la prima sezione delle funzioni Gestione finestre. Questa
sezione termina con WinSetColor,
mentre la seconda sezione inizia
con WinSetFont.
Restituisce un handle alla finestra del desktop. Questo valore è permanente durante la sessione corrente. Tuttavia, questo valore non viene memorizzato in modo permanente. La prossima volta che il programma si avvia, questa costante ha un nuovo valore.
FUNCTION $Desktop: WINDOW;
Attenzione: In OS/2, esistono messaggi validi che l'utente può inviare al desktop per sospendere l'elaborazione. Ad esempio, se si invia $MsgClose al desktop, l'esecuzione del programma viene sospesa. Questa funzione viene controllata dal sistema operativo.
$Desktop è una costante di sistema predefinita che contiene l'handle per il desktop di OS/2 o di Windows. Viene spesso specificata come costante padre nelle istruzioni delle caselle di dialogo e delle finestre.
KNOWLEDGEBASE Desktop;
ROUTINES PROCEDURE Example;
PRIVATE ROUTINES
(* Create a scroll window parented by the desktop with default event processing *) PROCEDURE Example IS VARIABLES whdl: WINDOW;
ACTIONS WinCreateScrollWindow($Desktop, (*Window is a child of OS/2 desktop *) whdl, (* return handle of new window *) $NullHandler, (* Default event processing *) 5, 5, 80, 20, (* Window location and size *) 'Example', (* Window title *) '', (* Use default font *) 0, (* Point size is ignored for default *) BitOr($WinTitle, $WinBorder, $WinSysMenu)); WinWait(whdl); END;
Indica il tasto premuto dall'utente quando si verifica un evento $MsgChar.
Il TSD Script definisce diverse costanti per i tasti speciali, come ad esempio i tasti di comando del cursore, i tasti modificati (i.e., i tasti premuti insieme ad altri, come ad esempio Control o Alt), etc.
Nota: Per ulteriori informazioni, consultare Costanti TSD Script.
EVENT MyEvent IS ACTIONS WHEN $Event IS $MsgChar THEN WHEN $KeyCode IS $KeyUpArrow THEN MoveUp; ELSWHEN $KeyDownArrow THEN MoveDown; ELSWHEN $KeyLeftArrow THEN MoveLeft; ELSWHEN $KeyRightArrow THEN MoveRight; END; END;
Questa funzione visualizza una casella "Info su" di default per un'applicazione.
FUNCTION WinAboutBox( VAL Icon : STRING, VAL AppName : STRING, VAL Version : STRING ) : INTEGER;
Le informazioni visualizzate contengono un messaggio di copyright del Tivoli Service Desk e non è concepito per le applicazioni di terzi.
Nome dell'argomento | Descrizione |
Icon | Il nome del file .bmp associato da visualizzare
con l'applicazione. Se il file non viene trovato o il nome file non è valido, la casella viene visualizzata senza grafico. Le variabili di ambiente SAIPATH e PATH vengono inquiryte per i file specificati da questo comando. |
AppName | Il nome dell'applicazione. |
Version | Il numero della versione dell'applicazione. |
KNOWLEDGEBASE aboutbox;
CONSTANTS
AppName IS 'Pink Elephant Word Processor'; AppVersion IS 'Version 3.1';
ROUTINES
Procedure DisplayAboutBox;
PRIVATE ROUTINES
Procedure DisplayAboutBox IS
VARIABLES ACTIONS WinAboutBox('pink.bmp', AppName, AppVersion); END;
Codice di ritorno | Descrizione |
1 | Completamento riuscito. |
0 | Annullamento da parte dell'utente. L'utente ha chiuso la finestra o ha annullato l'operazione. Solitamente tale operazione si esegue premendo il tasto Esc o il tasto Canc o chiudendo la finestra dal menu di sistema. |
-1 | L'handle della finestra non si riferisce a una finestra valida. E' possibile che la finestra non esista più o che la finestra non supporti il comando. |
-2 | Valore sconosciuto. |
-3 | Memoria insufficiente. |
-4 | Nessuna creazione. Il sistema operativo non è stato in grado di creare l'oggetto richiesto. Una possibile causa è che l'handle della finestra padre fa riferimento a una finestra che non esiste più. |
-7 | Il comando denominato di una casella di dialogo non può essere trovato nella casella di dialogo a cui l'handle della finestra fa riferimento. |
-8 | Il comando richiesto della casella di dialogo non può essere eseguito sul tipo di comando denominato. |
-10 | La chiamata ha avuto esito negativo al livello del sistema operativo. Questo può essere causato da una configurazione non corretta o da risorse inadeguate. |
-12 | L'istruzione SendMessage o PostMessage è stata richiamata con un messaggio non supportato dalle istruzioni NETx. Il messaggio deve essere uno dei messaggi $MsgNetx supportati o un messaggio $MsgUser + n definito dall'utente che viene specificatamente definito per essere utilizzato con le istruzioni NETx. |
Elimina dall'intera area client di una finestra o di una finestra a scorrimento il colore dello sfondo corrente.
FUNCTION WinClear(VAL whdl: WINDOW): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra da eliminare. Questo handle può fare riferimento ad una finestra standard o a una finestra a scorrimento. |
Il colore dello sfondo corrente può essere modificato utilizzando la funzione WinSetColor.
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClear( $Handle ); WinWrite($Handle,'Black');
Ripulisce una finestra dalla posizione corrente del cursore alla fine della riga, utilizzando il colore di sfondo corrente.
FUNCTION WinClearEOL(VAL whdl: WINDOW): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra da eliminare. L'handle può fare riferimento ad una finestra standard o a una finestra a scorrimento. |
WinClearEOL ripulisce dalla posizione corrente del cursore alla fine della riga corrente. Non modifica la posizione del cursore. L'area eliminata viene aggiornata nel colore dello sfondo corrente.
Nota: Il colore dello sfondo corrente può essere modificato utilizzando la funzione WinSetColor.
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlue); WinGoToXY($Handle,2,2); WinClearEOL($Handle);
Ripulisce la finestra dalla posizione del cursore corrente alla fine della finestra, utilizzando il colore di sfondo corrente.
FUNCTION WinClearEOW(VAL whdl: WINDOW): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra da eliminare. Questo
handle può fare riferimento ad una finestra standard o a una finestra
a scorrimento. |
WinClearEOW ripulisce la finestra indicata dalla posizione corrente del cursore alla fine della finestra. L'area eliminata viene aggiornata nel colore di sfondo corrente. La posizione del cursore non viene modificata.
Nota: Il colore corrente dello sfondo può essere modificato utilizzando l'istruzione WinSetColor.
WHEN $Event IS $MsgPaint THEN WinGoToXY($Handle,5,10); WinSetColor($Handle,$WinWhite,$WinLightBlue); WinClearEOW($Handle);
Elimina un'area rettangolare di una finestra, utilizzando il colore corrente dello sfondo.
FUNCTION WinClearRectangle(VAL whdl: WINDOW, VAL xLoc, yLoc, width, height: INTEGER): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra da eliminare. L'handle può fare riferimento ad una finestra standard o a una finestra a scorrimento. |
xLoc | La posizione della X dell'angolo superiore sinistro dell'area da eliminare. Le coordinate della X sono celle di caratteri specificate. |
yLoc | La posizione della Y dell'angolo superiore sinistro dell'area da eliminare. Le coordinate della Y vengono specificate in celle di caratteri. |
width | La larghezza dell'area da eliminare. La larghezza viene misurata in celle di caratteri. |
height | L'altezza dell'area da eliminare. L'altezza viene misurata in celle di caratteri. |
WinClearRectangle elimina un'area rettangolare specifica all'interno di una determinata finestra. L'area eliminata viene aggiornata con il colore dello sfondo corrente. Il cursore non viene spostato.
Nota: Il colore corrente dello sfondo può essere modificato utilizzando l'istruzione WinSetColor.
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClearRectangle($Handle,5,10,40,8); END:
Chiude una casella di dialogo o una finestra.
FUNCTION WinCloseWindow(VAL whdl: WINDOW): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra o della casella di dialogo da chiudere |
Questa funzione viene inoltre implementata come messaggio che può essere inoltrato ad una finestra o a una casella di dialogo ($MsgClose).
KNOWLEDGEBASE close;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'Window will close shortly...', $WinDefaultStyle); SysDelay(1000); WinCloseWindow(Handle); END;
Crea una finestra generica o standard.
FUNCTION WinCreate(VAL parent: WINDOW, REF whdl: WINDOW, VAL EventHandler: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, style: INTEGER): INTEGER;
Se la funzione di evento non elabora il messaggio di aggiornamento ed elimina la finestra, la finestra trattiene un'immagine di ciò che conteneva al momento della creazione della finestra.
WinCreate non effettua restituzione fino a quando $MsgCreate non viene elaborato. Perciò, il valore dell'handle della finestra restituito non viene impostato fino a quando $MsgCreate non viene elaborato. Tuttavia, $Handle può essere ancora utilizzato durante l'elaborazione di WinCreate.
Nome dell'argomento | Descrizione |
parent | Finestra padre della nuova finestra da creare. |
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 che elabora gli eventi creati dalla casella di dialogo o dalla finestra. Se non viene richiesta alcuna elaborazione eventi, è possibile utilizzare la parola chiave $NullHandler. |
xLoc | La posizione della X dell'angolo superiore sinistro della finestra. Le coordinate della X vengono specificate in celle di caratteri. |
yLoc | La posizione della Y dell'angolo superiore sinistro della finestra. Le coordinate della Y vengono specificate in celle di caratteri. |
width | La larghezza (dimensione della X) della finestra, escluso il bordo. |
height | L'altezza (dimensione della Y) della finestra escluso il bordo, la barra dei titoli, la barra dei menu, la barra degli strumenti e la barra di stato. |
title | Il titolo visualizzato nella barra del titolo della finestra. La finestra deve avere una barra dei titoli per un titolo che deve essere visualizzato. Utilizzare uno stile contenente $WinTitle. |
style | Una maschera di bit numero intero che
rappresenta una serie di indicatori degli stili utilizzata per
controllare l'aspetto della finestra. Per un elenco di indicatori degli stili disponibili, consultare Stili delle finestre. |
Primo messaggio ricevuto
Quando viene creata una finestra, i seguenti messaggi vengono ricevuti nell'ordine riportato:
Personalizzazione di una finestra con gli stili
WinCreate può essere utilizzato per creare finestre standard o generiche. Tali finestre possono contenere le barre dei menu, le barre degli strumenti, le barre di stato e altri elementi delle finestre.
La funzionalità e l'aspetto esatti della finestra creata con WinCreate vengono, per la maggior parte, determinati dall'argomento dello stile. Questo argomento intero è una maschera bit assemblata da diversi indicatori (elencati nella sezione seguente). L'argomento viene solitamente assemblato con l'operatore BITOR (ad esempio, BITOR($WinBorder, $WinTitle)). Il metodo aggiuntivo deve essere utilizzato con cautela; può provocare conseguenze indesiderate se lo stesso indicatore viene aggiunto due volte.
Nota: Per ulteriori informazioni, consultare Stili delle finestre.
Creare un handler degli eventi per una finestra
In generale, si associa un handler degli eventi ad una finestra creata attraverso WinCreate. Un handler degli eventi è una routine che elabora alcuni dei messaggi inviati alla finestra. Ad esempio, se la finestra ha una barra delle icone, l'handler degli eventi riceve i messaggi $MsgMenu (eventi) ogni volta che l'utente fa clic su una delle icone. Il primo parametro degli eventi (intero) contiene un numero compreso tra uno (1) e il numero delle icone, indicante l'icona selezionata. L'handler degli eventi può indicare una routine particolare.
Nota: I diversi messaggi che possono essere ricevuti dalle finestre create con WinCreate sono documentati in Messaggi TSD-Script.
EVENT MainEvent IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetIconBar($Handle,{'FILE.ICO', 'REPORT.ICO','HELP.ICO'}: LIST OF STRING); ELSWHEN $MsgMenu THEN WHEN $EventParm(1,INTEGER) IS 1 THEN HandleFileIcon; ELSWHEN 2 THEN HandleReportIcon; ELSWHEN 3 THEN HandleHelpIcon; END; END; END;
PROCEDURE MainProgram IS VARIABLES mainWindow : WINDOW; ACTIONS WinCreate($Desktop,mainWindow,MainEvent,0,0,80,20, 'Main Window', BitOr($WinBorder,$WinTitle,$WinResize, $WinSysMenu, $WinIconBar, $WinAutoPos,$WinTaskList)); WinWait(mainWindow); END;
Crea una finestra timer o orologio.
FUNCTION WinCreateClock(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL xLoc, yLoc, width, height, style, id: INTEGER): INTEGER;
Nome dell'argomento | Descrizione |
whdlParent | La finestra padre della nuova finestra da creare. |
whdl | L'handle della nuova finestra viene restituito in questo parametro. In caso di errore, la variabile viene impostata su $Unknown. |
xLoc | La posizione della X dell'angolo superiore sinistro della finestra. Le coordinate della X vengono misurate in celle di caratteri. |
yLoc | La posizione della Y dell'angolo superiore sinistro della finestra. Le coordinate della Y vengono misurate in celle di caratteri. |
width | La larghezza (dimensione X) della finestra escluso il bordo. La larghezza viene misurata in celle di caratteri. |
height | L'altezza (dimensione Y) della finestra escluso il bordo, la barra dei titoli, la barra dei menu, la barra degli strumenti e la barra di stato. Altezza misurata in celle di caratteri. |
style | Lo stile di una finestra orologio. Gli
indicatori dello stile vengono combinati con l'operatore BITOR. Selezionarne uno o nessuno dei seguenti:
Selezionarne uno o nessuno dei seguenti:
Indicatore facoltativo: $ClkHidden - L'orologio non viene visualizzato sullo schermo. |
ID | Numero dell'identificativo utilizzato nei messaggi di notifica per la finestra padre. E' possibile creare i timer nelle finestre generiche utilizzando il messaggio $MsgStartTimer. |
WinCreateClock può essere utilizzato per creare gli orologi che si aggiornano da soli in tempo reale (ogni secondo). Per default, un orologio inizia a visualizzare l'ora corrente del giorno in base all'orologio di sistema. E' possibile, tuttavia, impostare un orologio per visualizzare un'ora corrente inviandogli il messaggio $MsgClockSet insieme al valore dell'ora.
Ad esempio, è possibile utilizzare la seguente riga per impostare un orologio del tempo trascorso:
SendMessage(clockWindow,$MsgClockSet,{0,0,0}: TIME);
Le finestre orologio rispondono inoltre ai messaggi $MsgShow. Questo consente all'utente di creare una finestra orologio, nasconderla, modificare il valore dell'ora quindi visualizzarla. Considerare il seguente esempio:
WHEN $Event IS $MsgCreate THEN WinCreateClock($Handle,clockWindow, 1,1,13,2, $Clk24Hour,0); SendMessage(clockWindow,$MsgShow,FALSE); ELSWHEN START_TIMER THEN SendMessage(clockWindow,$MsgClockSet, {0,0,0}: TIME): SendMessage(clockWindow,$MsgShow,TRUE); END;
In questo esempio, l'utente si trova nell'elaborazione dell'evento per un un'altra finestra. Quando si crea la finestra, l'orologio viene creato ma rimane nascosto. Quando la finestra riceve un messaggio START_TIMER, l'ora degli orologi viene impostata su 00:00:00 e l'orologio viene quindi visualizzato. L'utente visualizza un orologio per il tempo trascorso.
VARIABLES clock: WINDOW; ROUTINES EVENT WindowEvent IS ACTIONS WHEN $Event IS $MsgCreate THEN WinCreateClock($Handle,clock,1,1,13,2,$ClkBorderIn,1); END; END;
Crea una finestra per il programma di visualizzazione MDI (Multiple Document Interface) con capacità ipertesto di base. Le barre dei menu disponibili con i menu Finestra, Modifica e File consentono di:
E' possibile accedere alle selezioni del menu concatenato premendo il tastino destro del mouse in un programma di visualizzazione hypermedia. Queste voci di menu consentono di selezionare:
FUNCTION WinCreateHyperViewer(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL fileName: STRING, VAL EventFunc: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, VAL style: INTEGER): INTEGER;
Nome dell'argomento | Descrizione |
whdlParent | La finestra padre della nuova finestra da creare. |
whdl | L'handle della finestra appena creata viene restituito in questo parametro. In caso di errore, l'argomento whdl viene impostato su $Unknown. |
fileName | Il nome del file da visualizzare. Se il file
non si trova nella directory corrente, SAIPATH viene inquiryto. Il
file può essere un file ASCII semplice o può avere collegamento di ipertesto
incorporati. Consultare la sezione Note per ulteriori informazioni. |
EventFunc | Un handler degli eventi per elaborare gli eventi creati dalla finestra o dalla casella di dialogo. Se non viene richiesta alcuna elaborazione eventi, la parola chiave $NullHandler può essere utilizzata. |
xLoc | La posizione della X dell'angolo superiore sinistro della finestra. Le coordinate della X vengono misurate in celle di caratteri. |
yLoc | La posizione della Y dell'angolo superiore sinistro della finestra. Le coordinate della Y vengono misurate in celle di caratteri. |
width | La larghezza (dimensione della X) della finestra escluso il bordo. La larghezza viene misurata in celle di caratteri. |
height | L'altezza (dimensione Y) della finestra escluso il bordo, la barra dei titoli, la barra dei menu, la barra degli strumenti e la barra di stato. L'altezza viene misurata in celle di caratteri. |
title | Il titolo visualizzato nella barra del titolo della finestra. La finestra deve avere una barra dei titoli per un titolo che deve essere visualizzato. |
style | Una maschera bit intera che rappresenta un
elenco di indicatori di stile utilizzati per controllare l'aspetto
della finestra. Per ulteriori informazioni, consultare le Note per questa istruzione |
WinCreateHyperViewer può essere utilizzato per creare un programma di visualizzazione ipertesto. Oltre a creare una finestra con la posizione, le dimensioni e gli stili indicati, WinCreateHyperViewer visualizza il contenuto del file indicato. Si suppone che questo file contenga il testo ASCII con i pulsanti incorporati. Un pulsante, che appare all'utente come parola evidenziata, è un collegamento ad un altro oggetto come ad esempio un file di testo, un file sonoro, un'immagine o un programma.
Un pulsante viene definito nel seguente formato:
[[<Button text> | <command>]]
<Button text> è il testo da visualizzare come testo evidenziato all'utente mentre <command> indica l'azione che viene avviata dal clic.
Parola a capo
Il comando ipertesto prevede che il file fornito venga formattato come file hypermedia del Tivoli Systems. Questo indica che avvolge le parole di tutte le righe del testo (ignorando il ritorno a capo) fino a quando non trova due ritorni a capo in una riga.
Disattivare la funzione Parola a capo e Formattare i valore di default
Per disattivare la parola a capo e formattare i valori di default per una finestra ipertesto, è possibile utilizzare il file aseview.exe per inoltrare gli indicatori /NOWORDWRAP /NOFORMAT come argomenti della riga comandi. Questo è il solo modo per disattivare in modo programmatico la funzione di parola a capo e formattare i valori di default per una finestra ipertesto.
La seguente tabella mostra le opzioni comando per l'istruzione
WinCreateHyperViewer e le descrizioni:
Opzioni comando | Descrizione |
ID | Se il comando è un valore intero, si suppone
che questo sia un ID dei pulsanti. Quando l'utente fa clic sul
pulsante, un messaggio $MsgButton viene inviato all'handler
degli eventi delle finestre del programma di visualizzazione
ipertesto. Il testo del pulsante si trova nel parametro evento uno
(stringa) e l'ID del pulsante si trova nel parametro evento due (intero). Se nessun comando viene fornito (se il pulsante è del modello [[Button-text]]), l'handler degli eventi riceve ancora un messaggio $MsgButton quando si seleziona il pulsante. Tuttavia, l'ID del pulsante (parametro evento due, intero) è 0. In questo caso, se l'handle degli eventi restituisce zero, il programma di visualizzazione modifica il testo del pulsante per far sì che formButtonTextand esegua un'operazione di inquiry (vedere di seguito). |
JUMP | JUMP <marker name> inquiry nell'elenco di tag un segnalatore che corrisponda al testo che segue il Jump (consultare Tag del segnalatore per ulteriori informazioni). In caso si rilevasse una corrispondenza, la riga contenente il segnalatore viene posizionata nella parte superiore del programma di visualizzazione e viene creato un EventJump. La vista ipertesto elabora l'EventJump per mantenere un elenco di segnalatori "visitati" in un file. |
LABEL | LABEL <label-text> può essere una qualsiasi stringa di caratteri. Viene inviato un messaggio $MsgLabel all'handler degli eventi delle finestre con il testo del pulsante nel parametro evento uno (stringa) e il testo dell'etichetta nel parametro evento due (stringa). |
MARKER | MARKER <marker name> colloca un segnalatore invisibile nel testo. |
SEARCH | SEARCH <search-text> inquiry il
file corrente iniziando dalla parte superiore per <search-text>. Il
testo non può scorrere le righe a meno che il testo della inquiry
non abbia nuove righe incorporate. La inquiry è sensibile al maiuscolo e minuscolo tranne
che in Windows. Se il testo viene trovato, il programma di visualizzazione è posizionato in modo che la riga contenente il testo appaia nella riga superiore della finestra del programma di visualizzazione. |
FILE | FILE <file-name> [NEW|REPLACE]
[NOWORDWRAP|NOFORMAT] apre un nuovo file di testo. Per default,
il nuovo file sostituisce quello che si trova al momento nel
programma di visualizzazione. Inoltre ciò avviene se la parola chiave
REPLACE segue il <file-name>. Se la parola chiave NEW segue <file-name>, si apre una nuova finestra del programma di visualizzazione per visualizzare il nuovo file. La dimensione del programma di visualizzazione viene stabilita dal sistema. Per default, la funzione di A capo viene utilizzata in modo che tutte le righe non separate da almeno una riga vuota vengono trattate come paragrafo scorrevole. La prima riga vuota dopo ogni riga non vuota viene eliminata. La parola chiave NOWORDWRAP può essere utilizzata per eliminare questa funzionalità. NOFORMAT, utilizzata insieme alla funzione di a capo di default, impedisce alle righe vicine di essere unite ma esegue la funzione di a capo per le righe lunghe. |
IMAGE | IMAGE <image-file>.BMP [SCROLL | SCALE] apre un programma di visualizzazione per le immagini e visualizza il file di immagine indicato. Per default, l'immagine viene ritagliata per poterla adattare alle dimensioni del programma di visualizzazione. La parola chiave SCALE fa sì che l'immagine venga adattata alle dimensioni del programma di visualizzazione. La parola chiave SCROLL ritaglia l'immagine ma aggiunge le barre di scorrimento al programma di visualizzazione che può essere utilizzato per scorrere l'intera immagine. |
PLAY | PLAY <sound-file>.WAV esegue il file audio indicato. Viene visualizzata una finestra del programma di visualizzazione hypertext, che l'utente può manipolare per controllare il playback dell'audio. |
RUN | RUN <app-name> esegue l'applicazione indicata. <app-name> può essere una stringa contenente non solo il nome di un file comandi o eseguibile ma anche argomenti della riga comandi ([[Windows NT|RUN F:\DOC\DOCMAN.EXE WINDOWS_NT]]). |
Per un elenco completo dei vari tipi di messaggi che possono essere
ricevuti dalle finestre generiche, consultare
Messaggi TSD Script.
Per una discussione sugli indicatori dello stile della finestra, consultare l'istruzione WinCreate.
KNOWLEDGEBASE WinHyper;
ROUTINES PROCEDURE HyperTextExample;
PRIVATE
CONSTANTS MENU_LIST {'File' ,'Open','/L ','Exit',''}: LIST OF STRING;
ROUTINES EVENT HyperTextEvent IS VARIABLES fileName: STRING; ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); WinSetIconBar($Handle,{'hyp_text.ico', 'hypimage.ico', 'hypsound.ico','search.ico'}:
LIST OF STRING); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS 1, 101 THEN IF WinFileDialog($Desktop,fileName,'*.*', 10,10, 'Select file to view',0) < 0 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgOpenFile,fileName, fileName,0); END; ELSWHEN 2 THEN IF WinFileDialog($Desktop,fileName,'*.bmp', 10,10, 'Select bitmap to view',0) < 0 THEN WinMessageBox( $Handle, 'Error', $MBOk+ $MBIconError,fileName ); ELSE SendMessage($Handle,$MsgDisplayImage,fileName, fileName,0); END; ELSWHEN 3 THEN IF WinFileDialog($Desktop,fileName,'*.wav',10,10, 'Select sound to play',0) < 0 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgPlaySound,fileName, fileName,0); END; ELSWHEN 4 THEN IF WinEditField($Desktop,fileName,0,0,30, 'Search for?', BitOr($WinAutoPos, $WinBorder, $WinTitle)) < 1 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgSearch,fileName); END; ELSWHEN 103 THEN SendMessage($Handle,$MsgClose); END; ELSWHEN $MsgChar THEN WHEN $KeyCode IS $KeyAltT THEN SendMessage($Handle,$MsgMenu,1); ELSWHEN $KeyAltI THEN SendMessage($Handle,$MsgMenu,2); ELSWHEN $KeyAltA THEN SendMessage($Handle,$MsgMenu,3); ELSWHEN $KeyAltS THEN SendMessage($Handle,$MsgMenu,4); ELSE WinMessageBox($Handle,'Hypertext Key',$MBOK, $KeyCode ); END; ELSWHEN $MsgButton THEN WinMessageBox($Handle,'Hypertext Button',$MBOK, 'Button text' & $EventParm(1,STRING) & 'Button ID ' & $EventParm(2,INTEGER)); ELSWHEN $MsgLabel THEN WinMessageBox($Handle,'Hypertext Button',$MBOK, 'Button text ' & $EventParm(1,STRING) & 'Button Label ' & $EventParm(2,STRING)); END; END (* Hypertext Event *); PROCEDURE HyperTextExample IS VARIABLES whdl: WINDOW; ACTIONS WinCreateHyperViewer($Desktop,whdl,'formman.hlp', HyperTextEvent,1,1,80,25, 'Hyertext Test', BitOr($WinBorder,$WinTitle, $WinResize,$WinMenu, $WinIconBar,$WinSysMenu, $WinMinMax, $WinAutoPos,$WinAutoSize)); WinWait(whdl); END (* Hypertext Example *);
Per ulteriori informazioni sulla formattazione dei file hypermedia, consultare il Manuale per i programmi di utilità e per i tool Tivoli Service Desk Developer's Toolkit.
Per ulteriori informazioni su SAIPATH, consultare Ricercare i file utilizzando SAIPATH.
Crea una finestra che visualizza un'immagine.
FUNCTION WinCreateImage(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL fileName: STRING, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, VAL style, id: INTEGER): INTEGER;
Nome dell'argomento | Descrizione |
whdlParent | Finestra padre della nuova finestra da creare. |
whdl | L'handle della finestra appena creata viene restituito in questo parametro. In caso di errore, la variabile viene impostata su $Unknown. |
fileName | Il nome del file dell'immagine visualizzata. L'immagine può essere un file bitmap OS/2, una bitmap di Windows o un file immagine .PCX. |
xLoc | La posizione della X dell'angolo superiore sinistro della finestra. Le coordinate della X vengono misurate in celle di caratteri. |
yLoc | La posizione della Y dell'angolo superiore sinistro della finestra. Le coordinate della Y vengono misurate in celle di caratteri. |
width | La larghezza (dimensione della X) della finestra, escluso il bordo. La larghezza viene misurata in celle di caratteri. |
height | L'altezza (dimensione della Y) della finestra escluso il bordo, la barra dei titoli, la barra dei menu e la barra di stato. L'altezza viene misurata in celle di caratteri. |
title | Il titolo visualizzato nella barra del titolo della finestra. La finestra deve avere una barra dei titoli per un titolo che deve essere visualizzato. Utilizzare lo stile $ImgTitle. |
style | Una bitmap intera che controlla la funzionalità
della finestra di immagine. Consultare la sezione Note per le informazioni sulle opzioni dell'indicatore dello stile. |
id | L'ID (intero) utilizzato dal messaggio $MsgImage per identificare l'immagine quando si riporta un evento. |
Lo stile della finestra delle immagini può essere assemblato dai
seguenti stili con l'operatore BITOR:
Stile | Descrizione |
$ImgScroll | L'immagine viene visualizzata con le stesse dimensioni con cui appare nel file. La finestra ha delle barre di scorrimento. Se l'immagine è più grande della finestra, può essere scorsa. |
$ImgClip | L'immagine viene visualizzata con le stesse dimensioni con cui appare nel file. Se necessario, gli angoli destro e superiore dell'immagine vengono ritagliati per poterli adattare alla finestra. |
$ImgScale | L'immagine viene adattata sia in altezza che in larghezza per corrispondere alle dimensioni della finestra. Il processo di adattamento può distorcere l'immagine. |
$ImgBorder | La finestra immagine ha un bordo. |
$ImgTitle | La finestra immagine ha un titolo. E'
necessario specificare anche $ImgBorder. Le finestre immagine possono rispondere al messaggio $MsgSetImage. Questo messaggio, quando accompagnato dal nome di un file immagine, provoca il caricamento della finestra immagine e la visualizzazione del file indicato. |
KNOWLEDGEBASE WinImage;
TYPES ImageRec IS RECORD fileName: STRING; whdlImage: WINDOW; END;
ROUTINES PROCEDURE ImageExample;
PRIVATE
ROUTINES EVENT ImageEvent(REF imageData: ImageRec) IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,{'File','Open','/L','Exit',''}: LIST OF STRING); WinCreateImage($Handle,imageData.whdlImage, 'os2logo.bmp',1,1,WinWidth($Handle), WinHeight($Handle),'',$ImgScroll,1); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS 101 THEN IF WinFileDialog($Handle,imageData.fileName,'*.bmp', 10,10,'Select new image', 0 ) >= 1 THEN SendMessage(imageData.whdlImage, $MsgSetImage,imageData.fileName); END; ELSWHEN 103 THEN SendMessage($Handle,$MsgClose); END; ELSWHEN $MsgSize THEN SendMessage(imageData.whdlImage,$MsgSetSize, $EventParm(1,INTEGER),$EventParm(2,INTEGER)); ELSWHEN $MsgImage THEN WinMessageBox($Handle,'Image',$MBOK,$EventParm(1, INTEGER)); END; END (* Image Event *);
PROCEDURE ImageExample IS VARIABLES whdl: WINDOW; data: ImageRec ACTIONS WinCreate($Desktop,whdl,ImageEvent{data},0,0,0,0, 'Image test', BitOr($WinBorder,$WinTitle,$WinResize, $WinMenu,$WinMinMax,$WinTaskList, $WinSysMenu,$WinAutoPos, $WinAutoSize)); WinWait(whdl); END (* Image Example *);
Crea un'area rettangolare sensibile ai clic del mouse.
FUNCTION WinCreateMouseRect(VAL whdl: WINDOW, VAL xLoc, yLoc, xLen, yLen, id: INTEGER): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra in cui viene creato il rettangolo. L'argomento whdl può far riferimento ad una finestra standard o a una finestra a scorrimento. |
xLoc | La coordinata X dell'angolo superiore sinistro dell'area del mouse. |
yLoc | La coordinata Y dell'angolo superiore sinistro dell'area del mouse. |
xLen | Larghezza dell'area del mouse. |
yLen | Altezza dell'area del mouse. |
id | Intero utilizzato per identificare una particolare area del mouse. |
Per default, il TSD Script non riporta gli eventi del mouse all'interno di una finestra. Tuttavia, è possibile riportare eventi come ad esempio gli spostamenti e i clic del mouse, creando un'area mouse. Un'area del mouse è un'area rettangolare all'interno di una finestra. Quando si crea un'area del mouse, l'utente assegna ad essa un ID intero. L'ID viene riportato alla finestra padre insieme a tutti gli eventi mouse all'interno di quell'area.
Ogni volta che si esegue un'operazione all'interno dell'area mouse, il massaggio $MsgMouse viene inviato all'area padre di quell'area insieme ai quattro parametri evento interi riportati di seguito:
Suggerimento:
WinSetMousePointer deve essere richiamato ogni volta che una
delle finestre elabora un evento $MsgMouse.
KNOWLEDGEBASE WinMouse;
ROUTINES PROCEDURE MouseExample;
PRIVATE CONSTANTS MENU_LIST IS {'File' , 'Exit','', 'Pointer type', 'MouseDefaultPtr', 'MouseuLArrowPtr', 'MouseURArrowPtr', 'MouseDRArrowPtr', 'MouseDLArrowPtr', 'MouseUPResizePtr', 'MouseURResizePtr', 'MouseRTResizePtr', 'MouseDRResizePtr', 'MouseDNResizePtr', 'MouseDLResizePtr', 'MouseLTResizePtr', 'MouseULResizePtr', 'MouseCrossPtr', 'MouseHandPtr', 'MouseHourGlassPtr', 'MouseIBeamPtr',''}: LIST OF STRING;
ROUTINES EVENT MouseEvent(REF pointerType: INTEGER) IS ROUTINES
PROCEDURE ProcessMenu(VAL whdl: WINDOW, VAL selection: INTEGER) IS ACTIONS WHEN selection IS 101 THEN SendMessage(whdl,$MsgClose); ELSWHEN 201 THEN pointerType := $MouseDefaultPtr; ELSWHEN 202 THEN pointerType := $MouseuLArrowPtr; ELSWHEN 203 THEN pointerType := $MouseURArrowPtr; ELSWHEN 204 THEN pointerType := $MouseDRArrowPtr; ELSWHEN 205 THEN pointerType := $MouseDLArrowPtr; ELSWHEN 206 THEN pointerType := $MouseUPResizePtr; ELSWHEN 207 THEN pointerType := $MouseURResizePtr; ELSWHEN 208 THEN pointerType := $MouseRTResizePtr; ELSWHEN 209 THEN pointerType := $MouseDRResizePtr; ELSWHEN 210 THEN pointerType := $MouseDNResizePtr; ELSWHEN 211 THEN pointerType := $MouseDLResizePtr; ELSWHEN 212 THEN pointerType := $MouseLTResizePtr; ELSWHEN 213 THEN pointerType := $MouseULResizePtr; ELSWHEN 214 THEN pointerType := $MouseCrossPtr; ELSWHEN 215 THEN pointerType := $MouseHandPtr; ELSWHEN 216 THEN pointerType := $MouseHourGlassPtr; ELSWHEN 217 THEN pointerType := $MouseIBeamPtr; END; END (* Process Menu *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); ELSWHEN $MsgPaint THEN WinClear( $Handle ); WinCreateMouseRect($Handle,1,1, WinWidth($Handle), WinHeight($Handle),1); ELSWHEN $MsgMenu THEN ProcessMenu($Handle,$MenuSelection); ELSWHEN $MsgMouse THEN WinSetMousePointer($handle,pointerType); END; END (* Mouse Event *);
PROCEDURE MouseExample IS VARIABLES whdlMain: WINDOW; ACTIONS WinCreate($Desktop,whdlMain,MouseEvent{ $MouseDefaultPtr}, 0,0,60,20, 'Mouse example', BitOr($WinBorder,$WinTitle, $WinResize,$WinMenu, $WinVScroll,$WinMinMax, $WinTaskList, $WinSysMenu,$WinAutoPos)); WinWait(whdlMain); END (* Mouse Example *);
Per ulteriori informazioni, consultare Puntatori del mouse e Messaggi del mouse.
Crea una finestra a scorrimento non a scelta obbligatoria che, se necessario, si aggiorna automaticamente da sola.
WinCreateScrollWindow(VAL whdlParent: WINDOW, REF whdl: WINDOW,| VAL EventHandler: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title, font: STRING, VAL pointSize, style: INTEGER): INTEGER;
Nome dell'argomento | Descrizione |
whdlParent | Finestra padre della finestra a scorrimento. |
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. Se non viene richiesta alcuna elaborazione eventi, è possibile utilizzare la parola chiave $NullHandler. |
xLoc | La posizione della X dell'angolo superiore sinistro della finestra. Le coordinate della X e della Y vengono misurate in celle di caratteri. |
yLoc | La posizione della Y dell'angolo superiore sinistro della finestra. |
width | La larghezza (dimensione della X) della finestra escluso il bordo. La larghezza viene misurata in celle di caratteri. |
height | L'altezza (dimensione della Y) della finestra escluso il bordo, la barra dei titoli, la barra dei menu, la barra degli strumenti e la barra di stato. L'altezza viene misurata in celle di caratteri. |
title | Il titolo visualizzato nella barra del titolo della finestra. La finestra deve avere una barra dei titoli per poter permettere la visualizzazione di un titolo. 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. Per ulteriori informazioni, consultare la sezione Note per l'istruzione WinCreate. |
Primo messaggio ricevuto
Quando viene creata una finestra a scorrimento, i seguenti messaggi vengono ricevuti nell'ordine riportato:
Tracciare e riaggiornare le finestre a scorrimento
WinCreateScrollWindow può essere utilizzato per creare una finestra a scorrimento virtuale. Nelle finestre generiche, il programmatore è responsabile del contenuto delle finestre e della rivisualizzazione delle finestre quando si riceve un messaggio $MsgPaint. Le finestre a scorrimento "conoscono" il loro contenuto. I programmatori scrivono le informazioni nelle finestre attraverso WinWrite, WinWriteLN e così via.
Nota: Per un elenco dei messaggi che le finestre a scorrimento possono creare e ricevere, consultare Messaggi TSD Script.
Personalizzare le finestre a scorrimento
Le finestre a scorrimento possono contenere le barra degli strumenti, le barre dei menu, le barre di stato e tutti gli altri elementi delle finestre disponibili per le finestre generiche.
KNOWLEDGEBASE Scroll;
CONSTANTS MENU_OPEN IS 101; MENU_EXIT IS 102; MENU_LIST IS {'~File','~Open','E~xit',''}: LIST OF STRING;
TYPES EditorData IS RECORD statusLine: STRING; lines: LIST OF STRING; END;
ROUTINES PROCEDURE FileView;
PRIVATE
ROUTINES
EVENT EditorEvent(REF editorData: EditorData) IS ROUTINES PROCEDURE ProcessMainMenu(VALUE selection: INTEGER) IS VARIABLES fileName: STRING; editFile: FILE; result : INTEGER; ACTIONS WHEN selection IS MENU_OPEN THEN WinFileDialog($Handle,fileName,'*.KB',5,5, 'Select file to edit',0); IF FOpen(editFile,fileName,$Read) > 0 THEN FReadText(editFile,editorData.lines); FClose(editFile); editorData.statusLine := ' File: ' & fileName; WinClear( $Handle ); WinWriteLN($Handle,editorData.lines); PostMessage($Handle,$MsgPaintStatus); ELSWHEN MENU_EXIT THEN SendMessage($Handle,$MsgClose); END; END; END (* Process Main Menu *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar( $Handle, menuList ); editorData.statusLine := 'File:'; ELSWHEN $MsgMenu THEN ProcessMainMenu($MenuSelection); ELSWHEN $MsgPaintStatus THEN (* Status Bar *) WinClear( $Handle ); WinWrite($Handle,editorData.statusLine); END; END (* Editor Event *);
PROCEDURE FileView IS VARIABLES whdl: WINDOW; ACTIONS WinCreateScrollWindow($Desktop,whdl,EditorEvent, 0,0,0,0, 'KML File viewer', $SystemMonospaced,10, BitOr($WinBorder,$WinTitle, $WinResize, $WinSysMenu, $WinMenu,$WinStatus, $WinAutoPos,$WinAutoSize, $WinVScroll,$WinHScroll, $WinTaskList)); WinWait(whdl); END (* File View *);
Per ulteriori informazioni, consultare Stili delle finestre.
Visualizza un editor di una riga per il tipo di dati del valore di modifica.
FUNCTION WinEditField(VAL parent: WINDOW, REF value: ANY, VAL xLoc, yLoc, length: INTEGER, title: STRING, VAL style: INTEGER): INTEGER;
Nome dell'argomento | Descrizione |
parent | Finestra padre della nuova finestra da creare. In
Windows, se la finestra padre viene disabilitata quando si richiama
WinEditField, la finestra WinEditField non si adatta
alla finestra padre. In Windows, se $Desktop viene specificata come finestra padre nella combinazione con $WinModal, la finestra creata con WinEditField non è a scelta obbligatoria. La seguente sezione descrive gli indicatori dello stile, come ad esempio $WinModal. |
xLoc | La posizione della X dell'angolo superiore sinistro della finestra. |
yLoc | La posizione della Y dell'angolo superiore sinistro della finestra. |
length | La larghezza (dimensione della X) della finestra escluso il bordo. |
title | 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. In Windows, la costante $WinTitle viene aggiunta automaticamente, qualora non venisse specificata. |
style | Un intero che contiene un elenco di indicatori dello stile che controllano l'aspetto delle finestre. Consultare la seguente sezione sugli indicatori dello stile disponibili per i dettagli. |
Gli indicatori dello stile disponibili per WinEditField
vengono elencati nella tabella.
Indicatore di stile | Descrizione |
$WinAutoPos | Il sistema determina la posizione migliore per la finestra. I parametri xLoc e yLoc vengono ignorati. |
$WinAutoSize | Il sistema determina la dimensione migliore per la finestra. I parametri xLen e yLen vengono ignorati. |
$WinBorder | La finestra ha un bordo simile a una casella di dialogo. Molti stili richiedono un bordo. In Windows, la costante $WinBorder viene aggiunta automaticamente qualora non venisse specificata. |
$WinDefaultStyle | Uno stile di default definito dal sistema assemblato da $WinBorder, $WinResize, $WinTitle e $WinSysMenu. |
$WinField | La finestra ha un bordo di un solo pixel (come i comandi nelle caselle di dialogo). Questo stile si esclude reciprocamente con $WinBorder. |
$WinInvisible | La finestra viene creata nascosta. Deve essere inviato un $MsgShow per divenire visibile. |
$WinModal | Quando viene creato il campo di modifica, la finestra è a scelta obbligatoria. La finestra padre della finestra del campo di modifica e tutte le altre finestre figlio vengono disabilitate. |
$WinNone | La finestra è nuda senza bordo, barra dei titoli o altri elementi. |
$WinTaskList | Il titolo della finestra viene immesso nell'elenco delle attività del sistema. L'utente può attivare la finestra dall'elenco delle attività. Generalmente questo stile viene utilizzato per la finestra principale di un'applicazione. |
$WinTitle | La finestra ha una barra dei titoli. Se questo stile non è presente, non viene visualizzato nessun titolo, anche se è stato specificato un titolo come uno dei parametri. Una barra dei titoli permette alla finestra di spostarsi. |
VARIABLES intVal: INTEGER; ACTIONS WinEditField($Desktop,intVal,0,0,30,'Integer', $WinAutoPos+$WinBorder+ $WinTitle);
DlgBox
Abilita o disabilita una casella di dialogo o una finestra.
FUNCTION WinEnableWindow(VAL whdl: WINDOW, VAL state: BOOLEAN): INTEGER;
Nome dell'argomento | Descrizione |
whdl | Handle della casella di dialogo o della finestra il cui stato abilitato deve essere modificato. |
state | Impostare su TRUE se la finestra deve essere "abilitata", impostare su FALSE se deve essere "disabilitata." |
Questa funzione viene inoltre implementata come messaggio che può essere passato ad un modulo della casella di dialogo o a una finestra ($MsgEnable).
KNOWLEDGEBASE enable;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'Test Window', $WinDefaultStyle); WinEnableWindow(Handle, FALSE); SysDelay(1000); WinEnableWindow(HANDLE, TRUE); WinWait(Handle); END;
Visualizza una casella di dialogo di selezione file.
FUNCTION WinFileDialog(VAL whdlParent: WINDOW, REF fileName: STRING, VAL startMask: STRING, VAL xLoc, yLoc: INTEGER, VAL title: STRING, VAL style: INTEGER ): INTEGER;
Nome dell'argomento | Descrizione |
whdlParent | Finestra padre della nuova finestra da creare. |
fileName | Restituisce il nome file selezionato dall'utente. Se l'utente annulla la casella di dialogo, il valore rimane invariato. |
startMask | E' possibile selezionare la maschera di selezione file iniziale e i caratteri jolly * e ?. |
xLoc | La posizione della X dell'angolo inferiore sinistro della finestra. |
yLoc | La posizione della Y dell'angolo inferiore sinistro della finestra. |
title | Il titolo visualizzato nella barra del titolo della finestra. La finestra deve avere una barra dei titoli per un titolo che deve essere visualizzato. Utilizzare lo stile $WinTitle. |
style | Lo stile della casella di dialogo del file. I valori possibili sono:
|
E' possibile utilizzare WinFileDialog ogni volta che si desidera richiedere agli utenti il nome file, quando si apre un nuovo file oppure quando si consente agli utenti di salvare il lavoro su un nuovo file. Impostando l'argomento startMask, è possibile utilizzare WinFileDialog per scegliere tipi specifici di file (ad esempio, utilizzare *.kb per i file knowledgebase).
Suggerimento: I parametri xLoc e yLoc non hanno alcun effetto in Windows.
VARIABLES fileName: STRING; ACTIONS IF WinFileDialog($Desktop,fileName,'*.TXT', 10,10, 'Select file to edit',0) > 0 THEN LoadAndEdit(fileName); END;
Interroga la posizione della coordinata X di ogni handle della finestra valido (finestra o casella di dialogo). La posizione 00 è l'angolo superiore sinistro.
FUNCTION WinGetXPos (VAL whdl: Window): Integer;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra per interrogare la posizione della X |
WinGetXPos differisce da WinX perchè interroga l'angolo superiore sinistro della finestra o della casella di dialogo, mentre WinX restituisce una posizione dei caratteri all'interno di una finestra. La posizione della coordinata X viene restituita con esito positivo.
KNOWLEDGEBASE GetPos;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; x,y : INTEGER; ACTIONS WinCreateScrollWindow($Desktop, Handle, $Nullhandler, 10,10,75,25, 'Test', $SystemMonospaced,10, $WinDefaultStyle); x := WinGetXPos(Handle); y := WinGetYPos(Handle); WinWriteLN(Handle, 'The upper left corner of the window is at (' & x & ', ' & y & ')'); WinWait(Handle); END;
WinGetYPos
Interroga la posizione della coordinata Y di ogni handle della finestra valido (una finestra o una casella di dialogo). La posizione 00 è l'angolo superiore sinistro della finestra o della casella di dialogo.
FUNCTION WinGetYPos (VAL whdl: Window): Integer;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra per interrogare la posizione della Y |
WinGetYPos differisce da WinY perché interroga l'angolo superiore sinistro di una finestra o casella di dialogo, mentre WinY restituisce una posizione dei caratteri all'interno di una finestra.
Consultare l'esempio per l'istruzione WinGetXPos.
WinGetXPos
Sposta il puntatore della posizione su una nuova posizione.
FUNCTION WinGoToXY(VAL whdl: WINDOW, VAL xLoc, yLoc:
INTEGER):INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra sulla quale eseguire l'operazione |
xLoc | Nuova posizione della X del puntatore della posizione corrente |
yLoc | Nuova posizione della Y del puntatore della posizione corrente |
WHEN $Event IS $MsgChar THEN WHEN $EventParm(1,INTEGER) IS $KeyUpArrow THEN WinGoToXY(Handle,$WinX($Handle),$WinY($Handle)-1); ELSWHEN $KeyRightArrow THEN WinGoToXY(Handle,$WinX($Handle)+1,$WinY($Handle)); END; END;
Interroga l'altezza di una finestra e restituisce l'altezza, espressa in celle di caratteri.
FUNCTION WinHeight(VAL whdl: WINDOW): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra nella quale l'operazione deve essere eseguita. |
WinHeight restituisce l'altezza dell'area client corrente di una determinata finestra.
WinCreateMouseZone($Handle,1,1, WinWidth($Handle),WinHeight($Handle),1);
Carica un menu da un file di risorsa e lo allega ad una specifica finestra. (Ogni menu precedentemente allegato viene sostituito.)
FUNCTION WinLoadMenuBar(VAL win: WINDOW, VAL resource : STRING ): INTEGER;
Nome dell'argomento | Descrizione |
win | Modulo, generico, di scorrimento o hypertext |
resource | Stringa di risorsa in formato standard |
Un metodo più rapido per allegare un menu ad un modulo consiste nel dare al menu lo stesso nome del modulo all'interno dello stesso file .df. Il menu viene caricato automaticamente se il modulo ha lo stile del menu.
KNOWLEDGEBASE loadmenu;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (*load the menu with id MAIN_MENU from the file loadmenu.df *) WinLoadMenuBar(mainWindow, 'loadmenu[MAIN_MENU]'); WinWait(mainWindow);
END;
Carica una risorsa di menu da un file .df ed lo associa come menu a comparsa per la finestra, sostituendo ogni menu a comparsa esistente. Il menu a comparsa appare automaticamente e utilizza l'operazione del mouse corretta per la piattaforma. Le selezioni dal menu a comparsa vengono riportate da $MsgMenu.
FUNCTION WinLoadPopupMenu( VAL whdl: WINDOW, VAL menu: STRING, ): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle del modulo della casella di dialogo o della finestra il cui testo del titolo deve essere modificato |
menu | Il nome qualificato per esteso del file di specifica che descrive il menu sul menu creato |
Quando si utilizza WinLoadPopupMenu, il menu viene automaticamente visualizzato con la corretta azione del mouse per la piattaforma. Quando l'utente seleziona una voce di menu, un messaggio $MsgMenu viene inviato alla finestra. Questo differisce dalla vecchia funzione WinPopup. In WinPopup, l'utente deve prendere l'azione del mouse corretta e richiamare WinPopup per visualizzare il menu a comparsa. WinPopup restituisce l'id della voce di menu selezionata.
KNOWLEDGEBASE loadpop;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (* load the menu with id MAIN_MENU from the file loadmenu.df *) WinLoadPopupMenu(mainWindow, 'loadmenu[MAIN_MENU]'); WinWait(mainWindow);
END;
WinSetPopupMenu
Carica una barra degli strumenti da un file di risorsa e la allega ad una specifica finestra. (Ogni barra degli strumenti precedentemente allegata viene sostituita.)
FUNCTION WinLoadToolBar(VAL win: WINDOW, VAL resource : STRING ): INTEGER;
Nome dell'argomento | Descrizione |
win | Modulo, generico, di scorrimento o hypertext |
resource | Stringa di risorsa in formato standard |
Un metodo più rapido per allegare una barra degli strumenti ad un modulo consiste nello specificare una barra degli strumenti con lo stesso nome del modulo all'interno dello stesso file .df. La barra degli strumenti viene caricata automaticamente se il modulo ha lo stile della barra degli strumenti.
KNOWLEDGEBASE loadtool;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (* load the toolbar with id MAIN_TOOLBAR from the file loadtool.df *) WinLoadToolBar(mainWindow, 'loadtool[MAIN_TOOLBAR]'); WinWait(mainWindow);
END;
Imposta lo stato selezionato di una voce di menu.
FUNCTION WinMenuCheckItem(VAL whdl: WINDOW, VAL id: STRING, VAL newState: BOOLEAN): INTEGER;
FUNCTION WinMenuCheckItem(VAL whdl: WINDOW, VAL id: INTEGER, VAL newState: BOOLEAN): INTEGER;
Nome dell'argomento | Descrizione |
whdl | Handle di una finestra che ha una barra dei menu |
id | L'ID della voce di menu da impostare |
newState | Il nuovo stato della voce di menu |
WinMenuCheckItem consente di selezionare e deselezionare una voce di menu. Lo stato selezionato corrente di una determinata opzione può essere controllato quando si richiama WinMenuItemIsChecked.
Note: Le voci di menu possono essere identificate con stringhe o numeri interi.
WinMenuCheckItem($Handle,204,TRUE);
Imposta lo stato abilitato o disabilitato di una voce di menu.
FUNCTION WinMenuEnableItem(VAL whdl: WINDOW, VAL id: STRING, VAL newState: BOOLEAN): INTEGER;
FUNCTION WinMenuEnableItem(VAL whdl: WINDOW, VAL id: INTEGER, VAL newState: BOOLEAN): INTEGER;
Nome dell'argomento | Descrizione |
whdl | Handle di una finestra che ha una barra dei menu |
id | L'ID della voce di menu da impostare |
newState | Il nuovo stato della voce di menu |
WinMenuEnableItem può essere utilizzato per abilitare o disabilitare una voce di menu. Le voci disabilitate non sono disponibili. La costante $SysMenuCloseItem può essere utilizzata per abilitare o disabilitare la voce Chiudi in un menu di sistema della finestra nel seguente modo:
(* This line enables the Close item *) WinMenuEnableItem (myWindow, $SysMenuCloseItem, TRUE); (* This line disables the Close item *) WinMenuEnableItem (myWindow, $SysMenuCloseItem, FALSE);
Note: Le voci di menu possono essere identificate con stringhe o numeri interi.
WinMenuEnableItem($Handle,204,TRUE);
Verifica che una voce di menu sia al momento selezionata.
FUNCTION WinMenuItemIsChecked(VAL whdl: WINDOW, VAL id: STRING): BOOLEAN;
FUNCTION WinMenuItemIsChecked(VAL whdl: WINDOW, VAL id: INTEGER): BOOLEAN;
Nome dell'argomento | Descrizione |
whdl | Handle di una finestra che ha una barra dei menu |
id | L'ID della voce di menu da impostare |
Il TSD Script consente di impostare una barra dei menu delle voci di selezione. E' possibile selezionare una determinata voce di menu per verificare se viene selezionata richiamando WinMenuItemIsChecked e inoltrando due voci:
Note: Le voci di menu possono essere identificate con stringhe o numeri interi.
IF WinMenuItemIsChecked($Handle,204) THEN CarryOutAction; END;
Visualizza la casella dei messaggi e restituisce una selezione utente. (Il testo del messaggio è limitato a 512 caratteri.)
FUNCTION WinMessageBox(VAL whdlParent: WINDOW, VAL title: STRING, VAL style: INTEGER, VAL message: STRING): INTEGER;
Handler degli eventi e DDE
Non utilizzare WinWait quando viene elaborato un messaggio $MsgDDEInitiate. $MsgDDEInitiate invia un messaggio alle applicazioni e blocca la coda messaggio fino a quando non viene restituita una risposta. Intanto, l'istruzione WinWait avvia un handler degli eventi che attende anche una risposta dalla coda messaggi. WinWait impedisce alla altre applicazioni di inviare i messaggi alla coda messaggi. Questo provoca uno stallo che blocca l'interfaccia utente.
Nome dell'argomento | Descrizione |
whdlParent | La casella padre della casella dei messaggi. Se questo è $Desktop, la casella dei messaggi non può essere a scelta obbligatoria. |
title | Il titolo visualizzato nella barra del titolo della finestra. La finestra deve avere una barra dei titoli per poter permettere la visualizzazione di un titolo. Utilizzare lo stile $WinTitle. |
style | Lo stile della casella dei messaggi. Questa è
una maschera bit che controlla l'aspetto e la funzionalità della
casella dei messaggi. Consultare la sezione Note per una spiegazione delle opzioni di stile. |
messageText | Testo del messaggio da visualizzare. Sono supportate le funzioni di Nuova riga e A capo. (Limitate a 512 caratteri.) |
Descrizione di una Casella di messaggi
Una casella di messaggi è una semplice casella di dialogo che si crea con WinMessageBox. Non è necessario creare un file .df o utilizzare Progettazione d'interfaccia.
Quando si utilizza WinMessageBox, è possibile aggiungere solamente un titolo, una stringa di testo (il messaggio) e fino ad un massimo di tre pulsanti. E' impossibile aggiungere altre caselle di testo e comandi.
Personalizzare le caselle dei messaggi
Lo stile di una casella dei messaggi è una combinazione delle
seguenti impostazioni:
Nome stile | Descrizione |
Stile pulsante | Indica le scelte del pulsante che appaiono all'interno della casella dei messaggi. |
Stile icone | Indica un tipo di icone da visualizzare all'interno della casella dei messaggi. |
Pulsante di default | Indica quale dei pulsanti deve essere utilizzato come default. |
Modalità | Indica la modalità della casella dei messaggi. Questo determina se l'utente può eseguire qualsiasi altra operazione prima di rispondere alla casella dei messaggi. |
Qualifica | In OS/2, se si desidera aggiungere una barra dei titoli alla finestra, è necessario specificare la costante $WinTitle. In Windows, tutte le finestre hanno automaticamente una barra del titolo. |
Per creare lo stile di una caselle dei messaggi scegliere uno dei seguenti stili del pulsante:
Scegliere zero o più dei seguenti stili delle icone:
Scegliere zero o uno dei seguenti pulsanti di default:
Scegliere zero o uno delle seguenti modalità:
Se la casella dei messaggi ha un pulsante Annulla, il tasto Esc chiude la casella dei messaggi e WinMessageBox restituisce $MBResultCancel. Se non esiste alcun pulsante Annulla, il tasto Esc non ha alcun effetto. $MBResultError viene restituito solo nel caso in cui si verificasse una condizione di errore interno.
La casella dei messaggi si ridimensiona automaticamente da sola, in base al testo dei messaggi e alla lunghezza del titolo. La dimensione della casella dei messaggi non può superare i due terzi dell'altezza dello schermo.
WinMessageBox ($Desktop,'Error',$MBOK+$MBIconError, 'Unable to open file');
Per un elenco degli indicatori di stile, consultare Stili della casella dei messaggi.
Finestra padre della finestra che è stata inoltrata come argomento.
FUNCTION WinParent(VAL whdl: WINDOW): WINDOW;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra della quale si richiede la finestra padre |
VARIABLES parent: WINDOW; ACTIONS parent := WinParent($Handle);
Restituisce la finestra padre della finestra che è stata inoltrata come argomento.
Imposta i colori correnti del disegno di una finestra. I colori del disegno determinano il colore del testo e il colore dello sfondo.
FUNCTION WinSetColor(VAL whdl: WINDOW, VAL foreGround: INTEGER; VAL backGround: INTEGER): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra nella quale l'operazione deve essere eseguita. |
foreGround | Il nuovo colore dei disegni in primo piano. Consultare la sezione Note per un elenco completo delle costanti dei colori. |
backGround | Il nuovo colore del disegno dello sfondo. Consultare la sezione Note per un elenco completo delle costanti dei colori. |
Costanti predefinite dei colori
Le seguenti costanti predefinite dei colori sono disponibili per l'uso:
Nota: $WinDefaultColor seleziona lo sfondo o il primo piano di default del sistema per la finestra.
$WinTransparent fa sì che tutte le operazioni di emissione del testo scrivano un testo trasparente fino a quando non si effettua una chiamata a WinSetColor con $WinOpaque come colore di sfondo. Il testo trasparente è il valore di default.
$WinOpaque fa sì che tutte le operazioni di emissione del testo scrivano testi opachi. Cioè, un rettangolo che circonda il testo viene ripulito dal colore di sfondo corrente. $WinOpaque rimane effettivo fino a quando non si effettua una chiamata a WinSetColor con $WinTransparent come colore di sfondo.
Accedere ai colori definiti dal sistema operativo
Utilizzare le seguenti costanti predefinite per accedere ai colori configurabili dall'utente definiti dal sistema operativo:
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClear( $Handle ); END;
Riferimento Lingua del Tivoli Service Desk 6.0 Developer's Toolkit Script