Понадобилось выяснить способ вызова дочерней формы, без передачи оной фокуса.
При использовании функции ShowWindow(hWnd, nCmdShow); форма открывается без передачи фокуса, но с отсутствием на ней каких либо контролов...
Как правильно реализовать данную идею?
Код:
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, Forms, StdCtrls, Windows;
type
{ TForm1 }
TForm1 = class(TForm)
b: TForm1;
Button1: TButton;
procedure Button1MouseEnter(Sender: TObject);
procedure Button1MouseLeave(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1MouseEnter(Sender: TObject);
begin
b := TForm1.Create(self);
b.Left:=100;
b.Top:=100;
ShowWindow(b.Handle, SW_SHOWNOACTIVATE);
//b.Show;
//SetFocus;
end;
procedure TForm1.Button1MouseLeave(Sender: TObject);
begin
b.Free;
end;
end.
Добавлено спустя 4 часа 52 минуты 48 секунд:
Пытался использовать небольшой хак:
- Код: Выделить всё
ShowWindow(b.Handle,SW_SHOWNOACTIVATE);
b.Visible := True;
Но при присвоении параметру Visible значения true, активируется и фокус на созданную форму

Хотя все кто работают в дельфях, пишут работает отлично...