Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #11  
Antiguo 16-09-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Daniel,

Cita:
Empezado por ecfisa
...había probado chequear el estado mediante un Timer. Pero adolece del defecto que no funciona si existe alguna otra ventana modal abierta...


Probé lo que comentas en el Msg #12 en el siguiente código, funcionado correctamente en todos los casos de prueba:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

const
  WM_AFTER_SHOW = WM_USER + 301;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
    procedure WmAfterShow(var Msg: TMessage); message WM_AFTER_SHOW;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Inicializa el formulario como Normal
procedure TForm1.FormCreate(Sender: TObject);
begin
   FormStyle := fsNormal;
end;

// Procesa el mensaje de usuario WM_AFTER_SHOW
procedure TForm1.WmAfterShow(var Msg: TMessage);
begin
   ShowMessage('Presiona WIN + D ...')
end;

// Impide que el formulario sea minimizado manualmente o programáticamente
procedure TForm1.Timer1Timer;
begin
   if not Application.Active then
      Application.Restore;

   if WindowState = wsMinimized then
      WindowState := wsNormal;

   if not Visible then
      Visible := True;
end;

// Caso de Prueba 1 : Windows + D
procedure TForm1.FormShow(Sender: TObject);
begin
   PostMessage(Self.Handle, WM_AFTER_SHOW,0,0);
end;

// Caso de Prueba 2 : Windows + D
procedure TForm1.Button1Click(Sender: TObject);
var
   MsgDialog : TForm;
   MsgUser : String;

begin

   MsgUser := 'Mensaje al Usuario';
   MsgDialog := CreateMessageDialog(MsgUser, mtWarning, [mbOk]) ;
   MsgDialog.FormStyle := fsStayOnTop;
   MsgDialog.ShowModal;

   ShowMessage(MsgUser);

   MessageDlg(MsgUser,mtInformation,[mbOK],0);

   Application.MessageBox(PChar(MsgUser), PChar(Application.Title), MB_OK + MB_ICONINFORMATION);

   MessageBox(Handle, PChar(MsgUser), PChar(Application.Title), MB_OK + MB_ICONINFORMATION);

end;

// Caso de Prueba 3 : Windows + D
procedure TForm1.Button2Click(Sender: TObject);
begin
   PostMessage(Self.Handle, WM_AFTER_SHOW,0,0);
end;

// Caso de Prueba 4 : Minimize
procedure TForm1.Button3Click(Sender: TObject);
begin
   SendMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;

// Caso de Prueba 5 : Minimize
procedure TForm1.Button4Click(Sender: TObject);
begin
   PostMessage(Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;

// Caso de Prueba 6 : Minimize
procedure TForm1.Button5Click(Sender: TObject);
begin
   Perform(WM_SYSCOMMAND, SC_MINIMIZE, 0);
end;

// Caso de Prueba 7 : Minimize
procedure TForm1.Button6Click(Sender: TObject);
begin
   ShowWindow(Handle, SW_MINIMIZE);
end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, impide en todos los casos señalados en el ejemplo que el formulario Form1 sea minimizado.

Pregunto : ¿Que SO tienes instalado?, quizás lo que mencionas este relacionado a la versión de Windows


Saludos

Nelson.

Última edición por nlsgarcia fecha: 16-09-2014 a las 23:37:45.
Responder Con Cita
 



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
cronometro minimizado kurono Varios 3 22-01-2009 06:42:14
Arranque minimizado Cecilio Varios 2 25-06-2008 11:54:59
Minimizado de Formularios Michel Varios 0 16-08-2003 00:00:16
Restaurar un report minimizado MANU1102 Impresión 4 04-08-2003 14:41:27


La franja horaria es GMT +2. Ahora son las 14:02:19.


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