Application

Da Gambas-it.org - Wikipedia.
Versione del 12 gen 2009 alle 07:28 di 151.16.228.93 (Discussione)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Questa classe gestisce tutte le informazioni relative all'applicazione corrente, e garantisce l'accesso all'ambiente e alla linea di comando del processo. La classe è anche utilizzata come classe base per gli oggetti Application delle librerie gb.gtk e gb.qt.


Tipo


La classe è di tipo statico, metodi e proprietà compresi, ovvero è sempre presente in memoria, ed è accessibile da tutti i componenti del processo.


Proprietà


ActiveControl : (oggetto, solo lettura, solo librerie "gb.gtk" e "gb.qt")

Ritorna il controllo che ha attualmente il fuoco.

ActiveWindow : (oggetto, solo lettura, solo librerie "gb.gtk" e "gb.qt")

Ritorna la finestra corrente attiva, ad esempio quella proprietaria del controllo che ha attualmente il fuoco.

Args : (oggetto, solo lettura)

Ritorna un array contenente gli argomenti passati da riga di comando al programma. Dato che l'array è in realtà un oggetto Collection, la lettura degli elementi può essere effettuata solo tramite il comando FOR EACH...NEXT; ogni valore ritornato è una stringa. Il primo elemento ritornato (argumento #0) è sempre il nome del programma.

Esempio di lettura:

 PUBLIC SUB Main()
   DIM sArg AS String
   FOR EACH sArg IN Application.Args
     PRINT sArg
   NEXT
 END

Busy : (intero, solo librerie "gb.gtk" e "gb.qt")

Modifica lo stato di occupato dell'applicazione. Quando questa proprietà è maggiore di zero, il cursore del mouse è bloccato (visualizza una clessidra) per mostrare che l'applicazione è occupata e non risponde ai comandi. Il valore di questa proprietà và incrementato all'avvio di una lunga elaborazione, e decrementato al termine della stessa. In questo modo viene evitato il lampeggio fastidioso durante il processo. Attenzione a decrementare questa proprietà, se l'elaborazione fallisce (vedi TRY...CATCH)!

Daemon : (logico)

Se uguale a TRUE, l'applicazione viene eseguita come un demone. In questo caso, l'applicazione si biforca e termina l'oggetto parent di recente creazione, di modo che il reale parent dell'applicazione non attende la sua chiusura; la directory di lavoro corrente diventa la root "/"; lo standard input, lo standard output e lo standard error output vengono chiusi. Una volta impostata come demone, l'applicazione non può ritornare nello stato normale (Daemon=FALSE). La directory di lavoro temporanea viene rinominata con l'identificatore del processo dopo la variazione.

Dir : (stringa, solo lettura)

Ritorna la directory dell'applicazione. Questa è la directory corrente di lavoro all'avvio dell'applicazione.

Embedder : (puntatore, solo librerie "gb.gtk" e "gb.qt")

Env : (oggetto, solo lettura)

Ritorna un array di stringhe virtuale, contenente le variabili di ambiente (ovvero di sistema). Come per Args, la lettura degli elementi può essere effettuata solo tramite il comando FOR EACH...NEXT.

Esempio di lettura:

 PUBLIC SUB Main()
   DIM sEnv AS String
   FOR EACH sEnv IN Application.Env
     PRINT sEnv
   NEXT
 END

Font : (oggetto, solo librerie "gb.gtk" e "gb.qt")

Ritorna o modifica globalmente il font usato dall'applicazione.

Handle : (intero, solo lettura)

Ritorna il pid di sistema (identificatore di processo) del programma.

Id : (intero, solo lettura)

Ritorna il pid di sistema (identificatore di processo) del programma (come Handle).

MainWindow : (oggetto, solo lettura, solo librerie "gb.gtk" e "gb.qt")

Ritorna la finestra principale dell'applicazione. La finestra principale è la prima finestra (o Form) creata nell'applicazione. La chiusura della finestra principale implica la chiusura di tutte le finestre aperte, e il termine dell'applicazione.

Name : (stringa, solo lettura)

Ritorna o imposta il nome del programma, così come definito nel progetto.

Path : (stringa, solo lettura)

Ritorna la directory dove risiede l'applicazione.

Return : (intero)

Ritorna o imposta il valore che l'applicazione ritorna al sistema quando termina. La proprietà può essere utilizzata, ad esempio, per ritornare un codice particolare al sistema operativo in caso di errore. Di default, l'applicazione termina con un valore '1', se il programma termina a causa di un errore, altrimenti ritorna '0'.

Theme : (stringa, solo librerie "gb.gtk" e "gb.qt")

Ritorna o imposta globalmente il tema dell'applicazione. Al momento, il valore viene usato solo dalla classe Stock, per la selezione di un blocco di icone.

Title : (stringa, solo lettura)

Ritorna il titolo dell'applicazione, così come impostato nel progetto.

ToolTip : (oggetto, solo lettura, solo librerie "gb.gtk" e "gb.qt")

Ritorna un oggetto virtuale, usato per configurare i messaggi tooltip. Le proprietà dell'oggetto virtuale, permettono di abilitare globalmente i tooltip, e di definirne il font.

Version : (stringa, solo lettura)

Ritorna la versione del programma, così come impostata nel progetto. Il valore comprende 3 numeri, separati da un punto, che identificano: mayor version, minor version, release version. E' da tener presente che la generazione di un nuovo eseguibile in ambiente IDE, aggiorna automaticamente la versione alla release successiva.

Esempio:

 PRINT Application.Version
 > 0.0.1


Metodi


La classe Application, nella libreria "gb" non ha metodi, nella sua struttura di base; eventuali funzionalità possono essere aggiunte, creando una nuova classe derivata da Application.


Eventi


Application_Read() : Se questo metodo viene definito nella classe di lancio del progetto, lo standard input viene catturato dall'interprete, e il metodo viene chiamato ad ogni lettura dello standard input.


Descrizione


Anche se statica, è possibile creare classi Application derivate da quella di base, personalizzabili a seconda delle proprie esigenze (aggiunta di altre proprietà e/o metodi). Ad esempio:

 Class MyApplication
   STATIC PUBLIC SUB Run()
     ...
   END

Una cosa molto importante è che tutte le nuove proprietà e i nuovi metodi aggiunti, siano dichiarati STATIC; non è possibile, e ammesso, costruire metodi e proprietà dinamiche in una classe dichiarata statica (mentre è vero il contrario, anche se i metodi non devono contenere riferimenti, o chiamate, a entità dinamiche della stessa classe).

Esempi