Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error Al Crear Varias Veces El Mismo Form (https://www.clubdelphi.com/foros/showthread.php?t=48206)

ManuelPerez 18-09-2007 19:35:40

Error Al Crear Varias Veces El Mismo Form
 
Hola : Soy Nuevo En Esto Y Necesito Que Me Ayuden Con Este Problema : Tengo Desarrollado Un Proyecto De Facturacion El Cual Desde Un Menu En La Ventana Principal Creo Y Abro La Factura De Venta Tantas Veces Como Me Haga Falta . El Problema Es Cuando Al Cerrar Por Ejemplo La Primer Factura Y Despues Al Trabajar O Al Cerrar Las Otras Facturas Me Tiran Un Error.
El Tema Es Saber Como Clonar Form Iguales , Para Poder Trabajar Tranquilamente .

Gracias...

eduarcol 18-09-2007 19:39:42

Cita:

Empezado por ManuelPerez (Mensaje 231923)
El Tema Es Saber Como Clonar Form Iguales , Para Poder Trabajar Tranquilamente .

Gracias...

Hola manuel, el tema aqui seria que nos dijeras que error te da y muestres el codigo como se hace lee la guia de estilo para que sepas como preguntar :D:D

ManuelPerez 18-09-2007 19:56:45

Te voy a explicar mejor..
 
Gracias por tu repuesta rápida:
tengo un proyecto de Gestion Comercial , en la Ventana madre(fsMDIForm) tengo un menu comun , del cual al hacer click en una de los items creo el formulario de facturacion (fsMDIForm).
Yo lo creo de la siguiente forma:

Código Delphi [-]
  Application.CreateForm(TFRMFacturacion,FRMFacturacion);
  FRMFacturacion.Show;

hasta ahi esta todo bien..Pero al hacer varias veces click sobre el menu por logica creo varias facturas " que es lo que quiero hacer" , el problema surge cuando cierrar por segunda vez esta facturas creadas, y es alli cuando me tira un error que es el siguiente :

Código Delphi [-]
Proyect PYMESOFT.EXE raised exception class EAccessViolation with 'Access Violation at addres 0047db89 in module 'PYMESOFT.EXE'.read af addres....

Lo que yo quiero hacer es poder trabajar con varias facturas a la vez, es decir poder abrir varias facturas a la vez.
gracias

eduarcol 18-09-2007 20:02:00

el acces violation da porq quieres acceder a un objeto de memoria que aun no ha sido creado, o que como creo te esta sucediendo, ya fue destruido, asi que analiza tu rutina de cierre y verifica que no estes referenciando algo que no se crea

ManuelPerez 18-09-2007 20:06:15

No hago para abrir el mismo form varias veces
 
:confused:

Como Hago para abrir el mismo form varias veces sin tener este problema.
En Delphi se puede????

eduarcol 18-09-2007 20:15:30

si se puede pero de momento me intriga porq dos fsmdifor, cuando el segundo debe ser fsmdichild

ManuelPerez 18-09-2007 21:14:05

Haber quien me puede ayudar
 
El Proyecto principal es fsMDIForm las facturas son fsMDIChild .
Nadie sabe como abrir el mismo form sin tener el error.:confused:
gracias

paldave 18-09-2007 21:31:02

Si, no es tan complicado.
Primero en propiedades del proyecto pones que solo el Form Principal (el MDI) se cree automáticamente, los otros no.
Luego los vas creando desde código, como si se tratara de variables (lo digo así para que entiendas más claro, en realidad recuerda que son objetos), sería algo así:
Código Delphi [-]
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var f:TForm3;
begin
  f:=TForm3.Create(Application);
  f.Show;
end;

end.
en este caso el MDIForm se llama Form1, ubicado con su Unit1 y el MDIChild se llama Form3, con su Unit3.
Observa que debes incluir Unit3 en Uses.
Si quieres que los MDIChild se cierren en vez de minimizarse al clickear el botón cerrar (como es lo predeterminado) asigna este código al evento OnClose del MDIChild:
Código Delphi [-]
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:=caFree;
end;


La franja horaria es GMT +2. Ahora son las 22:05:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi