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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
15-1174117021
Riply
2007-03-17 10:37
2007.04.08
Скорость и местоположение данных.


11-1151616327
parovoZZ
2006-06-30 01:25
2007.04.08
KOLPNG


15-1173949620
DevilDevil
2007-03-15 12:07
2007.04.08
C++Builder. Реально ли не таскать за собой DLL?


2-1174149068
Roman_S
2007-03-17 19:31
2007.04.08
отчёт в ListView - как при разархивировании в WinRAR


15-1173940554
Alkid
2007-03-15 09:35
2007.04.08
Правила русского языка