PDA

View Full Version : Delphi


tj_diego
29-02-2004, 17:04
Vorrei sapere come si fa ad utilizzare più form in una sola applicazione, e come utilizzare procedure di una unit su un'altra!!!

Thoruno
02-03-2004, 18:43
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
uses Unit2;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
NuovaForm.ShowModal;
end;

end.

E nella Unit2 nell' evento di Button1Click inserisci
Close; per ritornare alla Form madre

Ciao Mario

khamel
03-03-2004, 14:12
se vuoi utilizzare le proc di una form in un altra le devi dichiarare public

per creare la seconda form a partire dalla prima fai cosi, è + sicuro e dealloca la memoria in caso di errore


procedure TUnit1.Button1Click(Sender);
var
finestra : TUnit2;
begin
finestra:=TUnit2.Create(Self);
try
finestra.ShowModal;
finally
finestra.Free;
end;

Thoruno
03-03-2004, 21:07
Al posto di TUnit1 o TUnit2 :confused:
-----------------------
va scritto TForm1 e TForm2 :)
-------------------------

procedure TUnit1.Button1Click(Sender); :confused:
var
finestra : TUnit2; :confused:
begin
finestra:=TUnit2.Create(Self); :confused:
try
finestra.ShowModal;
finally
finestra.Free;
end;

Io Penso sia cosi; e se sbaglio spiegami perchè.

Ciao Mario

khamel
04-03-2004, 14:18
Si hai ragione scusa ma sono un po fuso...

procedure TForm1.Button1Click(Sender);
var
finestra : TForm2;
begin
finestra:=TForm2.Create(Self);
try
finestra.ShowModal;
finally
finestra.Free;
end;

questa è la sintassi giusta

tj_diego
04-03-2004, 17:44
Grazie per avermi aiutato!!!
Cmq vorrei kiedervi un'altra cosa,
Come si possono usare procedure di un'altra unit creata sempre da me???
Vi ringrazio anticipatamente
A presto

khamel
04-03-2004, 20:04
come ti avevo gia detto basta che le dichiari come public e le vedi dall'altra form cmq ti faccio 1 esempio :

La unit che contiene le procedure può essere cosi..

unit Unit1;

interface

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

type
TForm1 = class(TForm)
//elenco componenti della form
private
{ Private declarations }
public
{ Public declarations }
procedure MyProcedure; //dichiarazione pubblica
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure MyProcedure;
begin
ShowMessage('Hello World!');
end;

end;

L'altra invece...

unit Unit2;

interface

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

type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

uses Unit1;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.MyProcedure;
end;

end;

Alla pressione del bottone1 nella form2 viene chiamata la procedure che manda un messaggio a video....

Ti do un'altro consiglio, quando dai un nome alle unit puoi usare questo metodo :
"nome" per la form
"nomeU" per la unit
quando ne hai parecchie fai prima a trovarle e a distinguerle....

Thoruno
04-03-2004, 20:19
Nella Unit1 sotto la voce Implementation inserisci la tua Unit1 o il nome che gli ai dato.
es:

Implementation
uses tua_Unit;

{$R *.DFM}

e nel File Dpr, dovrai inserire questa riga:

program Project1;

uses
Forms,
Tua_Unit in 'Tua_Unit.pas', <---- la tua riga
........................................ ,
....................................... ; < ----- l'ultima con il ;


{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Ciao Mario

khamel
04-03-2004, 21:12
la gestione del file .dpr la fa delphi in automatico, non c'è bisogno di aggiungere alcuna riga, se lo apri troverai che la riga di cui parli c'è gia, è solo sufficiente andare nel Menu Project->Options e togliere dalla voce "auto create forms" tuttele form tranne la principale del programma in modo da velocizzare l'avvio del programma...
se stai usando dei database ricordati che devi lasciare anche il data module o la form con quale ti connetti al db e se è su una form diversa dalla principale deve stare prima nell'elenco, altrimenti il programma cerca di aprire dei compenti collegati a un db a cui il programma non è ancora connesso