Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > FireMonkey
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-03-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 4
giantonti1801 Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
¿En qué punto exactamente?
Pon tu código real para poder ver qué estás haciendo.
Un "Access Violation" suele ser una llamada a un objeto que no está creado. Seguramente estás liberanto antes de tiempo un objeto o lo estás utilizando antes de crearlo.


Lo mismo de antes... pon tu código real ya que caFree es un tipo definido en los formularios en la unidad Forms.

Código Delphi [-]
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  Action := caFree;
end;

De la ayuda de Delphi 6:
Ya se quito el error en Action:=caFree;
Código Delphi [-]
procedure TFormPacienteNew.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  Action := caFree;
  end;
el error se quito cuando coloque esta linea en Type
Código Delphi [-]
type
  TCloseAction = (caNone, caHide, caFree, caMinimize);  //<--esta linea quito el error
  TFormPacienteNew = class(TForm)
    Layout17: TLayout;
    Label153: TLabel;
    TMSFMXEdit13: TTMSFMXEdit;
    ShadowEffect244: TShadowEffect;
    Label154: TLabel;
    TMSFMXEdit14: TTMSFMXEdit;
    ShadowEffect258: TShadowEffect;
    Label156: TLabel;
    TMSFMXEdit15: TTMSFMXEdit;
    ShadowEffect262: TShadowEffect;
    Label158: TLabel;
    Label159: TLabel;
    TMSFMXEdit16: TTMSFMXEdit;
    ShadowEffect265: TShadowEffect;
    Label160: TLabel;
    Label161: TLabel;
    Label177: TLabel;
    Label192: TLabel;
    TMSFMXEdit17: TTMSFMXEdit;
pero ahora cuando cierro la ventada
Código Delphi [-]
procedure TFormPacienteNew.TMSFNCButton1Click(Sender: TObject);
begin
FormPacienteNew.Close;
end;
me sale un Mensaje 'Invalid Piont operation' y otro que dice 'Invalid Argument'
los formulario se abren asi:
Código Delphi [-]
procedure TFormInicio.TMSFMXToolBarButton2Click(Sender: TObject);
begin
FormPacienteNew := TFormPacienteNew.Create(Self);
    try
    FormPacienteNew.ShowModal;
    finally
    FormPacienteNew.Free;
    end;
end;
Responder Con Cita
  #2  
Antiguo 29-03-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Dentro de un formulario no tienes que llamarlo por su nombre...

Código Delphi [-]
procedure TFormPacienteNew.TMSFNCButton1Click(Sender: TObject);
begin
   // Close hace referencia a si mismo
   // No importa como se llame la variable que apunta al objeto
   Close;
end;

Luego puedes tener dos ventanas de ese tipo y que cada una se cierre a si misma.


Código Delphi [-]
procedure TFormPacienteNew.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  // No necesitaré liberar este objeto, porque FormClose ya lo hará.
  Action := caFree;
end;

[...]

begin
    // Creo dos ventanas de "paciente nuevo"
    PacienteNew1 := TFormPacienteNew.Create(Self);
    PacienteNew2 := TFormPacienteNew.Create(Self);

    // Muestra la primera ventana
    PacienteNew1.Show;

    // Muestra la otra ventana
    PacienteNew2.Show;
end;
Responder Con Cita
  #3  
Antiguo 29-03-2023
giantonti1801 giantonti1801 is offline
Miembro
 
Registrado: oct 2022
Posts: 143
Poder: 4
giantonti1801 Va por buen camino
Cita:
Empezado por duilioisola Ver Mensaje
Dentro de un formulario no tienes que llamarlo por su nombre...

Código Delphi [-]
procedure TFormPacienteNew.TMSFNCButton1Click(Sender: TObject);
begin
   // Close hace referencia a si mismo
   // No importa como se llame la variable que apunta al objeto
   Close;
end;

Luego puedes tener dos ventanas de ese tipo y que cada una se cierre a si misma.


Código Delphi [-]
procedure TFormPacienteNew.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  // No necesitaré liberar este objeto, porque FormClose ya lo hará.
  Action := caFree;
end;

[...]

begin
    // Creo dos ventanas de "paciente nuevo"
    PacienteNew1 := TFormPacienteNew.Create(Self);
    PacienteNew2 := TFormPacienteNew.Create(Self);

    // Muestra la primera ventana
    PacienteNew1.Show;

    // Muestra la otra ventana
    PacienteNew2.Show;
end;
Si funciona pero si le coloco en el evento on close Action := caFree; despues que se cierra el formulario me da el error de Invalid argument por lo que decidi quitarlo y funciona perfecto.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cual es la mejor opción de conexión a Bases de Datos en Lazarus para ... ? rolandoj Lazarus, FreePascal, Kylix, etc. 20 24-09-2012 01:44:57
Cual es el mejor manejador gratis de base de datos para MySQl 5.0+ ? juangabriel1786 SQL 3 15-12-2008 00:10:29
Cual es la mejor opcion para un sistema de esta clase... jcarteagaf Varios 10 24-09-2008 23:57:51
Sobre cuál es la mejor opción para trabajar con Word Gabo Servers 6 16-01-2008 13:36:21
Cual es la mejor opción para imprimir ?? Delphitest Impresión 4 27-10-2006 21:50:59


La franja horaria es GMT +2. Ahora son las 12:38:45.


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
Copyright 1996-2007 Club Delphi