Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Две формы: FormStyle=fsStayOnTop.. Form2 всегда выше Form1?   Найти похожие ветки 

 
Vyacheslav   (2012-03-05 15:34) [0]

Здравствуйте.
В проекте 2 формы: Form1.FormStyle = fsStayOnTop; Form2.FormStyle = fsStayOnTop; Form1 - main form проекта.
Хочу добиться того, чтоб обе формы, как и подразумевается были поверх всех окон, но при этом Form2 всегда выше Form1.
Я думаю, что все знают, что тривиальная смена FormStyle на fsStayOnTop не даёт ожидаемого результата, а именно Form2, начинает теряться при клике на не активное окно другого приложения или смене активного Alt+Tab.


 
AV ©   (2012-03-05 15:57) [1]

не получилось воспроизвести..
но может, что вроде такого нужно (чтобы при активации приложения была нужная форма показана)?

type
 TNotifyEvent = procedure(Sender: TObject) of object;
var
 M: TMethod;

 procedure aa(sender: TObject);
 begin
   Form2.Show;
 end;
{$R *.res}

begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.CreateForm(TForm2, Form2);
 M.Code := addr(aa);
 M.Data := nil;
 Application.OnActivate := TNotifyEvent(M);
 Application.Run;
end.


 
Vyacheslav   (2012-03-05 19:05) [2]

Не совсем понял идею..
Честно сказать не знаю даже, какой именно API отвечает за последовательность отображения форм..


 
Vyacheslav   (2012-03-05 19:19) [3]

Т.е. нужно найти тот момент, когда надо отдавать Form2.SetFocus;


 
Vyacheslav   (2012-03-05 19:49) [4]

Всё что получилось, это поставить на форму Form2 таймер:
procedure TForm2.Timer1Timer(Sender: TObject);
begin
 if (Form2.Visible and Form2.Enabled) then Form2.SetFocus;
end;

Но это уж совсем лапти!

В методе AV поменял Form2.Show; на Form2.SetFocus;, Application.OnActivate := TNotifyEvent(M); на Application.OnDeActivate := TNotifyEvent(M); - получилось удерживать Form2 при потере фокуса всей Application, но не удалось вернуть фокус Form2 при возврате в фокус Form1..



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.262 c
1-1300455452
TStas
2011-03-18 16:37
2013.03.22
Как получить версию Экселя?


15-1340224203
Юрий
2012-06-21 00:30
2013.03.22
С днем рождения ! 21 июня 2012 четверг


15-1336936111
Рекрут
2012-05-13 23:08
2013.03.22
Укрепление памяти


15-1346911110
AV
2012-09-06 09:58
2013.03.22
Программистом я б пошел.. Пусть меня научат!


2-1337243492
TStas
2012-05-17 12:31
2013.03.22
Как установить отступ в ричэдите у всех абзацев?