martes, 1 de octubre de 2013

Lazarus abrir y cerrar un FORM dede otro FORM

El otro día quise abrir y cerrar forms desde otro form pero a pesar de haber visto otros ejemplos no conseguía que me compilaran. Al final pregunte en el foro me respondierón esto:

http://www.clubdelphi.com/foros/showthread.php?t=83681



Código:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

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

var
  Form1: TForm1;

implementation

{$R *.lfm}

uses Unit2;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  TForm2.ShowForm;
end;

end.





Código:
unit Unit2;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;

type

  { TForm2 }

  TForm2 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    class procedure ShowForm;
  end;

var
  Form2: TForm2;

implementation

{$R *.lfm}

procedure TForm2.FormCreate(Sender: TObject);
begin
  Timer1.Enabled  := False;                  //Iniciomaos el timer primero lo ponemos a 0
  Timer1.Interval := 2000;                   //los milisegundos a los que saltara el timer
  Timer1.Enabled  := True;                   //lo iniciamos.
end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
    Form2 := nil;
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
  close;                                     //Cuando pasa el tiempo estipulado en el timer
                                             //ejecuta lo de esta función.
end;

class procedure TForm2.ShowForm;
begin
  if not Assigned(Form2) then
     Form2 := TForm2.Create(nil);
  Form2.Show;  // o ShowModal
end;

end.



2 comentarios:

  1. Eres grande.

    Después de romperme la cabeza con multitud de páginas en inglés, por fin doy con la solución gracias a tí.

    Mi reconocimiento

    ResponderEliminar
  2. Muchas gracias, me alegro que te halla sido de utilidad.

    ResponderEliminar