|
||||||||||
|
||||||||||
|
Capitolo 3Blocco note
Salviamo subito, come al solito, in una nuova cartella il progetto come BloccoNote e la Unit associata alla form (FormBloccoNote) come UnitBloccoNote. Cominciamo con l'inserire sulla form un MainMenu, che si trova al
primo posto sulla linguetta Standard ed è rappresentato dall'icona Delphi offre dei menu già pronti di vario genere (File Menu, Edit Menu, etc.) inseribili cliccando sulla finestra FormBloccoNote.MainMenu con il tasto destro e scegliendo con Insert From Template... il menu che si vuole dall'elenco di quelli disponibili. Noi però vogliamo un menu italiano, quindi dobbiamo costruircelo da zero, almeno la prima volta; poi potremo salvarcelo fra i template come Save As Template... ed eviteremo di doverlo rifare altre volte quando ci servirà in altre applicazioni. Per costruire il menu possiamo usare i tasti cursore e Ins e Canc, oppure il tasto destro del mouse e le voci Insert (Ins) e Delete (Del). In questo modo inseriamo le varie voci del menu: File, Formato e ? con le relative sottovoci. Presentiamo qui di seguito i Name e le Caption delle varie voci; come si può vedere tutte le voci hanno una lettera preceduta dalla &, la quale apparirà sottolineata e servirà per l'accesso alla voce tramite la sequenza ALT+Lettera; alcune voci possiedono anche una sequenza di tasti per l'accesso veloce: ShortCut. Le voci con Caption '-' appariranno come linee di separazione fra le voci.
Se tutto è stato eseguito attentamente il menu dovrebbe apparire così:
Passiamo alla costruzione della barra degli strumenti; inseriamo un Panel, chiamiamolo PanelBarraStrumenti, selezioniamo Align alTop, impostiamo l'Height a 27, scegliamo BevelInner bvNone, BevelOuter bvLowered ed eliminiamo la Caption. Questo Panel farà da contenitore dei bottoni della barra degli strumenti. Ora, inseriamo nella barra degli strumenti 7 SpeedButton tramite
il tasto Riportiamo di seguito i nomi, le proprietà Left e Top e gli Hint dei vari SpeedButton:
Gli Hint contengono il testo che viene visualizzato in un piccolo riquadro giallo quando il mouse si ferma per qualche istante sul bottone; per attivarli è ancora necessario impostare a True il valore ShowHint della form FormBloccoNote. Assegniamo infine i vari Glyph ai vari bottoni cliccando sui ... della proprietà e selezionando Load..., l'immagine voluta e quindi OK. Le immagini dei Glyph sono contenute nel file zip del programma sotto forma di immagini bmp. Altre immagini sono disponibili nella cartella C:\Programmi\Borland\Delphi 2.0\IMAGES\BUTTONS. Inseriamo ora le varie finestre di dialogo per l'apertura, il
salvataggio, la stampa, etc. del testo prendendole dalla linguetta Dialogs;
più in dettaglio inseriamo: Per OpenDialog e SaveDialog impostiamo come DefaultExt l'estensione txt e solo per SaveDialog la proprietà Options - ofOverwritePrompt=True per far sì che venga visualizzato un messaggio di avviso quando si cerca di registrare un file di testo con un nome preesistente. Per entrambi impostare come Filter per l'apertura e il salvataggio la seguente tabella cliccando sul tasto ... della proprietà e attivando così il Filter Editor:
Inseriamo, poi, una barra di stato StatusBar Infine inseriamo un oggetto Memo Passiamo ad inserire il codice associato alle voci del menu cliccando ad una ad una sulle varie voci. Il codice dovrebbe essere abbastanza semplice da capire, quindi non lo esamineremo in dettaglio. Osserviamo come si utilizza la StatusBar, come si attiva una finestra di dialogo (tramite il metodo Execute), come si carica o salva il testo nel oggetto Memo (tramite i metodi LoadFromFile e SaveToFile), come si imposta/toglie l'a capo automatico del testo (tramite la proprietà ScrollBars = ssVertical/ssBoth). procedure TFormBloccoNote.NuovoClick(Sender: TObject); begin Memo.Lines.Clear; StatusBar.SimpleText:='Nuovo documento di testo'; end;
procedure TFormBloccoNote.ApriClick(Sender: TObject);
begin
if OpenDialog.Execute then
begin
Memo.Lines.LoadFromFile(OpenDialog.Filename);
StatusBar.SimpleText:='Aperto il file: '+OpenDialog.Filename;
end;
end;
procedure TFormBloccoNote.SalvaClick(Sender: TObject);
begin
if SaveDialog.Execute then
begin
Memo.Lines.SaveToFile(SaveDialog.Filename);
StatusBar.SimpleText:='Salvato il file: '+SaveDialog.Filename;
end;
end;
procedure TFormBloccoNote.StampaClick(Sender: TObject);
var
F: TextFile;
begin
if PrintDialog.Execute then
begin
Printer.Canvas.Font:=Memo.Font;
AssignPrn(F);
Rewrite(F);
Writeln(F, Memo.Text);
CloseFile(F);
StatusBar.SimpleText:='Stampa conclusa';
end;
end;
procedure TFormBloccoNote.ImpostaPaginaClick(Sender: TObject); begin PrinterSetupDialog.Execute; end;
procedure TFormBloccoNote.EsciClick(Sender: TObject); begin Application.Terminate; end;
procedure TFormBloccoNote.ACapoAutomaticoClick(Sender: TObject);
begin
ACapoAutomatico.Checked:=not ACapoAutomatico.Checked;
if ACapoAutomatico.Checked then
Memo.ScrollBars:=ssVertical
else
Memo.ScrollBars:=ssBoth;
end;
procedure TFormBloccoNote.CarattereClick(Sender: TObject);
begin
FontDialog.Font:=Memo.Font;
if FontDialog.Execute then
Memo.Font:=FontDialog.Font;
end;
procedure TFormBloccoNote.GuidaInLineaClick(Sender: TObject);
begin
ShowMessage('Blocco note - Guida in linea.'+#13+#13+
'Questo programma permette di leggere,'+#13+
'modificare, salvare e stampare file di testo.');
end;
procedure TFormBloccoNote.InformazioniSuBloccoNoteClick(Sender:
TObject);
begin
ShowMessage('Blocco note'+#13+'Copyright © GfO - 2003');
end;
Queste procedure devono essere assegnate anche agli SpeedButton. Selezionare la linguetta Events dall'Object Inspector e cliccando ad uno ad uno sugli SpeedButton selezionare per l'evento OnClick la procedura che deve essere attivata alla pressione del tasto. Per esempio per lo SpeedButtonNuovo la procedura NuovoClick, etc. Ora abbiamo finito; salviamo tutto e collaudiamo il nostro Blocco note. Esercizio. Migliorare il programma suddetto attivando l'evento OnChange dell'oggetto Memo per far sì che, appena il testo viene modificato dall'utente, un flag (variabile globale Boolean) venga impostato a True e forzi la comparsa della finestra di dialogo SaveDialog quando si tenta di chiudere l'applicazione o di cancellare il testo con File - Nuovo. Questo flag dovrà essere riportato a False ogni qual volta si apra un file nuovo o si salva il file corrente.
|
|||||||||
|
||||||||||