Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas al crear Form (https://www.clubdelphi.com/foros/showthread.php?t=20647)

lucasarts_18 21-04-2005 08:13:35

Problemas al crear Form
 
Holas a todos:

Tengo el siguinete código:

Código Delphi [-]
 procedure TFrmPowerM.FormShow(Sender: TObject);
 var
 varform:TFrmArchivos;
 begin
    varform := TFrmArchivos.Create(FrmPowerM); *****
    try
      varform.Show;
    finally
      varform.Free;
      FrmPowerM.SetFocus;
    end;
 end;

En la parte de **** me sale un error en el acceso de memoria.
Lo encuentro raro ya que tengo en otro programa el mismo código de arriba y no me da ningún problema.

Atte Aarón García A.

Neftali [Germán.Estévez] 21-04-2005 09:09:10

(1) Utiliza TAG's en el código Delphi (los de arriba ya te los he colocado yo).
(2) El código que has colocado, no tiene nada raro, como mínimo nada que tenga que fallar (exceptuando que no está la declaración de la variable FrmPowerM, aunque supongo que será estandard). De todas formas yo probaría con Self o con Application.
(3) Otro comentario acerca del código es que tal y como está nunca vas a llegar a ver el form varform, ya que haces un Show e inmediatamente después un Free. Tal vez debería utilizar un ShowModal.
(4) ¿Tienes algun código especial en el Show o Create del form varform? Tal vez ese sea el problema.

lucasarts_18 21-04-2005 17:41:32

Hola Neftalí:

ya encontré el problema, al momento de crear el formulario yo hago otras instrucciones en éste:

Código:

procedure TFrmArchivos.FormCreate(Sender: TObject);
begin
  frmArchivos.Left := FrmPowerM.Left + frmPowerM.Width;
  frmArchivos.Top := FrmPowerM.Top;
end;

Al ver que el error que se producía, comente las instrucciones y ya no me levanta la excepción, pero yo necesito ese código para que aparezcan juntos los dos formularios, se entiende ?

Saludos

PD: No encontré los tag que mencionaste,utilicé code pero no queda igual que a tí :( .

defcon1_es 21-04-2005 18:19:36

Hola,
creo que sería más eficiente que definieses un método público (supongo) en frmArchivos para asignar esos valores a las propiedades Left y Top , con lo que evitarías un uses a FrmPowerM en frmArchivos.

Ejp:
Código Delphi [-]
procedure TFrmArchivos.Posicion_en_Pantalla(Izq, Alto : Integer);
begin
  Self.Left := Izq;
  Self.Top := Alto;
end;

......
......

 procedure TFrmPowerM.FormShow(Sender: TObject);
 var varform:TFrmArchivos;
 begin
    varform := TFrmArchivos.Create(FrmPowerM);
    try
// Despues de crear el formulario, lo colocamos en pantalla.
      varform.Posicion_en_Pantalla(Self.Left + Self.Width, Self.Top);
{
De forma directa tambien puedes colocar ese formulario:
      varform.Left := Self.Left + Self.Width;
      varform.Top := Self.Top;
}
      varform.ShowModal;
    finally
      varform.Free;
      FrmPowerM.SetFocus;
    end;
 end;

Salu2.

lucasarts_18 21-04-2005 23:39:50

Hola defcon1_es:

Gracias por la solución, ahora puedo hacer lo que tenía pensado.

Pero no entiendo por qué me pasaba eso, espero que alguien sepa y que me explique.

Gracias amigos ;) .

Saludos.
Aarón.

Neftali [Germán.Estévez] 22-04-2005 10:10:19

Cita:

Empezado por lucasarts_18
...ya encontré el problema, al momento de crear el formulario yo hago otras instrucciones en éste...
...Al ver que el error que se producía, comente las instrucciones y ya no me levanta la excepción, pero yo necesito ese código para que aparezcan juntos los dos formularios, se entiende ?

Yo utilizaría ese código en el OnShow en lugar de en el Create. Cambia el código por éste:

Código Delphi [-]
 if Assigned(FrmPowerM) then begin
   Self.Left := FrmPowerM.Left + frmPowerM.Width;
   Self.Top := FrmPowerM.Top;
 end;


Cita:

Empezado por lucasarts_18
No encontré los tag que mencionaste,utilicé code pero no queda igual que a tí :( .

Utiliza los mismos TAG's que has puesto, pero cambiando la palabra CODE por la palabra delphi.

lucasarts_18 22-04-2005 17:31:13

Hola Neftalí:

Gracias por todo.

Saludos.
Aarón.


La franja horaria es GMT +2. Ahora son las 21:13:08.

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