|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2004
Città: Cosenza
Messaggi: 884
|
Delphi
Vorrei sapere come si fa ad utilizzare più form in una sola applicazione, e come utilizzare procedure di una unit su un'altra!!!
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Prov. Pordenone
Messaggi: 404
|
Cosi
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
__________________
Mio PC: Asus STRIX Z270OH Gaming / Intel CORE I5 7600 3.5GHZ LGA 1151 - Ram 16 GB Corsair - Scheda Grafica: ASUS Dual GeForce RTX 2060 EVO 6 GB GDDR6 - Monitor Samsung C24F396 Full HD 24" Stampante: Brother laser HL-3140CW |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2004
Città: Rimini
Messaggi: 247
|
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; |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Prov. Pordenone
Messaggi: 404
|
Piccola Correzione Credo!!
Al posto di TUnit1 o TUnit2
----------------------- va scritto TForm1 e TForm2 ------------------------- procedure TUnit1.Button1Click(Sender); var finestra : TUnit2; begin finestra:=TUnit2.Create(Self); try finestra.ShowModal; finally finestra.Free; end; Io Penso sia cosi; e se sbaglio spiegami perchè. Ciao Mario
__________________
Mio PC: Asus STRIX Z270OH Gaming / Intel CORE I5 7600 3.5GHZ LGA 1151 - Ram 16 GB Corsair - Scheda Grafica: ASUS Dual GeForce RTX 2060 EVO 6 GB GDDR6 - Monitor Samsung C24F396 Full HD 24" Stampante: Brother laser HL-3140CW |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Feb 2004
Città: Rimini
Messaggi: 247
|
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 |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2004
Città: Cosenza
Messaggi: 884
|
Delphi
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 |
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Feb 2004
Città: Rimini
Messaggi: 247
|
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.... |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Dec 2000
Città: Prov. Pordenone
Messaggi: 404
|
Vediamo un pò
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
__________________
Mio PC: Asus STRIX Z270OH Gaming / Intel CORE I5 7600 3.5GHZ LGA 1151 - Ram 16 GB Corsair - Scheda Grafica: ASUS Dual GeForce RTX 2060 EVO 6 GB GDDR6 - Monitor Samsung C24F396 Full HD 24" Stampante: Brother laser HL-3140CW |
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Feb 2004
Città: Rimini
Messaggi: 247
|
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 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:30.



















