PDA

Показать полную графическую версию : [решено] "Склеенные" формы


Malfatto
16-08-2011, 16:51
В моей программе имеется несколько форм, в том числе и динамических. При этом каждая форма отображается в панели задач, однако, если из панели задач "достать" лишь одну форму - на передний план выходят все формы программы, а не только та, что нужна.

Как это исправить?

ferget
16-08-2011, 17:06
поподробнее, какой язык, какая среда программирования, пример кода?

Malfatto
16-08-2011, 17:47
ferget,

Delphi
язык, написано в заголовке
среда программирования - delphi 2010

пример кода »
создаём 2 формы, Form1 и Form2. для Form1:

procedure TForm1.FormShow(Sender: TObject);
begin
Form2.Show;
end;

для Form2
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.ExStyle:=Params.ExStyle or WS_EX_APPWINDOW;
end;

результат - обе формы на таскбаре, при клике по одной вторая также выносится "вперёд".

ferget
16-08-2011, 18:22
здесь посмотрите
http://delphi.about.com/od/formsdialogs/l/aa073101b.htm

Malfatto
16-08-2011, 18:41
ferget,
Params.WndParent:=GetDesktopWindow;
помогло, спасибо :)

и что бы не создавать новую тему, спрошу здесь.

в Windows 7 есть такая фишка - можно на таскбаре нажать на кнопку программы средней кнопкой мыши (колёсиком), после чего открывается новый экземпляр программы.

однако, у меня оно не срабатывает, т.е. нажатие не даёт никакого эффекта.

хотя, если программу закрепить на таскбаре, то всё отлично работает.

такая проблема со всеми программами на delphi.

Delirium
16-08-2011, 19:08
хотя, если программу закрепить на таскбаре, то всё отлично работает. »
Такое поведение у многих программ, не только с делфи. Точно также ведет себя IE 9 - пока не закрепишь, новые экземпляры не открываются.

Malfatto
16-08-2011, 19:16
Delirium, у меня с IE9 всё отлично, только что проверил.

кстати, заметил, что запуская программу через ярлык, то всё в порядке.

думаю, это баг операционки, а не delphi :)

всем спасибо




© OSzone.net 2001-2012