Guide e Tutorials:indexed | |||||||||
CREARE UNA FORM DA UNA TEXTBOX(Tutorial completo) Attraverso quest'articolo si dimostrerà come un controllo TextBox sia in realtà (come tutti gli altri) considerato come una finestra e non come un semplice accessorio rispetto ad essa. Attraverso il seguente codice infatti sarà possibile creare da una semplice TextBox posta sul piano, una vera e propria Form posizionabile a piacimento in fase di esecuzione ma con un'area di spostamento limitata alla Form contenitrice. Il tutto sfruttando le API GetWindowLong, SetWindowLong e SetWindowPos sul quale non ci si soffermerà più di tanto in quanto trattate singolarmente in altri articoli. Prima di cominciare è necessario estendere la trattazione a tutti i controlli che supportano hWnd (che come già spiegato è l'handle (of the) Window) e non solo alla costante di Windows WS_CAPTION. Utilizzando costanti differenti (e combinazioni) di esse è pertanto possibile generare dei risultati differenti. Ad esempio, con il medesimo codice presentato qui sotto, ma con l'utilizzo della costante di sistema WS_THICKFRAME al posto di WS_CAPTION, è facile creare una TextBox ridimensionabile in fase di esecuzione, o quanto meno dotata di un bordo particolarmente gradevole. Adesso cominciamo però a vedere quali sono le dichiarazioni necessarie per creare una form da un controllo TextBox:
Abbiamo dichiarato queste funzioni come Private e quindi nel modulo di codice di Form1 in quanto il codice non è così lungo e di difficile gestione e perchè utilizziamo solamente questa form. Ecco di seguito le costanti che c'interessano: SWP_DRAWFRAME, SWP_NOMOVE, SWP_NOSIZE, SWP_NOZORDER e SWP_FLAGS che contiene ognuna delle precedenti ed in più GWL_STYLE che definisce lo stile della finestra (o nel nostro caso della TextBox): Anche le costanti, come le dichiarazioni delle funzioni sono Private:
Adesso sarà necessario aggiungere la costante che definisce il nuovo stile della TextBox. E' un parametro puramente associato ad una finestra. Utilizzarlo su un controllo differente da essa provoca una modifica nell'aspetto del controllo. Si può ottenere lo stesso effetto anche ad esempio con una PictureBox:
Chiudiamo quindi le dichiarazioni generali con un Option Explicit:
Ora nell'evento Load di Form1 inseriamo il testo della TextBox che sarà la Caption della nuova form:
Inseriamo nel progetto un pulsante e vediamo cosa succede alla sua pressione. In ogni caso il codice dell'evento Click di Command1 può essere trasferito semplicemente nell'evento Load di Form1 in modo che la TextBox prenda l'aspetto di una form non appena l'applicazione viene caricata:
La seconda riga immagazzina nella variabile 'Stile' gli attributi correnti del controllo, la terza invece modifica lo stile della TextBox in modo che le sia associata la proprietà Caption (impossibile se appunto una TextBox non fosse una sorta di form). La quarta riga effettua in modo effettivo questa modifica di stile richiamando la sottoprocedura CambiaStile, che necessita di due parametri: il nuovo stile ed il controllo sul quale applicarlo, anche se in realtà si poteva fare a meno del secondo parametro in quanto si tratterà soltanto la TextBox. La sottoprocedura in questione è la seguente:
E finalmente, dando l'avvio all'applicazione, il risultato sarà quanto segue: Il codice completo dell'esempio è il seguente:
|
Archivio:ndexed | ||||
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 |