Форум: "Основная";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
Вниз
fsStayOnTop Найти похожие ветки
← →
ElectriC © (2007-02-11 02:56) [0]Есть две формы(главная и модальная)! Я устанавливаю FormStyle := fsStayOnTop у обоих форм (в run-time)! Затем при запуске программы вызываю модальную форму (ShowModal)! Формы находяться поверх остальных форм др. программ! Закрываю модальную форму! Затем опять открываю её же! После этого (хоть и FormStyle := fsStayOnTop) они не находяться поверх остальных окон др. программ! Что делать? Подскажите, плиз! Уже два дня мучаюсь! P.S. Когда закрываешь модальную форму главная находиться поверх окон! А вот модальная...портит всю картину!!!
← →
Leonid Troyanovsky © (2007-02-11 09:31) [1]
> ElectriC © (11.02.07 02:56)
> поверх окон! А вот модальная...портит всю картину!!!
http://groups.google.com/group/fido7.ru.delphi.chainik/msg/6ac825c2a66dd3d0
--
Regards, LVT.
← →
ElectriC © (2007-02-11 21:42) [2]thansk, что объяснили чайнику!
← →
ElectriC © (2007-02-11 21:57) [3]P.S. А можно ли сделать как у диспетчера задач Windows(если он находить-ся поверх окон, вызываю форму "Выбрать столбцы") чтобы и главная никуда не сворачивалась, оставалась позади модальной формы!
← →
Leonid Troyanovsky © (2007-02-12 13:05) [4]
> ElectriC © (11.02.07 21:57) [3]
> P.S. А можно ли сделать как у диспетчера задач Windows(если
> он находить-ся поверх окон, вызываю форму "Выбрать столбцы")
> чтобы и главная никуда не сворачивалась, оставалась позади
> модальной формы!
Если речь идет только о двух формах, то можно не трогать formstyle,
а поступить примерно так:
procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.Create(nil) do
try
ShowModal;
finally
Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowPos(Application.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
end;
И для TForm2
procedure TForm2.FormShow(Sender: TObject);
begin
SetWindowPos(Application.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
end;
Для более же сложных случаев нужно тщательное тестирование.
--
Regards, LVT.
← →
ElectriC © (2007-02-12 14:17) [5]Но при этом, если я, допустим, открываю OpenDialog(или SaveDialog), OpenDialog (или SaveDialog) находится позади всех форм моей программы?
Как предотвратить такое безобразие(т.е. поставить OpenDialog(или SaveDialog) поверх всех форм моей программы, когда у них FormStyle = fsStayOnTop)? Заранее, большое спасибо!
← →
ElectriC © (2007-02-12 21:47) [6][*_*]
← →
Leonid Troyanovsky © (2007-02-13 11:11) [7]
> ElectriC © (12.02.07 14:17) [5]
> Но при этом, если я, допустим, открываю OpenDialog(или SaveDialog),
> OpenDialog (или SaveDialog) находится позади всех форм
> моей программы?
Ну, вот.. Начиналось с "выбрать столбцы", а закончилось OpenDialog.
Кста, я ж говорил про то, что у вторичных форм fsStayOnTop
сбрасывается при минимизации приложения.
А сделать непотопляемым OpenDialog можно если, кроме
procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowPos(Application.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE);
end;
добавить диалогу тот же самый вызов в его OnShow.
Но, вообще-то, такими вещами, как HWND_TOPMOST злоупотреблять
ни в коем случае не стоит. Т.е., приложение может позволить себе
только одну малюсенькую формочку, IMHO.
--
Regards, LVT.
← →
ElectriC © (2007-02-13 17:26) [8]BIG Thanks!!! Терь я, наконец-то, выпущу свою прогу! YEEESSS!
← →
Leonid Troyanovsky © (2007-02-13 19:34) [9]
> ElectriC © (13.02.07 17:26) [8]
> BIG Thanks!!! Терь я, наконец-то, выпущу свою прогу! YEEESSS!
Надеюсь, что ты меня не подведешь.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.04.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c