Gracias escafranda por tu ayuda, voy a tomarlo en cuenta.
He hecho algunas modificaciones al primer ejemplo que les mande y ya pude realizar lo que buscaba,
les comparto el código:
El FORM1 (Principal):
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
windows, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Unit2;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure delay(msecs:integer);
var
FirstTickCount:longint;
begin
FirstTickCount:=GetTickCount;
repeat
Application.ProcessMessages; {allowing access to other
controls, etc.}
until ((GetTickCount-FirstTickCount) >= Longint(msecs));
End;
procedure TForm1.FormCreate(Sender: TObject);
begin
Form2 := Tform2.Create(Self);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i, TimeSleep: integer;
begin
form2.Close;
Form2 := Tform2.Create(Self);
form2.Top:=-form2.Height; // esto hará que el aviso de arriba se vuela a ocultar
form2.Show;
//form2.destroy;
TimeSleep := 5;
begin
repeat
form2.Top := form2.Top+1;
delay(TimeSleep);
until form2.top=0;
delay(3000); // 3seg antes de volverse a ocultar
repeat
form2.Top := form2.Top-1;
delay(TimeSleep);
until form2.top=-form2.Height;
begin
ShowMessage('Fin');
form2.Close;
//form2.destroy;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;
end.
El FORM2 (Aviso tipo antivirus);
unit Unit2;
{$mode objfpc}{$H+}
interface
uses
Windows, Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
StdCtrls;
type
{ TForm2 }
TForm2 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.lfm}
{ TForm2 }
procedure TForm2.FormCreate(Sender: TObject); // se crea en forma semiredonda
var
f: HRGN;
begin
Left := (Screen.Width - Width) div 2; // alineación centrado
f := CreateRoundRectRgn(
0, // x-coordinate of the region's upper-left corner
-40, // y-coordinate of the region's upper-left corner
clientwidth, // x-coordinate of the region's lower-right corner
clientheight, // y-coordinate of the region's lower-right corner
40, // height of ellipse for rounded corners
40); // width of ellipse for rounded corners
SetWindowRgn(Handle,f,True);
End;
procedure TForm2.Button1Click(Sender: TObject);
begin
form2.Close;
end;
end.
Lo he probado varias vecez (Windows 7) y me funciona.... pero tengo un pequeñito inconveniente....
Si lo prueban se darán cuenta que en el form2 (aviso tipo antivirus) le he puesto un boton para cerrarlo
con el siguiente código:
procedure TForm2.Button1Click(Sender: TObject);
begin
form2.Close;
end;
se supone que debe cerrar el form2, pero el problema es que si este form2 lo abro varias veces y lo cierro aún siguen saliendo el mismo form2 pero oculto... como si aún siguiera activo despues de cerrarlo.
mi pregunta es ¿como cerrar el form2 (aunque le de varios clic) para poder cerrar el form1 (principal)?
Gracias por sus respuestas....
PD: les adjunto mi avances.