CAPITOLO 8

LA PROGRAMMAZIONE SOTTO WINDOWS


Per coloro che provengono dal mondo DOS la programmazione sotto Windows può apparire come complicata (e in effetti lo è), in questo capitolo verrà introdotto il concetto di Form e logica RAD.
Nel primo capitolo si era creato il programma Hello World, si provvederà qui di seguito a creare il programma Hello Windows, naturale evoluzione del primo. Per cominciare basterà selezionare New Application dal menu File. Il risultato dovrebbe apparire come da figura:

form.gif (3562 byte)



Ora premendo F11 apparirà una finestra simile a quella della figura seguente:

oinspector.gif (6983 byte)



Sarà bene familiarizzare con l'Object Inspector, perchè è da qui che si setteranno eventi e proprietà dei programmi Windows, ad esempio si cambi le seguenti proprietà come da tabella:

Nome Proprietà Valore precedente Nuovo Valore
     
Caption Form1 Hello Windows!
Position poDesigned poScreenCenter



Ora eseguite tranquillamente il programma e come per magia apparirà una finestra con titolo Hello Windows!, Ma dove sta il trucco? Delphi è un compilatore orientato alla logica RAD, aspettatevi quindi una programmazione notevolmente semplificata!
Per vedere il codice del programma vi basterà selezionare units dal menu views confermando quindi Unit1.
Il codice della form dovrebbe essere il seguente:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

end.


Non preoccupatevi se non riuscite a capire niente!
Provate quindi ad aggiungere un componente Button prelevabile dalla palette degli strumenti

palette.gif (8883 byte)



Una volta inserito il button nella form questo apparirà come un normalissimo pulsante di windows.
Dall'Object Inspector (F11) selezionate la sezione events, ora cliccate sul pulsante del form (il Button aggiunto precedentemente) e fate un doppio click sulla sezione onMouseMove dell'Object Inspector, se avete eseguito il tutto correttamente dovrebbe aprirsi una finestra di digitazione codice come segue:
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin

end;

Modificatela nel seguente modo:
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
  Caption:= 'Mouse sul pulsante';
end;

Modificate anche l'evento onMouseDown dell'oggetto Form1 come segue:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
  Caption:= 'Hello Windows!';
end;


Se avete eseguito il tutto correttamente il vostro programma cambierà il titolo della finestra a seconda che il mouse sia sul pulsante o sulla form.




IL SECONDO PROGRAMMA WINDOWS


Nel secondo capitolo si era creato quello che forse era il più complesso programma finora trattato, ora si proverà ad effetture il cd. porting a windows... Creare un nuovo progetto (New Application dal menu file) e preparare la form come segue:

p7img1.gif (30167 byte)



Si modifichino da Object Inspector le seguenti proprietà:

Nome Oggetto Nome Proprietà Valore precedente Nuovo Valore
       
Form1 Caption Form1 Volume cilindro
Form1 Name Form1 frmMain
       
Button1 Caption Button1 Calcolo
Button1 Name Button1 btnCalcolo
       
Button2 Caption Button2 Esci
Button2 Name Button2 btnExit
       
Label1 Caption Label1 lunghezza raggio cilindro
Label1 Name Label1 lblRaggio
       
Label2 Caption Label2 lunghezza del cilindro
Label2 Name Label2 lblAltezza
       
Edit1 Text Edit1 -vuoto-
Edit1 Name Edit2 txtRaggio
       
Edit2 Text Edit2 -vuoto-
Edit2 Name Edit2 txtAltezza

TIP lampa03.gif (2066 byte) E' buona norma cambiare sempre la proprietà name dando un nome più significativo, si consiglia di vedere a questo proposito l'integrazione sulla Notazione Ungara a fine corso.

Se il tutto è stato eseguito in maniera corretta la vostra finestra avrà il seguente aspetto:

P8img2.gif (32115 byte)



Ora basterà modificare il codice della unit come segue:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TfrmMain = class(TForm)
    lblRaggio: TLabel;
    txtRaggio: TEdit;
    lblAltezza: TLabel;
    txtAltezza: TEdit;
    btnCalcolo: TButton;
    btnExit: TButton;
    procedure btnExitClick(Sender: TObject);
    procedure btnCalcoloClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.DFM}

procedure TfrmMain.btnExitClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmMain.btnCalcoloClick(Sender: TObject);
var rRaggio,
    rAltezza: Real;
    iResult: Integer;
begin
  rRaggio:= STRtoINT(txtRaggio.Text);
  rAltezza:= STRtoINT(txtAltezza.Text);

  iResult:= Round(rRaggio*rRaggio*rAltezza*Pi);

  Caption:= INTtoSTR(iResult);
end;

end.


L'unica istruzione che forse vi dovrebbe dare problemi è Round che serve per convertire da Real ad Integer.



In definitiva la programmazione sotto Windows si svolge in quattro fasi:


Punto.gif (924 byte) Inizio di una nuova applicazione
Punto.gif (924 byte) Preparazione della form tramite la palette dei componenti Delphi
Punto.gif (924 byte) Settaggio delle varie proprietà tramite Object Inspector
Punto.gif (924 byte) Definizione dei gestori degli eventi
Punto.gif (924 byte) Scrittura del codice

Corso interamente creato da VB.