pacopenin,
Cita:
|
Empezado por pacopenin
...Tengo un Splash Screen...si pulso el icono de la barra de tareas de la aplicación..se minimiza..luego no consigo que vuelva a restaurarse...
|
Te pregunto:
¿Que versión de Delphi utilizas?.
Te comento:
1- El código comentado en los
Msg #1 y #2 funciona correctamente en Delphi 7 y Delphi 2006.
2-
En Delphi 2010 los códigos comentados no funcionan, si se minimiza el Form Modal (De cualquier forma) este no puede restaurarse haciendo click en el toolbar de aplicaciones de Windows, para ello debe usarse un Task Manager para restaurar nuevamente el Form,
este comportamiento es análogo en Windows XP, Windows Vista y Windows 7.
3-
Un Workaround al problema es redéfinir el método CreateParams para cambiar el comportamiento del Form Modal en el toolBar al momento de minimizarse, con lo cual se logra la siguiente funcionalidad:
a- Si se hace click sobre el icono de la aplicación en el toolBar mientras se muestra el Form Modal
, la aplicación no será minimizada.
b- Si se minimiza el Form Modal por medio de los controles del Form (BorderIcons)
, este podrá ser restaurado al hacer click en el icono de la aplicación en el toolbar.
Revisa este código:
Código Delphi
[-]
program Project1;
uses
SysUtils,
Controls,
Forms,
Unit1 in 'Unit1.pas' ,
Unit2 in 'Unit2.pas' ,
Unit3 in 'Unit3.pas' ;
{$R *.res}
begin
Application.Initialize;
Form1 := TForm1.Create(Application);
if Form1.ShowModal = mrOk then
begin
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.Run;
end
else
begin
Application.Terminate;
end;
end.
El código anterior muestra un Form Modal que permite el acceso o salida de la aplicación,
siendo análogo en funcionalidad al mostrado en los
Msg #1 y #2.
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
public
protected
.
procedure CreateParams(var Params: TCreateParams); override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
.
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
with Params do
begin
ExStyle := ExStyle or WS_EX_APPWINDOW;
WndParent := GetDesktopWindow;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ModalResult := mrOk;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ModalResult := mrAbort;
end;
end.
El código anterior
modifica el comportamiento del Form Modal al ser minimizado al toolbar por medio de un override al método CreateParams, con lo cual se logra
poder minimizar y restaurar la aplicación del toolbar de Windows si esta activo el Form Modal.
Revisa este link:
Espero sea útil
Nelson.