|
Вопрос # 4 368/ вопрос открыт / |
|
Здравствуйте!
При показе или перед показом Hint кнопки на Toolbar все открытые формы уходят за главную.
Открыл все три формы. На двух из них есть ToolBar с одной кнопкой имеющей Hint. При наведении курсора мыши на кнопку в Toolbar, после вывода Hint все остальные формы становятся позади основной (Form1) и причём вывести их можно на передний план только по клику на заголовоке, а не на теле формы. Даже если на Form2 навести курсор на кнопку ToolBar, то после вывода Hint снова на переднем плане Form1. Что за баг такой? И почему при двух открытых формах (Form1, Form2) при нажатии на кнопку в Form2 при показе Form3, Form2 уходит на задний план за Form1 и Form3, Должно же быть так: поверх Form1 Form2, а поверх Form2 Form3?
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: Shouldercannon (статус: Посетитель)
Вопрос отправлен: 30 июня 2010, 14:19
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Мережников Андрей
Здравствуйте, Shouldercannon!
В DelphiWorld приведен такой пример кода (см. в приложении)
Приложение: Переключить в обычный режим- type
- TForm = class(TForm)
- {...}
- protected
- procedure CreateParams(var Params: TCreateParams); override;
- end;
-
- implementation
-
- {...}
-
- procedure TForm2.CreateParams(var Params: TCreateParams);
- begin
- inherited CreateParams(Params);
- Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
- Params.WndParent := GetDesktopWindow;
- end;
-
 |
Ответ отправил: Мережников Андрей (статус: Абитуриент)
Время отправки: 30 июня 2010, 18:37
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 1 июля 2010, 13:20; участников в обсуждении: 2.
|
Shouldercannon (статус: Посетитель), 30 июня 2010, 18:09 [#1]:
Проблема заключалась в Params.WndParent := GetDesktopWindow;.
Убрав Params.WndParent := GetDesktopWindow; появилась новая проблема. Открыты две формы, каждая из них имеет кнопку на панели задач. Если свернуть вторую форму, то всё нормально как были две кнопки на панели задач так и остались, но если свернуть первую (основную), то на панели задач остаётся кнопка только главной формы, а второй нет. Может есть альтернатива Params.WndParent := GetDesktopWindow;, менее проблематичная?
|
|
Вадим К (статус: Академик), 30 июня 2010, 22:21 [#2]:
Delphi 2005 и младше?
И формы немодальные? если они не модальные, то они не могут оставаться поверх основной. Если хочется, что бы были - делайте модальными.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Shouldercannon (статус: Посетитель), 30 июня 2010, 23:15 [#3]:
Delphi 7. Не модальные. Нато и делалось, чтобы можно было открыть несколько Форм и свободно переключаться между ними.
|
|
Вадим К (статус: Академик), 1 июля 2010, 03:55 [#4]:
Дело в том, что в 7 делфи кнопка на панели задач это не кнопка главной формы. Это кнопка невидимого окна. Поэтому, когда ее сворачивают, то сворачивается и все другие формы. Что же делать? Попробовать в 2007 делфи и старше. Во вторых можно попробовать перепроектировать приложение (да, понимаю, это звучит дико и возможно рушит Ваши представления, но ... может там действительно плохой интерфейс?). В третьих, если нужно так, что бы три формы были независимы, но порядок соблюдался - это опять толчек к модальным формам. Если же формы "очень независимы", то может это три разных приложения? В виндовс не принято приложениям делать кнопки для всех своих окон, а просто сделать в меню "окна" список окон.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Shouldercannon (статус: Посетитель), 1 июля 2010, 13:20 [#5]:
Соблюдение парядка не требуется. CreatParams заменил на procedure TForm2.FormCreate(Sender: TObject);
begin
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
end;
Теперь осталось решить проблему сворачивания всех форм при сворачивании основной.
P.S. А если использовать мультипоточность?
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|