Riferimento Lingua del Tivoli Service Desk 6.0 Developer's Toolkit Script
Ritorna alla pagina principale
Imposta il font per successive operazioni di scrittura in una finestra standard.
FUNCTION WinSetFont(VAL whdl: WINDOW, VAL fontName: STRING, VAL pointSize: INTEGER, VAL faceStyle: INTEGER): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra in cui impostare il font. Deve essere una finestra standard creata da WinCreate. |
fontName | Il nome di carattere del font da impostare, come visto dal sistema operativo. Per un elenco di font di default del sistema, consultare le Note per questa istruzione. |
pointSize | La dimensione del font in punti. Le dimensioni in punti dei caratteri raster disponibili per i font standard sono: 8, 10, 12, 14, 18 e 24. Non tutti i font sono disponibili in tutte le dimensioni. I profili possono avere una qualunque dimensione in punti. Sono disponibili dei profili per tutti i font di default, tranne che per quelli proporzionali al sistema e per quelli monospace. Questi font sono disponibili solo in una dimensione di 10 punti. Tutti i font di default, tranne quelli proporzionali al sistema e quelli monospace. Questi font sono disponibili in una dimensione di soli 10 punti. |
faceStyle | Una serie di indicatori che può essere combinata
per formare uno stile di facciata composito. Valori validi sono $FontPlain (di default), $FontBold, $FontUnderScore e $FontStrikeOut. Non tutti i font supportano tutti gli stili di facciata. Questi stili vengono aggiunti a un font esistente. Alcuni font vengono creati con uno stile di facciata, ad esempio bold o italic. In questi casi, lo stile è sempre presente. |
Le seguenti costanti predefinite forniscono accesso ai font di default del sistema:
KNOWLEDGEBASE WinFont; ROUTINES PROCEDURE FontExample;
PRIVATE CONSTANTS MENU_LIST IS {'File' ,'Exit', '', 'Font','Courier','Helvetica','System Proportional', 'System Monospaced','Times Roman','Symbol Set','' }: LIST OF STRING;
ROUTINES
EVENT MainEvent(REF fontName: STRING) IS ROUTINES PROCEDURE PaintFont(VAL whdl: WINDOW, VAL fontName: STRING) IS
ACTIONS WinSetFont(whdl,'System Proportional',10, $FontPlain); WinClear(whdl); WinSetFont(whdl,fontName,8,$FontPlain); WinWriteAt(whdl,1,1,fontName & ' 8 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,10,$FontPlain); WinWrite(whdl,fontName & ' 10 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,12,$FontPlain); WinWrite(whdl,fontName & ' 12 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,14,$FontPlain); WinWrite(whdl,fontName & ' 14 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,18,$FontPlain); WinWrite(whdl,fontName & ' 18 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,24,$FontPlain); WinWrite(whdl,fontName & ' 24 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,24,$FontBold); WinWrite(whdl,fontName & ' 24 Bold '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,24,$FontItalic); WinWrite(whdl,fontName & ' 24 Italic '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName,24,$FontUnderscore); WinWrite(whdl,fontName & ' 24 Underscore '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName, 24, $FontStrikeOut); WinWrite(whdl,fontName & ' 24 StrikeOut '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,fontName, 48, $FontPlain); WinWrite(whdl,fontName & ' 48 '); WinWriteLn(whdl, 'abcdefghijllmenopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ'); WinSetFont(whdl,'System Proportional',10, $FontPlain); END (* Paint Font *);
PROCEDURE ProcessMenu(VAL whdl: WINDOW, VAL selection: INTEGER) IS ACTIONS WHEN selection IS 101 THEN SendMessage(whdl,$MsgClose); ELSWHEN 201 THEN fontName := $Courier; PaintFont($Handle,fontName); ELSWHEN 202 THEN fontName := $Helvetica; PaintFont($Handle,fontName); ELSWHEN 203 THEN fontName := $SystemProportional; PaintFont($Handle,fontName); ELSWHEN 204 THEN fontName := $SystemMonospaced; PaintFont($Handle,fontName); ELSWHEN 205 THEN fontName := $TimesRoman; PaintFont($Handle,fontName); ELSWHEN 206 THEN fontName := $SymbolSet; PaintFont($Handle,fontName); END; END (* Process Menu *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); ELSWHEN $MsgPaint THEN PaintFont($Handle,fontName); ELSWHEN $MsgMenu THEN ProcessMenu($Handle,$MenuSelection); END; END (* Main Event *);
PROCEDURE FontExample IS VARIABLES whdlMain: WINDOW; ACTIONS WinCreate($Desktop,whdlMain,MainEvent{$TimesRoman}, 0,0,60,20,'Font example', BitOr($WinBorder,$WinTitle, $WinResize,$WinMenu, $WinVScroll,$WinMinMax, $WinTaskList, $WinSysMenu,$WinAutoPos)); WinWait(whdlMain); END (* Font Example *);
Imposta e visualizza icone su una barra degli strumenti.
FUNCTION WinSetIconBar(VAL buttonList : LIST of $ToolbarNodeRecord): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra con uno stile $WinIconBar. Potrebbe essere una finestra standard o una finestra di scorrimento. |
iconList | Può trattarsi di un elenco di stringhe o di un elenco di record $ToolbarItem. Per l'elenco di stringhe, ogni stringa è il nome di un file d'immagine da visualizzare su una barra di icone. Utilizzando un metodo alternativo ($ToolbarNodeRecord), è possibile specificare attributi ulteriori, come l'ID di menu associato a un dato pulsante della barra degli strumenti o la "descrizione comandi" per un pulsante della barra degli strumenti. |
Una barra degli strumenti è un controllo simile alla barra del menu. La barra degli strumenti viene visualizzata sotto la barra del titolo e la barra di menu su una finestra. E' costituita da una riga di icone che è possibile selezionare facendo clic con il tastino destro del mouse.
Non esiste un'interfaccia di tastiera per la barra degli strumenti o per le icone su essa. Selezionando un'icona viene inviato un messaggio di menu ($MsgMenu) all'handler degli eventi della finestra. Il primo parametro (integer) dell'evento è l'ID icona.
Nota: Le icone vengono etichettate da 1 a 99 con l'icona all'estrema sinistra che ha 1 come ID.
Le icone devono avere un formato standard d'icona. I file devono trovarsi nella directory corrente. Altrimenti, deve essere specificato il PATH completo di ogni file. I file non trovati o quelli con un formato non corretto vengono saltati. Gli ID vengono assegnati in base alla posizione che occupano nell'elenco icone, non in base alla posizione di visualizzazione. Passare un elenco sconosciuto fa sì che la barra degli strumenti venga nascosta.
Nota: Quando si aggiunge una barra degli strumenti a una finestra che non ne possiede una, viene inviato alla finestra un $MsgSize con la nuova dimensione dell'area utente.
Utilizzare l'elenco dei formati di stringa nel modo seguente:
WHEN $Event IS &MsgCreate THEN WinSetIconBar($Handle, {SEARCH,CO','PRINT.ICO'}: LIST OF STRING); END;
Utilizzare l'elenco del formato $ToolbarItem nel modo seguente:
WHEN $Event IS $MsgCreate THEN theList[1].ImageFile:='SEARCH.BMP'; theList[1].ItemID:=204; theList[1].ToolTip:='Search for Text';
theList[2].ImageFile:='PRINT.BMP'; theList[2].ItemID:=106; theList[2].ToolTipText:='Print File';
theList[3].ImageFile:='SAVE.BMP'; theList[3].ItemID:=103; theList[3].ToolTipText:='Save File';
WinSetIconBar($Handle,theList);
END;
Imposta le selezioni sulla barra di menu della finestra.
FUNCTION WinSetMenuBar(VAL whdl: WINDOW, VAL menuList: LIST OF STRING): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra su cui eseguire l'operazione. |
menuList | Un elenco di stringhe che specifica un menu da
visualizzare sulla barra di menu della finestra. Per informazioni su questo formato di elenco, consultare le note per quest'istruzione. |
WinSetMenuBar può essere utilizzato per impostare la barra di menu su una finestra creata con lo stile $WinMenu.
L'elenco di stringhe passato a WinSetMenuBar specifica la struttura completa del menu. Vengono specificate sia le voci di menu orizzontali principali, sia le voci secondarie verticali. Le voci di menu vengono codificate in un formato dall'alto in basso e da sinistra a destra. Le stringhe vuote fungono da separatori. Ad esempio, se la voce di menu all'estrema sinistra è File e le Voci file includono Nuovo, Salva, Salva con nome e Esci, l'elenco menu viene visualizzato nel modo seguente:
{'File','New','Save','Save ~As','Exit',''}: LIST OF STRING;
Segue la seconda colonna delle voci.
E' possibile utilizzare una tilde (~) per contrassegnare una
lettera che fungerà da selettore di una voce del menu. I parametri
nella seguente tabella possono essere ubicati
all'inizio di una voce dell'elenco di menu per raggiungere i
risultati visualizzati per ogni parametro.
Parametro | Risultato |
/C | La voce di menu viene inizialmente spuntata. |
/D | La voce di menu viene inizialmente disabilitata. |
/S | La voce di menu è statica e non può essere selezionata. |
/L | La voce di menu non viene visualizzata. Al suo posto appare un separatore di riga. |
/H | Il menu viene tenuto aperto quando la voce è selezionata. |
// | Viene visualizzata una barra (/). Non vengono elaborati altri parametri. |
Quando si aggiunge una barra di menu a una finestra che non ne possiede una, alla finestra viene inviato un messaggio $MsgSize con la nuova dimensione dell'area utente.
KNOWLEDGEBASE WinMenu; TYPES MainWinRec IS RECORD width: INTEGER; height: INTEGER; fontName: STRING; mousePointer: STRING; statusBar: STRING; END;
CONSTANTS MENU_LIST IS {'File' , 'E~xit', '', (* 101 *) 'Menu', '~Enable', (* 201 *) '~Disable', (* 202 *) '/L ', (* Put separator line in menu *) '/C/D~Check', (* 204 start check and disabled *) '', (* Mark end of menu sub menu *) 'Help', 'About', (* 301 *) '' (* Mark end of help submenu *) }: LIST OF STRING;
ROUTINES PROCEDURE MenuExample;
PRIVATE ROUTINES
EVENT MainEvent(REF mainWinData: MainWinRec) IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); ELSWHEN $MsgPaint THEN WinClear( $Handle ); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS 101 THEN SendMessage($Handle,$MsgClose); ELSWHEN 201 THEN WinMenuEnableItem($Handle,204,TRUE); ELSWHEN 202 THEN WinMenuEnableItem($Handle,204,FALSE); ELSWHEN 204 THEN IF WinMenuItemIsChecked($Handle,204) THEN WinMenuCheckItem($Handle,204,FALSE); ELSE WinMenuCheckItem($Handle,204,TRUE); END; ELSWHEN 301 THEN WinMessageBox($Handle,'About',$MBOK,'Menu example'); END; END; END (* Main Event *);
PROCEDURE MenuExample IS VARIABLES whdlMain: WINDOW; ACTIONS WinCreate($Desktop,whdlMain,MainEvent,0,0,60,20, 'Menu example', BitOr($WinBorder,$WinTitle, $WinMenu,$WinMinMax, $WinTaskList,$WinAutoPos, $WinSysMenu)); WinWait(whdlMain); END (* Menu Example *);
Imposta il menu a comparsa per una finestra, sostituendo tutti i menu a comparsa esistenti. Il menu a comparsa appare automaticamente con la corretta azione del mouse per la piattaforma. Le selezioni dal menu a comparsa vengono riportate da $MsgMenu.
FUNCTION WinSetPopupMenu ( VAL whdl: WINDOW, VAL menuList: LIST OF 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 |
menuList | Elenco delle voci del menu a comparsa per la finestra |
L'elenco di stringhe passato a WinSetPopupMenu specifica la struttura completa del menu. Vengono specificate sia le voci di menu orizzontali principali, sia le voci secondarie verticali. Le voci di menu vengono codificate in un formato dall'alto in basso e da sinistra a destra. Le stringhe vuote fungono da separatori. Ad esempio, se la voce di menu all'estrema sinistra è File e le Voci file includono Nuovo, Salva, Salva con nome e Esci, l'elenco menu appare nel seguente formato:
{'File','New','Save','Save ~As','Exit',''}: LIST OF STRING;
Segue la seconda colonna delle voci.
E' possibile utilizzare una tilde (~) per contrassegnare una
lettera che fungerà da selettore di una voce del menu. I parametri
nella seguente tabella possono essere ubicati
all'inizio di un'opzione dell'elenco di menu per raggiungere i
risultati visualizzati per ogni parametro.
Parametro | Risultato |
/C | La voce di menu viene inizialmente spuntata |
/D | La voce di menu viene inizialmente disabilitata |
/S | La voce di menu è statica e non può essere selezionata |
/L | La voce di menu non viene visualizzata. Al suo posto appare un separatore di riga |
/H | Il menu viene tenuto aperto quando la voce è selezionata |
// | Viene visualizzata una barra (/). Non vengono elaborati altri parametri |
Quando si aggiunge una barra di menu a una finestra che non ne possiede una, alla finestra viene inviato un messaggio $MsgSize con la nuova dimensione dell'area utente.
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 popup;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (*Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES MAIN_MENU {'File', '/CNew', '/DExit' }: LIST OF STRING;
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'WinSetPopupMenu Test', $WinDefaultStyle); (* Set the popup menu. The 'New' menu item is initially checked and *) (* the 'Exit' menu item is initially diabled *) WinSetPopupMenu(mainWindow, MAIN_MENU); WinWait(mainWindow);
END;
WinLoadPopupMenu
Imposta l'ubicazione e la dimensione del separatore di una barra di scorrimento.
FUNCTION WinSetScrollBar(VAL whdl: WINDOW, VAL scrollBarID, windowSize, dataSize,windowLoc: INTEGER): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra sulla quale l'operazione deve essere eseguita. |
scrollBarID | L'etichetta della barra di scorrimento da impostare. Deve essere $WinVScroll (verticale) o $WinHScroll (orizzontale). Se la barra di scorrimento in questione non esiste, non viene effettuata alcuna azione. Non viene riportato alcun errore. |
windowSize | La dimensione della finestra nelle unità dei dati. Le unità sono arbitrarie e sono relative solo ai parametri dataSize e windowLoc. Questi parametri devono essere espressi nelle stesse unità. |
dataSize | La dimensione dei dati, espressa nelle stesse unità utilizzate per specificare la dimensione della finestra. |
windowLoc | La posizione del lato superiore o di quello sinistro della finestra, espresso nelle stesse unità dei parametri precedenti. |
KNOWLEDGEBASE FileView; CONSTANTS MENU_OPEN IS 101; MENU_EXIT IS 102; MENU_LIST IS {'~File','~Open','e~xit',''}: LIST OF STRING; TYPES EditorData IS RECORD fileName: STRING; yLen : INTEGER; lineCount: INTEGER; pageTop: INTEGER; statusLine: STRING; lines: LIST OF STRING;
END;
ROUTINES PROCEDURE FileView;
PRIVATE ROUTINES
EVENT EditorEvent(REF data: EditorData) IS VARIABLES loc: INTEGER; 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); result := FOpen(editFile, fileName, $Read); IF result <= 0 THEN WinMessageBox($Handle, 'Error', $MBOK + $MBIconError, 'Can not open file ' & fileName); Exit; END; data.lineCount := FReadText(editFile, data.lines); FClose(editFile); data.pageTop := 0; data.statusLine := ' File: ' & fileName; PostMessage($Handle, $MsgPaint); PostMessage($Handle, $MsgPaintStatus); ELSWHEN MENU_EXIT THEN SendMessage( $Handle, $MsgClose ); END;
END (* Process Main Menu *);
PROCEDURE ProcessChar(VALUE character: INTEGER) IS ACTIONS WHEN character IS $KeyDownArrow THEN IF data.pageTop + data.yLen < data.lineCount THEN data.pageTop := data.pageTop + 1; PostMessage($Handle, $MsgPaint); END; ELSWHEN $KeyUPArrow THEN IF data.pageTop > 0 THEN data.pageTop := data.pageTop - 1; PostMessage($Handle, $MsgPaint); END; ELSWHEN $KeyPageDown THEN IF data.pageTop + data.yLen < data.lineCount THEN data.pageTop := data.pageTop + data.yLen; PostMessage($Handle, $MsgPaint); END; ELSWHEN $KeyPageUp THEN IF data.pageTop > 0 THEN data.pageTop := data.pageTop - data.yLen; IF data.pageTop < 0 THEN data.pageTop := 0; END; PostMessage($Handle, $MsgPaint); END; ELSWHEN $KeyControlPageDown THEN IF data.pageTop + data.yLen < data.lineCount THEN data.pageTop := data.lineCount - data.yLen; PostMessage($Handle, $MsgPaint); END; ELSWHEN $KeyControlPageUp THEN IF data.pageTop > 0 THEN data.pageTop := 0; PostMessage($Handle, $MsgPaint); END; END; END (* ProcessChar *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle, MENU_LIST); data.lineCount := 0; data.pageTop := 1; data.statusLine := 'File:'; ELSWHEN $MsgSize THEN (* Size Message *) data.yLen := $EventParm(2, INTEGER); WinSetScrollBar($Handle,$WinVScroll,data.lineCount, data.yLen,data.pageTop); ELSWHEN $MsgPaint THEN WinSetScrollBar($Handle,$WinVScroll,data.lineCount, data.yLen,data.pageTop); FOR loc := 1 to data.yLen + 1 DO IF loc + data.pageTop> data.lineCount THEN ExitLoop; END; WinGoToXY($Handle, 1, loc); WinClearEOL($Handle); WinWriteAt($Handle,1,loc,data.lines[ data.pageTop +loc ]); END; WinGoToXY($Handle, 1, loc); WinClearEOW($Handle); ELSWHEN $MsgMenu THEN (* Menu Message *) ProcessMainMenu($MenuSelection); ELSWHEN $MsgChar THEN ProcessChar($EventParm(1, INTEGER)); ELSWHEN $MsgScroll THEN (* Scroll bar *) IF $EventParm(1, INTEGER) =$WinVScroll THEN data.pageTop := $EventParm(2, INTEGER); PostMessage($Handle, $MsgPaint); END; ELSWHEN $MsgPaintStatus THEN (* Status Bar *) WinClear( $Handle ); WinWrite($Handle,data.statusLine); END; END (* Editor Event *);
PROCEDURE FileView IS VARIABLES whdl: WINDOW; ACTIONS WinCreate($Desktop,whdl,EditorEvent,0,0,0,0, 'KML File viewer', BitOr($WinBorder,$WinTitle, $WinResize,$WinSysMenu, $WinMenu,$WinVSCroll, $WinStatus,$WinAutoPos, $WinAutoSize,$WinTaskList)); WinWait(whdl); END (* File View *);
WinCreate
Imposta il testo nella barra del titolo del modulo della casella di dialogo o della finestra.
FUNCTION WinSetTitle(VAL whdl: WINDOW, VAL newTitle: STRING): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della casella di dialogo o della finestra per cui è necessario modificare il testo del titolo. |
newTitle | Il nuovo titolo per il modulo della casella di dialogo o della finestra. |
Questa funzione viene inoltre implementata come messaggio che può essere passato a un modulo della casella di dialogo o a una finestra ($MsgSetTitle).
KNOWLEDGEBASE title;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'If you see this it did not work', $WinDefaultStyle); WinSetTitle(Handle, 'It works!'); WinWait(Handle); END;
Attiva o disattiva il puntatore di attesa (clessidra). Il puntatore di attesa ha effetto su tutte le finestre nell'applicazione.
WinSetWaitPointer ( VAL state : BOOLEAN ) : INTEGER;
Nome dell'argomento | Descrizione |
state | 'True' visualizza il puntatore di attesa, mentre 'False' ripristina il puntatore precedente. |
WinSetWaitPointer attiva o disattiva il puntatore di attesa a seconda dello stato fornito. Esso viene utilizzato per fornire un segnale visivo quando l'applicazione è occupata o ancora in fase di elaborazione.
KNOWLEDGEBASE wait;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreateScrollWindow($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $SystemMonoSpaced, 10, $WinDefaultStyle); WinSetWaitPointer(TRUE); (* Set the pointer to be the wait pointer before doing intensive processing *) (* and change it back afterwards *) WinSetWaitPointer(FALSE); WinWait(mainWindow);
END;
Mostra o nasconde una casella di dialogo o una finestra.
FUNCTION WinShowWindow(VAL whdl: WINDOW, VAL state: BOOLEAN): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle del modulo della casella di dialogo o della finestra il cui stato di visibilità deve essere modificato |
state | Impostare su TRUE se la finestra deve essere "visualizzata", impostare su FALSE se deve essere "nascosta." |
Utilizzato anche come messaggio a una casella di dialogo o una finestra ($MsgShow).
KNOWLEDGEBASE title;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'If you see this it did not work', $WinDefaultStyle); WinShowWindow(Handle, FALSE); SysDelay(1000); WinShowWindow(HANDLE, TRUE); WinWait(Handle); END;
Sospende l'esecuzione mentre è presente una finestra.
FUNCTION WinWait(VAL whdl: WINDOW): INTEGER;
Non utilizzare WinWait quando viene elaborato un messaggio $MsgDDEInitiate. $MsgDDEInitiate invia un messaggio alle applicazioni e blocca la coda messaggi 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 |
whdl | L'handle della finestra sulla quale eseguire l'operazione |
WinWait è generalmente utilizzato nella procedura principale dell'applicazione per attendere fino a che la finestra principale non è più attiva.
VARIABLES whdl: WINDOW; ACTIONS WinCreateScrollWindow($Desktop,whdl,$NullHandler,0,0,0,0, 'Window Title','',0, BitOr($WinBorder,$WinTitle, $WinResize,$WinSysMenu, $WinAutoPos,$WinAutoSize, $WinTaskList)); WinWait(whdl);
Richiede la larghezza di una finestra.
FUNCTION WinWidth(VAL whdl: WINDOW): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra sulla quale eseguire l'operazione |
WinWidth restituisce la larghezza corrente dell'area client della finestra indicata, espressa in celle di caratteri.
VARIABLES width: INTEGER; ACTIONS width := WinWidth($Handle);
Scrive una stringa in una finestra nella posizione corrente.
FUNCTION WinWrite(VAL whdl: WINDOW, VAL outputText: LIST OF STRING): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra su cui scrivere. L'handle può essere riferito a una finestra standard (generica) o a una finestra di scorrimento. |
outputText | Un elenco di stringhe da visualizzare. E' valida anche una stringa singola. Questo comando viene eseguito su ogni voce nell'elenco. |
WinWrite può essere utilizzato per scrivere informazioni in una finestra generica o in una finestra di scorrimento. Non può essere utilizzato per scrivere informazioni su una casella di dialogo.
Ricerca dell'ubicazione corrente della figura
TSD Script conserva l'ubicazione corrente della figura per ogni finestra generica e di scorrimento. Il testo scritto da WinWrite appare in quella posizione e la posizione x dell'ubicazione del disegno viene spostata in avanti dopo l'operazione di scrittura. E' possibile rilevare la posizione attuale richiamando le funzioni WinX e WinY.
Utilizzo di identificativi del formato
Gli identificativi del formato sono delle vere e proprie maschere di bit in cui diversi bit controllano le diverse parti del formato. WinWrite elabora un elenco di stringhe che consente di controllare la formattazione per la visualizzazione in WinWrite e altre istruzioni.
In generale, ogni espressione può essere seguita da due identificativi di formato:
Questi identificativi di formato vengono separati l'un l'altro e dall'espressione dal segno d'interpunzione due punti. Ad esempio:
VARIABLES s : STRING; i: INTEGER; r: REAL; b: BOOLEAN; (* true false *) d: DATE; (* right, empty pad, usa *) t: TIME; (* right, empty pad, 24 hour military *) ACTIONS s := 'First Bank'; i := 951; r := 14567.89; d := {2,15,1956}: DATE; t := {11,45,0}: TIME; WinWrite($Handle,s:20); -- outputs 'First Bank' WinWrite($Handle,i:5); -- outputs '951 ' WinWrite($Handle,r:9:2);-- outputs '14567.89 ';
WinWrite($Handle,d:10:$FmtDateMonthDayYear); -- outputs '2/11/1956' WinWrite($Handle,d:10:BitOr($FmtDateMonthDayYear, $FmtDateTruncateCentury); -- outputs '2/11/56 ' WinWrite($Handle,t:7:$FmtTimeAMPM); -- outputs '11:45 AM';
Nota: I vari indicatori di formato vengono descritti in Indicatori del formato del tipo di dati.
identificatori del formato per Numeri reali
L'identificativo del formato per i numeri reali può codificare anche il numero di cifre a destra della virgola decimale da visualizzare. Ad esempio,
WinWrite($Handle, r :10 : BitOr(2, $FmtLeftJustify));
giustifica l'emissione a sinistra e visualizza due cifre a destra della virgola decimale. Per default, i numeri reali visualizzano sei cifre a destra della virgola decimale.
Formati di default per i tipi di dati
Esistono dei formati di default per i vari tipi di dati. Questi valori di default possono variare in relazione alla nazione, perché i valori di default per il tipo di dati (compresi quelli degli Stati Uniti) si basano sulle impostazioni internazionali del pannello di controllo.
La tabella seguente mostra i formati di default degli Stati Uniti
per i tipi di dati.
Tipo di dati | Formato di default degli Stati Uniti |
string | $FmtRightJustify |
integer | $FmtRightJustify+$FmtIntUngrouped+$FmtBlankPad+$FmtIntSignNegOnly+$FmtIntDecimal |
real | $FmtRightJustify+$FmtRealUngrouped+$FmtBlankPad+$FmtRealSignNegOnly+
$FmtRealDecimalDot |
Boolean | $FmtRightJustify+$FmtBoolTrueFalse |
date | $FmtRightJustify+$FmtDateMonthDayYear+$FmtBlankPad+$FmtDateSlashSeparators+
$FmtDateNumericMonth+$FmtDateFullYear |
time | $FmtRightJustify+$FmtTimeWithSeconds+$FmtBlankPad+$FmtTimeMilitary |
I formati di default possono essere modificati utilizzando le funzioni StringFormat, IntegerFormat, RealFormat, BooleanFormat, DateFormat e TimeFormat.
KNOWLEDGEBASE Clip;
CONSTANTS MENU_REFRESH IS 101; MENU_EXIT IS 102;
ROUTINES PROCEDURE ClipView;
PRIVATE
CONSTANTS MENU_LIST IS {'~File','~Refresh','E~xit',''}: LIST OF STRING; ROUTINES EVENT ClipboardEvent(REF clipBoard: STRING) IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); SysGetClipboard(clipBoard); WinWrite($Handle,clipBoard); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS MENU_REFRESH THEN SysGetClipboard(clipBoard); WinClear( $Handle ); WinWrite($Handle,clipBoard); ELSWHEN MENU_EXIT THEN SendMessage($Handle,$MsgClose); END; END; END (* Clipboard Event *); PROCEDURE ClipView IS VARIABLES whdl: WINDOW; ACTIONS WinCreateScrollWindow($Desktop,whdl,ClipboardEvent{''}, 0,0,0,0,'KML Clipboard viewer', '',10, BitOr($WinBorder,$WinTitle, $WinResize, $WinSysMenu, $WinMenu,$WinAutoPos, $WinAutoSize,$WinVScroll, $WinHScroll,$WinTaskList)); WinWait(whdl); END (* Clip View *);
Per ulteriori informazioni, consultare Indicatori del formato del tipo di dati.
Scrive una stringa in una finestra nella posizione specificata.
FUNCTION WinWriteAt(VAL whdl: WINDOW, VAL xLoc, yLoc: INTEGER, VAL outputText: LIST OF STRING): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra in cui scrivere. L'handle può essere riferito a una finestra standard (generica) o a una finestra di scorrimento. |
xLoc | La posizione della X dell'inizio della stringa. |
yLoc | La posizione della Y dell'inizio della stringa. |
outputText | Un elenco di stringhe da visualizzare. E' valida anche una stringa singola. Questo comando elabora ogni voce nell'elenco. |
WinWriteAt può essere utilizzata per scrivere informazioni a partire da una posizione specifica in una finestra di scorrimento o generica. Alla fine della sua elaborazione, WinWriteAt lascia la posizione attuale del disegno (la posizione del cursore) nella posizione di un carattere a destra dell''ultimo carattere scritto.
WHEN $Event IS $MsgPaint THEN WinWriteAt($Handle,1,1,context.fileName); END;
Scrive una stringa in una finestra e sposta in avanti il puntatore della posizione all'inizio della riga successiva.
FUNCTION WinWriteLN(VAL whdl: WINDOW, VAL outputText: LIST OF STRING): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra su cui scrivere. L'handle può essere riferito a una finestra standard (generica) o a una finestra di scorrimento. |
outputText | Un elenco di stringhe da visualizzare. E' valida anche una stringa singola. Questo comando elabora ogni voce nell'elenco. |
WinWriteLN utilizza un loop FOR implicito: Scrive l'elenco completo delle stringhe in modo sequenziale.
WinWriteLN è identico a WinWrite, ma sposta il cursore della finestra all'inizio della riga successiva.
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 *);
Restituisce la coordinata x dell'ubicazione attuale della figura.
FUNCTION WinX(VAL whdl: WINDOW): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra sulla quale eseguire l'operazione |
WinX differisce da WinGetXPos perché riporta la posizione di un carattere in una finestra mentre WinGetXPos interroga l'angolo in alto a sinistra di una finestra o di una casella di dialogo.
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;
WinY
Restituisce la coordinata y dell'ubicazione attuale della figura.
FUNCTION WinY(VAL whdl: WINDOW): INTEGER;
Nome dell'argomento | Descrizione |
whdl | L'handle della finestra sulla quale eseguire l'operazione |
WinY differisce da WinGetYPos perché riporta la posizione di un carattere in una finestra mentre WinGetYPos interroga l'angolo in alto a sinistra di una finestra o di una casella di dialogo.
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;
WinX
Riferimento Lingua del Tivoli Service Desk 6.0 Developer's Toolkit Script