PDA

Visualizza la versione completa : [DELPHI] Creare ed aprire un Form


niprova
11-10-2006, 15:39
premetto che sono all'inizio.
ho creato una form con un menu.
come posso da questo far apparire un'altra form?

sto impazzendo..

crippo
11-10-2006, 15:49
nella form principale nel codice dell'evento in cui vuoi far apparire la form:

Var fSecondaria : frmSecondaria;
begin
fSecondaria := frmSecondaria.Create;
fSecondaria.Show;
end;

niprova
11-10-2006, 16:11
questa la unit 1

unit prova;

interface

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

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Inserisci1: TMenuItem;
procedure Inserisci1Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;


implementation

{$R *.dfm}




procedure TForm1.Inserisci1Click(Sender: TObject);
begin
TForm2.Show;
end;

end.

questa la unit 2(dove c' il form che voglio aprire


unit Unit2;

interface

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

type
TForm2 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
ADOTable1: TADOTable;
DataSource1: TDataSource;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

end.

crippo
11-10-2006, 16:25
intanto sulla unit1 devi aggiungere:
uses unit2

poi nell'evento:


procedure TForm1.Inserisci1Click(Sender: TObject);
Var Form2 : TForm2;
begin
Form2 := TForm2.Create;
Form2.Show;
end;

niprova
11-10-2006, 16:29
grazie ma
Form2 := TForm2.Create;

in questa riga mi dice:
Not enough actual parameters

crippo
11-10-2006, 16:38
che versione di delphi stai usando?

prova con:

Form2 := TForm2.Create(self);

niprova
11-10-2006, 16:38
trovata la soluzione


Form2 := TForm2.Create(Form2);

mondobimbi
12-10-2006, 15:41
Originariamente inviato da niprova
trovata la soluzione


Form2 := TForm2.Create(Form2);

no buono,
meglio
Form2 := TForm2.Create(nil);

ciao
sergio

FSL
12-10-2006, 16:07
C' qualcosa che non mi torna... ma in un progetto Delphi standard, la seconda Form non dovrebbe essere creata nel progetto stesso (il .dpr) ? esempio:



// File Project1.dpr

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2); // Qu crea il form 2
Application.Run;
end.


quindi per visualizzare la seconda Form basta dare solo:



procedure TForm1.Inserisci1Click(Sender: TObject);
begin
Form2.Show;
end;


dal codice del Form1, senza crearla nuovamente.

Ciao
FSL

mondobimbi
12-10-2006, 16:23
una tua scelta. Puoi crearla tu dinamicamente o farla autocreare dal progetto (una selezione che fai sotto opzioni, mi sembra).
Sel la crei tu dinamicamente senza assegnarle un genitore, comeTForm.Create(nil) devi ricordarti di distruggerla.

ciao
sergio

Loading