Animation e CommonDialog
Il controllo Animation è contenuto nel file Mscomct2.ocx (che bisogna aggiungere al
progetto).
Il controllo Animation permette di eseguire file AVI non dotati di suoni. I metodi, del
controllo, che utilizzeremo sono: Play, Open e Close.
Open, apre un file .avi per lesecuzione, close lo chiude.
Play, esegue un file .avi precedentemente caricato nel controllo Animation.
Descriviamo solo la sintassi del metodo Play (le altre sono abbastanza semplici).
Animation1.Play [= ripetizione, inizio, fine].
|
Ripetizione specifica quante volte verrà eseguito il file. Inizio specifica il fotogramma
iniziale, il valore massimo è 65535. Fine specifica il fotogramma finale anche in questo
caso il valore massimo è 65535. Il controllo CommonDialog è contenuto nel file
comdlg32.ocx. Esso mette a disposizione una serie di finestre per lesecuzione di
operazioni come: apertura e salvataggio di file, impostazione delle opzioni di stampa,
selezione dei colori e dei tipi di carattere.
Metodo |
Finestra di dialogo visualizza |
ShowOpen |
Apri |
ShowSave |
Salva con nome |
ShowColor |
Color |
ShowFont |
Carattere |
ShowPrinter |
Stampa o Opzioni di stampa |
ShowHelp |
Attiva il motore della Guida |
Tab. 3: Metodi e tipi di finestra visualizzata dal controllo
Common Dialog
Il controllo inoltre permette di visualizzare la Guida in linea, utilizzando il motore
della guida di Windows. In altre parole il controllo è lintermediario tra Visual
Basic e la DLL Commdlg.dll di Windows che, appunto, fornisce gli elementi da visualizzare.
Nella Tab. 3 sono elencati i metodi del controllo e il tipo di finestra visualizzata. Noi
utilizzeremo il metodo ShowOpen che visualizza la finestra per aprire dei file. Il tipo di
file da selezionare si specifica attraverso il metodo Filter, del quale descriviamo
brevemente la sintassi.
CommonDialog.Filter [= descrizione1 |filtro1
|descrizione2 |filtro2...]
|
Descrizione specifica il tipo di file per esempio AVI. Filtro specifica lestensione
dei file da selezionare. Per separare i valori di descrizione e filtro deve essere usato
il simbolo pipe | (ASCII 124). Allora nel nostro caso scriveremo:
CommonDialog1.Filter = avi (*.avi)|*.avi
|
dove la descrizione è: avi (*.avi) e viene mostrata nella casella di riepilogo tipo
file della finestra di dialogo.
Applicazione Poliglotta
Ora descriviamo come usare i vari elementi introdotti. A tal fine creiamo
unapplicazione che gestisce risorse (messaggi, suoni e filmati,
) in varie
lingue. Nellapplicazione prevedremo la possibilità di selezionare la lingua
dinteresse e in base ad essa personalizzare una form. La personalizzazione
consisterà nel caricamento degli elementi necessari dal file di risorse. In particolare
lapplicazione funziona nel modo seguente. Dopo aver selezionato la lingua, in un
combobox vengono inserite le
Fig. 2: Mostra come organizzare le varie risorse nel file. |
etichette video e suono (espressi nella
lingua scelta), in un textbox viene mostrato un messaggio, mentre in una picturebox viene
caricata la bandiera della nazione in cui la lingua è parlata. Se sul combobox verrà
selezionata letichetta suono sarà eseguita una risorsa sonora mentre se
verrà selezionata letichetta video verrà aperta una finestra che
permetterà di selezionare un file AVI. Inoltre sulla form sono previste delle label che
permettono di avviare o stoppare il suono o il file AVI. Per creare lapplicazione
procedere nel modo seguente. Creare un nuovo progetto nel quale inserire una form, un
modulo e un file di risorse. Sulla form inserire i seguenti elementi: una Picturebox, che
mostrerà la bandiera; due OptionButton, che permetteranno di selezionare la lingua; una
label, per letichetta del combo; un ComboBox, che conterrà due valori che
permetteranno di selezionare lelemento da eseguire (Video oppure Suono), un
RichTextBox (o un textbox multilinea) che conterrà un messaggio; un controllo Animation e
un controllo CommandDialog che serviranno per mostrare i file AVI. Tra i file del vostro
computer cercate i suoni, i file Avi e le icone da mostrare sulla form e sistemateli in
una directory facilmente selezionabile. Costruite il file di Risorse con le indicazioni
seguenti e osservando la Fig. 2. Per il momento pensiamo di gestire solo due lingue:
inglese ed italiano. Nel file di risorse allora bisogna prevedere: limmagine della
bandiera italiana e di quella inglese, le stringhe video e suono (in inglese ed in
italiano), le stringhe inizio e fine, le stringe per letichetta che specifica il
ruolo del combobox, le stringhe per il corpo del messaggio, una icona per il mouse da
mostrare quando il mouse è sulle label controllano dei file sonori e AVI. Per recuperare
le risorse organizziamo i loro ID nel modo seguente. Le risorse in italiano le facciamo
iniziare dallId 100, quelle in inglese dallId 200, mentre per capire in quale
posizione si trovano le etichette del combo, i cursori, i suoni ecc. utilizziamo i valori
specificati nel tipo enum che introdurremo tra poco. Ricordiamo che il tipo enum serve per
dichiarare delle variabili di enumerazione; la sintassi è semplice ed immediata, basta
racchiudere tra le parole chiavi Enum ed End Enum le stringhe da numerare. Allora nel
modulo (.BAS) del progetto inseriamo la definizione delle costanti e le funzioni
dellAPI che permettono di eseguire i file sonori. |
Option Explicit
Public Const SetItaliano = 100
Public Const SetInglese = 200
Public Enum Risorse
combo = 1
comandi = 10
tipo = 20
icone = 30
frase = 40
Cursore = 50
suoni = 60
End Enum
Public Id As Long
Global SuonoB() As Byte
Sub InizioSuono(ByVal Id As Integer)
SuonoB = LoadResData(Id, Suoni)
sndPlaySound SuonoB(0), SND_ASYNC Or SND_NODE
FAULT Or SND_MEMORY
End Sub
Sub FineSuono()
sndPlaySound ByVal vbNullString, 0&
End Sub
|
Notate che combo=1 indica, che le etichette del combo hanno un offset di 1 rispetto
al punto dinizio (al SetItaliano,
). Le procedure InizioSuono e FineSuono
servono ad eseguire o terminare un file sonoro attraverso la sndPlaySound, notate che
viene usata la LoadResData per caricare la risorsa Suono il cui identificatore è
specificato con il parametro Id. Il suono è caricato in un array di byte. Adesso passiamo
ad implementare la form. Innanzitutto rinominate i suoi elementi nel modo seguente:
OptionIta, OptionIng, ComboTipo e LabelTipo (il combo che permette di selezionare il tipo
di elemento), LabelStart e LabelStop (le label per controllare i suoni e i video), Body
(il Textbox che permette di visionare il testo del messaggio); PictureTop (la picture che
mostra la bandiera). Nella form e nei suoi elementi inserite il seguente codice.
Private Sub Form_Load()
Opzioni
End Sub
|
Nella Form_Load richiamiamo la procedura Opzioni che permette di capire quale lingua è
selezionata (di default considerate litaliano).
Private Sub Opzioni()
If OptionIng = True Then
Id = SetInglese
End If
If OptionIta = True Then
Id = SetItaliano
End If
Rinfresca
End Sub
|
La Opzioni setta la variabile Id sulla lingua scelta e fa il refresh della
form.
Private Sub Rinfresca()
Me.ComboTipo.Clear
Me.ComboTipo.AddItem LoadResString(Id + combo)
Me.ComboTipo.AddItem LoadResString(Id + combo + 1)
LabelTipo = LoadResString(Id + tipo)
PictureTop = LoadResPicture(Id + icone, vbResIcon)
LabelStart = ; LabelStop =
Body = LoadResString(Id + frase)
End Sub
|
La Rinfresca imposta il combo e la sua label, mostra la bandiera nella PictureTop,
ripulisce le label di comando e carica il messaggio. Naturalmente nei due Option_Click
inseriamo il seguente codice.
Private Sub OptionIng_Click()
Opzioni
End Sub
Private Sub OptionIta_Click()
Opzioni
End Sub
|
|