Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con MDI's!!! (https://www.clubdelphi.com/foros/showthread.php?t=1792)

carlitos_se 27-06-2003 14:19:30

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.

roman 27-06-2003 17:31:57

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


La franja horaria es GMT +2. Ahora son las 11:02:26.

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