Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Difficoltà: 2 / 5 Vedremo in questo HowTo come è possibile collegare dei pulsanti normali ai pulsanti di sistema di un Form. Posizioneremo sopra un form 5 pulsanti al cui click verranno eseguite le operazioni di chiusura del form , la riduzione ad icona , la massimizzazione del form , il ripristino del suo stato normale e l'apertura del menu di sistemadi un form.
Il pulsante di chiusura di un form. Le operazioni da eseguire sono facilissime. Il pulsante di riduzione ad icona. Passiamo al pulsante
che riduce ad icona il form. Nel momento in cui viene cliccato, il valore
della proprietà WindowState del form assume il valore 1,
corrispondente al valore della costante
vbMinimized. Il terzo pulsante è quello di ingrandimento, detto anche pulsante
di massimizzazione
del form. Al click sopra di esso, la proprietà WindowState
riceve il valore 2 ovvero la costante vbMaximized. Il penultimo pulsante è il pulsante di ripristino
che appare ogni volta che si ingrandisce la finestra al massimo. Anche
per questo stato si sfrutta la proprietà WindowState. L'impostazione
d'essa al valore 0 oppure alla costante vbNormal provoca il ritorno alla
dimensione originale del form, prima che venisse effettuata la massimizzazione. Questo pulsante è il più complesso. Nei progetti Visual
Basic in genere ha l'icona generica dei formma
essa può essere cambiata tramite la proprietà Icon del form. Non esistendo elementi all'interno del linguaggio useremo un trucchetto
per forzare la comparsa di tale menu. In tutti i programmi per Windows
premendo la combinazione di tasti ALT SPAZIO si apre il menu di sistema. All'interno della routine dell'evento Click scriveremo Il menu di sistema attraverso l'uso dell'API. Difficoltà: 3 / 5
Esiste un'altra soluzione al problema di far apparire il menu di sistema,
ma anch'essa è sottoposta alla limitazione imposta dalla proprietà
ControlBox del form.
La prima dichiarazione è la funzione GetSystemMenu che
riporta l'handle del menu di sistema
della finestra il cui handle è il parametro hwnd. Inseriamo un nuovo pulsante di nome PulsanteMenuSysAPI e scriviamo questo codice all'interno della routine dell'evento Click:
Le prime due righe dichiarano due variabili che conterranno le coordinate dove apparirà il menu. La terza riga invece è una variabile che conterrà l'handle del menu di sistema. Poiché la funzione API TrackPopupMenu vuole le coordinate del menu in Pixel, mentre Visual Basic regolarmente utilizza come unità di misura il Twip, è necessario svolgere un semplice operazione di conversione da Twips a Pixel. All'interno dell'oggetto Screen abbiamo le proprietà TwipsPerPixelX
e TwipsPerPixelY, le quali indicano rispettivamente il numero di
Pixel per ogni Twip sull'asse X e quelli sull'asse Y. Alla riga 8 abbiamo il calcolo La nona riga effettua lo stesso calcolo per la coordinata Top del form. Alla riga 10 utilizziamo la funzione GetSystemMenu per ricevere l'handle del menu di sistema del form Me e memorizzarlo nella variabile hMenu. La riga 11 completa la routine con l'istruzione TrackPopupMenu
che fa apparire un menu di cui abbiamo l'handle. Alla funzione API forniamo
l'handle hMenu, le due coordinate COORDX e COORDY, l'handle del form cui
si riferisce ( |
Il nostro problema finisce qui. Segue un riepilogo dell'intero codice del form:
Fibia
FBI
|
Torna all'indice degli HowTo |