Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

fsStayOnTop [D7, WinXP]


ElectriC ©   (2007-02-11 02:56:00) 

Есть две формы(главная и модальная)! Я устанавливаю FormStyle := fsStayOnTop у обоих форм (в run-time)! Затем при запуске программы вызываю модальную форму (ShowModal)! Формы находяться поверх остальных форм др. программ! Закрываю модальную форму! Затем опять открываю её же! После этого (хоть и FormStyle := fsStayOnTop) они не находяться поверх остальных окон др. программ! Что делать? Подскажите, плиз! Уже два дня мучаюсь! P.S. Когда закрываешь модальную форму главная находиться поверх окон! А вот модальная...портит всю картину!!!


Leonid Troyanovsky   (2007-02-13 19:34:00) [1]


> ElectriC ©   (13.02.07 17:26) [8]

> BIG Thanks!!! Терь я, наконец-то, выпущу свою прогу! YEEESSS!


Надеюсь, что ты меня не подведешь.

--
Regards, LVT.


ElectriC   (2007-02-13 17:26:00) [2]

BIG Thanks!!! Терь я, наконец-то, выпущу свою прогу! YEEESSS!


Leonid Troyanovsky   (2007-02-13 11:11:00) [3]


> 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-12 21:47:00) [4]

[*_*]


ElectriC   (2007-02-12 14:17:00) [5]

Но при этом, если я, допустим, открываю OpenDialog(или SaveDialog), OpenDialog (или SaveDialog) находится позади всех форм моей программы?
Как предотвратить такое безобразие(т.е. поставить OpenDialog(или SaveDialog) поверх всех форм моей программы, когда у них FormStyle = fsStayOnTop)? Заранее, большое спасибо!


Leonid Troyanovsky   (2007-02-12 13:05:00) [6]


> 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-11 21:57:00) [7]

P.S. А можно ли сделать как у диспетчера задач Windows(если он находить-ся поверх окон, вызываю форму "Выбрать столбцы") чтобы и главная никуда не сворачивалась, оставалась позади модальной формы!


ElectriC   (2007-02-11 21:42:00) [8]

thansk, что объяснили чайнику!


Leonid Troyanovsky   (2007-02-11 09:31:00) [9]


> ElectriC ©   (11.02.07 02:56)  

> поверх окон! А вот модальная...портит всю картину!!!


http://groups.google.com/group/fido7.ru.delphi.chainik/msg/6ac825c2a66dd3d0

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо