Показать форму без фокуса

Тема в разделе "Delphi", создана пользователем WinHack, 24 ноя 2016.

  1. WinHack
    Чтобы показать форму без фокуса, выполните следующее:

    Код:
    // В классе TCustomForm, в секции protected добавьте
    
         procedure ShowParam(var param : integer);dynamic;
         {
         Эта процедура вызывается, когда форма должна быть показана,
         теперь Вы должны переопределить этот метод и написать свой вариант
         для ShowWindow API. Например
         }
         function InShowFocus : boolean ;dynamic;
         // эта функция определяет будет ли иметь форма фокус после отображения или нет.
    
     // и этот код
    
    procedure TCustomForm.ShowParam(var param: Integer);
    const
       ShowCommands: array[TWindowState] of Integer =
         (SW_SHOWNORMAL, SW_SHOWMINNOACTIVE, SW_SHOWMAXIMIZED);
    begin
       param := ShowCommands[FWindowState];
    end;
    
    function TCustomForm.InShowFocus: Boolean;
    begin
       Result := True;
    end;
    //-------------------------------------------------------
     // теперь в Вашем классе можете использовать Unit2;
    
    interface
    
     uses
       Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
       Dialogs, StdCtrls, Buttons, ExtCtrls;
    
    type
       TForm2 = class(TForm)
       private
         { Private declarations }
       protected
         procedure ShowParam(var param: Integer); override;
         function InShowFocus: Boolean; override;
       public
         { Public declarations }
       end;
    
    var
       Form2: TForm2;
    
    implementation
    
    {$R *.dfm}
    
     { TForm2 }
    
    function TForm2.InShowFocus: Boolean;
    begin
       Result := False;
    end;
    
    procedure TForm2.ShowParam(var param: Integer);
    begin
       inherited;
       param := SW_SHOWNOACTIVATE;
    end;
    
    end.