Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизДве формы: 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.071 c