Страница 1 из 1
Hint от ToolBar выводит на передний план Form1
Добавлено: 30 июн 2010, 14:24
Shouldercannon
Открыл все три формы. На двух из них есть ToolBar с одной кнопкой имеющей Hint. При наведении курсора мыши на кнопку в Toolbar, после вывода Hint все остальные формы становятся позади основной (Form1) и причём вывести их можно на передний план только по клику на заголовоке, а не на теле формы. Даже если на Form2 навести курсор на кнопку ToolBar, то после вывода Hint снова на переднем плане Form1. Что за баг такой? И почему при двух открытых формах (Form1, Form2) при нажатии на кнопку в Form2 при показе Form3, Form2 уходит на задний план за Form1 и Form3, Должно же быть так: поверх Form1 Form2, а поверх Form2 Form3?
Re: Hint от ToolBar выводит на передний план Form1
Добавлено: 30 июн 2010, 16:03
somewhere
У тебя в Unit2 есть такой код:
После него Form2 принадлежит десктопу и тем самым рушит правильный наследственный порядок отображения окон. Причем происходит это после показа самой формы - как только она ловит Repaint (а это происходит и при выводе хинта и при нажатии на кнопку). Желательно бы этой форме дать основное окно в качестве Parent или не менять параметр вообще
Re: Hint от ToolBar выводит на передний план Form1
Добавлено: 30 июн 2010, 17:12
Shouldercannon
Желательно бы этой форме дать основное окно в качестве Parent или не менять параметр вообще
Прошу прощения это как?
Re: Hint от ToolBar выводит на передний план Form1
Добавлено: 30 июн 2010, 17:38
somewhere
Хотя бы просто перед этой строчкой поставь // пометив ее как коментарий или удали. И тогда 99.9% все будет в норме
Re: Hint от ToolBar выводит на передний план Form1
Добавлено: 30 июн 2010, 17:59
Shouldercannon
Убрав Params.WndParent := GetDesktopWindow; появилась новая проблема. Открыты две формы, каждая из них имеет кнопку на панели задач. Если свернуть вторую форму, то всё нормально как были две кнопки на панели задач так и остались, но если свернуть первую (основную), то на панели задач остаётся кнопка только главной формы, а второй нет.
Re: Hint от ToolBar выводит на передний план Form1
Добавлено: 30 июн 2010, 22:13
somewhere
Значит убирай Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW из Unit2, а лучше целиком CreateParams
Re: Hint от ToolBar выводит на передний план Form1
Добавлено: 30 июн 2010, 23:12
Shouldercannon
Нельзя, формы должны быть как "независимые приложения".
Re: Hint от ToolBar выводит на передний план Form1
Добавлено: 30 июн 2010, 23:21
somewhere
Присутствие на таскбаре не делает форму независимым приложением...

вообще постановка фразы некорректна, форма - это форма, а приложение - это приложение. Не надо их под одну гребенку. Значит надо начинать сначала - выяснять что вообще требуется
Re: Hint от ToolBar выводит на передний план Form1
Добавлено: 30 июн 2010, 23:27
Shouldercannon
Все формы должны стать "свободными". Чтобы при сворачивании основной не сворачивались все остальные и чтобы каждая из форм имела кнопку на панели задач.
Пересмотрим систему. Убираем procedure CreateParams(var Params: TCreateParams); override; и переходим на
Код:
Код: Выделить всё
procedure TForm2.FormCreate(Sender: TObject);
begin
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
end;
Теперь осталось решить проблему сворачиваниях всех открытых форм при сворачивании Form1 (Главной формы).
P.S. А если использовать мультипоточность?