CHIARIMENTI SULLA PROGRAMMAZIONE WINDOWS
PARTE PRIMA: L'oggetto Form.
Tutti i programmi Windows sono costituiti da finestre, come ormai dovreste avere appreso
in Delphi le finestre prendono il nome di Form e sono discendenti dell'oggetti TForm.
Ma che metodi e proprietà dispongono le Form? Come si fa a richiamare una seconda Form? Come si agganciano i menu standard di Windows? E i pop-up menu richiamabili con il tasto destro del mouse?
Queste sono le domande che verranno trattate in questo capitolo.
Supponiamo ad esempio di voler creare una finestra contenente un Menu
tramite il quale sia possibile richiamare una seconda finestra. Il primo passo sarà
ovviamente creare un nuovo progetto dal vostro compilatore preferito (Delphi, of course).
Fatto questo aggiungeremo un TMainMenu dalla palette degli strumenti.
La vostra Form dovrebbe avere ora un componente simile a questo Cliccate quindi sulla proprietà
Items dell'oggetto MainMenu1 (ovviamente da Object Inspector), Il risultato è una
finestra simile alla seguente
Sarà bene familiarizzare da subito con questo editor, è da qui
che si creano e modificano menu.
Nell'Object Inspector inseriremo ora come caption '&File' e nome mnuFile, vi
chiederete ora che oggetto stiamo modificando, la risposta è nessuno! Abbiamo appena
creato un nuovo oggetto, un TMenuLine (line di menu), Si noti anche che il carattere
'&' è divenuto nell'editor un segno di sottolineatura. Inseriamo un nuova line di
menu cliccando sul campo vuoto sottostante il menu File, precisamente inseriremo una linea
'About' (nome oggetto mnuAbout) una linea '-' nome oggetto mnuN1 e una linea 'Exit'
(mnuExit). Per capirci il risultato dovrebbe essere come segue:
Chiudiamo quindi la finestra con titolo Form1.MainMenu1 (l'editor insomma), il risultato sarà una form con un Menu(!)
Abbiamo quindi creato un componente Windows senza digitare una sola linea di codice (e poi
parlano di C) ma in maniera del tutto RAD (o Visuale, a dir si voglia).
Il secondo passo di questa lezione consisterà nel creare una seconda Form richiamabile
dal menu About, per fare ciò scegliere new dal menu File di Delphi e dalla Dialog
scegliere Form.
Verrà quindi aperta una seconda Form di nome Form2 (che fantasia sti progettisti di
Delphi...) che provvederemo a rinominare (tramite Object Inspector, ma vi devo sempre dire
tutto?) in frmAbout.
Inseriamo quindi nella form un TCalendar prelevabile dalla palette Sample di Delphi e
settiamo la proprietà Align di Calendar1 a alClient, così facendo l'oggetto calendar1
sarà autoresizeble (concedetemi il termine.
L'ultimo passo sarà rendere attivo il menu About, per fare questo richiamiamo la prima
Form (Forms dal menu View di Delphi) e clicchiamo sul menu About, si dovrebbe aprire una
finestra codice nella quale digiteremo frmAbout.Show;
Nel menu Exit inseriamo invece la riga Form1.Close;
avviamo il progetto e se
tutto è stato fatto correttamente avremo... un ERROREEEEEEE!!!!!!! (SI
AVETE LETTO BENE!!!!!!!).
Per l'esattezza dovrebbe apparire una finestra di conferma come la seguente:
Nella realtà non è stato commesso nessun errore, se ci pensate la variabile di
riferimento della TfrmAbout (frmAbout) non è dichiarata nella unit della Form1,
basterebbe quindi aggiungere semplicemente il nome del file contenente la classe TfrmAbout
nella direttiva uses dalla unit Form1 (spero di essere stato chiaro). Rispondendo quindi
yes alla richiesta information Delphi stesso provvederà a correggere questa incongruenza
(diavolo di compilatore!), infatti troveremo dopo la direttiva Uses nella sezione
implementation il file Unit1. Vi chiederete (almeno spero) perchè non sia stato inserito
nella sezione interface, il motivo è presto detto: è la stessa identica cosa.
Aggiungiamo adesso un TPopUpMenu nel form frmAbout e dall'editor Items aggiungiamo la
linea BlaBla (Caption BlaBla e name mnuBlaBla), Nell'evento click del menu inseriamo la
riga ShowMessage('PopUpMenu');
Ora non resta che assegnare alla proprietà PopUpMenu di Calendar1 l'oggetto
PopUpMenu1.
Abbiamo così creato un progetto che visualizza un semplice calendario alla pressione di
un menu About (completamente inutile ma funzionante).
Al fine di una più completa conoscenza dell'oggetto TForm provare ad aggiungere nella Form1 un Pannel (palette Standard), settatene caption a nulla e align ad alTop. All'interno del Panel si disponga uno SpeedButton e da Object Inspector si assegni all'evento OnClick l'eveno mnuAboutClick. ATTENZIONE non si deve creare un nuovo evento, ma tramite la drop list selezionare un'evento già presente. Per finire cambiare la proprietà Glyph dello SpeedButton con una bitmap prelevabile dalla cartella images\buttons di Delphi. Abbiamo così creato una barra degli strumenti presente nelle versioni datate di Office.
TIP | ![]() |
SOLO PER DELPHI 3.0Settate a True la proprietà ShowHint dello SpeedButton, aggiungete del testo alla proprietà Hint e cambiate a true la proprietà Flat. Otterete così dei "CoolButton" in stile Office '97 (pulsanti a scomparsa con testo di Help sensibile al passaggio del mouse). |
PARTE SECONDA: alcune Tips & Tricks
Altre domande che il principiante programmatore Delphi si pone spesso sono:
Come si manipola l'oggetto Items di una ListBox Come si ordina una lista di stringhe? Come si crea un "Hot Key" nell'applicazione?
L'oggetto Items contenuto come proprietà di una ListBox o di una ComboBox è uno dei più
potenti oggetti messi a disposizione da Delphi. Tecnicamente è assimilabile all'oggetto
TStringList.
I metodi più importanti incapsulati da Items sono:
![]() |
Add(S: String) |
![]() |
Delete(Index: Integer) |
![]() |
Insert(Index: Integer; S: String) |
![]() |
Clear |
Tramite l'insieme items si può facilmente memorizzare e ordinare una lista di stringhe.
Settando infine la proprietà Sorted a true la lista di stringhe inserite si ordinetà
automaticamente!
Per creare un Hot Key provate il seguente modo:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (ssCtrl in shift) and (chr(key) in ['A', 'a']) then
ShowMessage('Ctrl-A');
end;