Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
La struttura MenuItemInfo
Comincia con la struttura MenuItemInfo la serie di guide relative all'utilizzo dei menu in Visual Basic. Tale struttura è fondamentale in quanto viene utilizzata per funzioni basilari come ad esempio GetMenuItemInfo, InsertMenuItem, SetMenuItemInfo. Essa viene ampiamente utilizzata dal sistema in quanto contiene al suo interno una serie di informazioni, le medesime informazioni che andiamo ad impostare nel momento in cui, in fase di progettazione, creiamo un menu, e che l'utente modifica utilzzando in vari modi il menu stesso. Ad esempio, nel caso in cui volessimo che una voce del menu sia contrassegnata da un segno di spunta, creando il menu, selezioneremmo la casella Checked. MenuItemInfo allora acquisirà tra tutte le informazioni relative al menu, anche quella che riguarda quella singola voce, memorizzando il suo stato 'spuntato'. Allo stesso modo, ma in una fase successiva (ossia quando il programma è compilato ed è stato avviato), l'utente che selezionerà la voce che abbiamo spuntato in fase di progettazione dirà a MenuItemInfo che lo stato di quella voce deve passare da 'spuntato' a 'non spuntato'.
Vediamo di procedere con ordine visualizzando prima di tutto come si compone la struttura di MenuItemInfo:

Type MENUITEMINFO
cbSize As Long
fMask As Long
fType As Long
fState As Long
wID As Long
hSubMenu As Long
hbmpChecked As Long
hbmpUnchecked As Long
dwItemData As Long
dwTypeData As String
cch As Long
End Type

Adesso, come al solito, andiamo a vedere uno per uno i parametri della struttura:

cbSize indica le dimensioni della struttura, calcolate naturalmente in bytes.
fMask E' la combinazione dei seguenti sottoparametri (i cosiddetti flags) che indicano quale parte della struttura utilizzare e quindi come utilizzare la struttura stessa. Qualsiasi parametro che non sia specificato a sua volta da un flag sarà automaticamente ignorato:

MIIM_STATE relativo al parametro cbSize
MIIM_ID relativo al parametro wID
MIIM_SUBMENU relativo al parametro hSubMenu
MIIM_CHECKMARKS relativo ai parametri hbmpChecked e hbmpUnchecked
MIIM_DATA relativo al parametro dwItemData
MIIM_TYPE relativo ai parametri dwTypeData e cch
fType E' la combinazione dei seguenti sottoparametri (il cui nome rimane sempre flags) che indicano la tipologia degli oggetti-menu (ossia degli oggetti di cui il menu si può comporre: immagini, segni di spunta, separatori, testo...) descritta da MenuItemInfo:

MFT_BITMAP: il menu viene visualizzato utilizzando delle immagini bitmap. dwTypeData allora sarà il contesto univoco (l'identificatore) della bitmap da utilizzare a tale scopo mentre cch di cui parleremo qui sotto verrà ignorato. Questo flag non può mai essere combinato con MFT_SEPARATOR o MFT_STRING per ovvi problemi di incompatibilità nella visualizzazione del menu. MFT_MENUBARBREAK: inserisce un separatore tra due voci. Tale separatore verrà inserito in una nuova riga se lo si mette in un menu a discesa, ad esempio:
Files
...Nuovo
...Apri
...-
In questo caso "-" viene generato da MFT_MENUBARBREAK sulla terza riga del menu a discesa. Se invece si lavora con più colonne, cominciare una nuova colonna con il separatore significa dividere le due colonne del menu con una barra verticale.
MFT_MENUBREAK: simile a MFT_MENUBARBREAK, tranne per la funzione di disegnare la barra verticale se si lavora con menu multicolonne (funzione di cui MFT_MENUBREAK non è provvisto)
MFT_OWNERDRAW: rende il menu "owner-drawn" ossia disegnabile (impostabile) dalla finestra che lo ospita, la quale si prende la responsabilità di fare tutto lei.
MFT_RADIOCHECK: posiziona un OptionButton al posto del segno di spunta alla sinistra della voce selezionata all'interno di un menu. Questo vuol dire avere un oggetto-menu di tipo "radio button".
MFT_RIGHTJUSTIFY: giustifica a destra l'oggetto-menu (un testo, un'immagine...) e tutti gli altri oggetti che vengono dopo di esso.
MFT_RIGHTORDER: il menu si aprirà da destra a sinistra
MFT_SEPARATOR: l'oggetto-menu è una barra separatrice. dwTypeData e cch verranno ignorati, inoltre MFT_SEPARATOR non può mai essere combinato con MFT_BITMAP e/o MFT_STRING.
MFT_STRING: l'oggetto-menu è rappresentato da una stringa di testo. Non può mai essere combinato con MFT_BITMAP e/o MFT_SEPARATOR.
fState E' la combinazione dei seguenti sottoparametri che determinano lo stato degli oggetti-menu:
MFS_CHECKED: l'oggetto-menu è selezionato attraverso il classico segno di spunta o l'OptionButton
MFS_DEFAULT: l'oggetto-menu è l'oggetto di default del menu (ossia quello preimpostato)
MFS_DISABLED: l'oggetto-menu è disabilitato e l'utente non può selezionarlo o deselezionarlo
MFS_ENABLED: l'oggetto-menu è abilitato alla selezione/deselezione da parte dell'utente
MFS_GRAYED: l'oggetto-menu ha colore grigio e l'utente non lo può selezionare/deselezionare
MFS_HILITE: l'oggetto-menu è evidenziato
MFS_UNCHECKED: l'oggetto-menu non è selezionato dal segno di spunta o dall'OptionButton
MFS_UNHILITE: l'oggetto-menu non è evidenziato
wID E' l'identificatore a 16 bit del menu
hSubMenu E' l'identificatore del sottomenu che si apre quando una voce del menu è selezionata
hbmpChecked E' l'identificatore della bitmap quando l'oggetto-menu è selezionato
hbmpUnchecked E' l'identificatore della bitmap nel caso in cui l'oggetto-menu è deselezionato
dwItemData Informazione non usata da Windows
dwTypeData se fType contiene MFT_STRING, questa è la stringa di testo che sarà mostrata nella voce del menu, se fType contiene MFT_BITMAP, è la bitmap da utilizzare.
cch Se dwTypeData è una stringa di testo, questo sarà il numero di caratteri contenuto in tale stringa.


Forse è un po' presto per capire esattamente tutte le implicazioni di parametri e flags. Dalla prossima lezione comunque le cose diventeranno ancora più chiare. Intanto, per mettere altra carne al fuoco, vediamo le costanti relative ai parametri che abbiamo visto, ricordando che un flag non definito porta ad ignorare il parametro a cui è legato:

MIIM_STATE &H1
MIIM_ID &H2
MIIM_SUBMENU &H4
MIIM_CHECKMARKS &H8
MIIM_DATA &H20
MIIM_TYPE &H10
MFT_BITMAP &H4
MFT_MENUBARBREAK &H20
MFT_MENUBREAK &H40
MFT_OWNERDRAW &H100
MFT_RADIOCHECK &H200
MFT_RIGHTJUSTIFY &H4000
MFT_RIGHTORDER &H2000
MFT_SEPARATOR &H800
MFT_STRING &H0
MFS_CHECKED &H8
MFS_DEFAULT &H1000
MFS_DISABLED &H2
MFS_ENABLED &H0
MFS_GRAYED &H1
MFS_HILITE &H80
MFS_UNCHECKED &H0
MFS_UNHILITE &H0



Bene, per ora è tutto...alla prossima!

Archivio:
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it