![]() |
Crear Form en ejecucion y OnCreate
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 [-] //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 [-] //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 [-] //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!!!!!!! |
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 |
Resuelto
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 |
| La franja horaria es GMT +2. Ahora son las 09:02:48. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi