Статьи
|
Чтобы показать форму без фокуса, выполните следующее:
// В классе 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.
|