PDA

Ver la Versión Completa : Crear Form en ejecucion y OnCreate


FGarcia
16-06-2006, 20:54:20
Hola!
Pues eso! estoy haciendo una aplicacion en la que deseo crear un segundo formulario en tiempo de ejecucion, ya coloque mis forms secundarios en Project | Options | Forms | Availables Forms y hago este codigo.


Código Delphi [-] (http://www.clubdelphi.com/foros/#)
//Menu Datos
procedure TForm1.Datos1Click(Sender: TObject);
begin
//Form2.ShowModal ; //Esto lo hacia antes cuando lo creaba automaticamente
if Form2 = nil then
Form2 := TForm2.Create(Self);
Form2.ShowModal ;

end;




al cerrar el form2


Código Delphi [-] (http://www.clubdelphi.com/foros/#)
//Al cerrarse el formulario
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ConsultaDatos.Close;
ConsultaCuenta.Close ;
//Destruimos el Formulario y liberamos la memoria
Action := caFree;
Form2 := nil;
end;




Sin embargo me aparecen mensajes de error que al parecer esta relacionados con el codigo que se ejecuta en el evento Oncreate del Form2


Código Delphi [-] (http://www.clubdelphi.com/foros/#)
//Al crearse el formulario
procedure TForm2.FormCreate(Sender: TObject);
begin

Form2.Color := RGB(134,196,152);
DBChart1.Color := RGB(134, 196, 152);
Panel1.Color := RGB(134,196,152);
Panel2.Color := RGB(134,196,152);
edMin.Visible := False;
edMax.Visible := False;
lblMin.Visible := False;
lblMax.Visible := False;
btnMinMax.Visible := False;
DBChart1.MaxPointsPerPage := 10000;
DBChart1.AllowPanning := pmHorizontal;
//Abrimos las consultas
ConsultaDatos.Open ;
ConsultaCuenta.Open ;
//Por defecto de DBChart no se aceptan cadenas en modo visual
//lo hacemos por codigo
DBChart1.Legend.Visible := False;
with DBChart1.SeriesList.Series[0] do
begin
DataSource := ConsultaDatos;
XLabelsSource := MDatos.ADOQuery1HoraFecha.FieldName;
CheckDataSource;
end;
miSQL := '';
Label9.Caption := InttoStr(MDatos.DataSource1.DataSet.RecNo );
RVProject1.ProjectFile := ExtractFilePath(ParamStr(0)) + '\Reporte.rav';
end;




No me aparecian mensajes de error cuando creaba el form2 automaticamente. ¿Que estoy haciendo mal? Gracias por la ayuda!

EDITO!!
Mi error esta aqui:

//Al crearse el formulario
procedure TForm2.FormCreate(Sender: TObject);
begin

Form2.Color := RGB(134,196,152); //NO DEBE SER FORM2.COLOR DEBE SER SELF.COLOR!!!!!!!

luisgutierrezb
17-06-2006, 01:25:27
los mensajes te aparecen al abrirlo por primera vez o en la segunda vez?
unos tips
no revises si es form2 = nil, usa if Assigned(Form2)
quitale lo de form2 = nil

FGarcia
17-06-2006, 16:02:04
Gracias Luis por responder

Edite posteriormente el mensaje. Ya resolvi el problema. Pero me queda una duda ¿cual es la diferencia entre el metodo que sugieres (Asigned) y Form2 := nil?

Gracias nuevamente