FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema con MDI's!!!
Hola,
Soy nuevo en programación y estoy realizando una aplicacion MDI y tengo un problema que quisiera consultarles: Tengo los formularios MainForm,frmdatos,MDIChild En mi aplicación quisiera crear los formularios MDIChild mostrando valores que proveniesen de aplicar algunas operaciones a datos que voy a ingresar antes en "frmdatos". Para realizar esto en el formulario MainForm utilizo un Menu Principal con una opción Nuevo, la cual muesta el formulario "frmdatos" : frmdatos.ShowModal; , despues de haber ingresado todos los datos, se validan con un Botón , en el cual creo el formulario MDIChild: procedure Tfrmdatos.BitBtn2Click(Sender: TObject); Var Child: TMDIChild; begin Child:= TMDIChild.Create(application); with Child do begin caption:='NONAME ' + IntToStr(MainForm.MDIChildCount+ 1); operacion(datos); escriberesultados; end; //operacion y escriberesultados son procedures // del MDIChild. ModalResult := 1; frmdatos.Hide; end; Al final cuando ejecuto el programa parece funcionar bien, crea los formularios MDIChild mostrando los resultados correspondientes ,pero cuando quiero a veces cerrar alguno de ellos me sale el ERROR: ************************************************* Project MDIAPP.exe raised exception class EInvalidPointer with message 'Invalid Pointer operation'... ************************************************* o el error 'Access Violation at address <address1> in Module MDIAPP.exe' write of adress <address2> Por favor, alguien me podría dar una idea de porque esta sucediendo esto? y si fuera tan amable de decirme como debería solucionarlo. en el procedimiento de cerrar he colocado lo siguiente : procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; Muchas Gracias. |
#2
|
||||
|
||||
Me parece que habría que ver qué hacen los métodos operacion y escriberesultados para entender lo que pasa.
De cualquier forma pienso que sería mejor que tu formulario MDIChild tuviese una propiedad pública "datos" que asignas cuando lo construyes y en su evento OnShow llamas a los procedimientos operacion y escribe resultados en lugar de llamarlos desde el otro formulario. // Saludos |
|
|
|