2014-11-05 3 views
-1

Кто-нибудь знает, какое событие в Delphi уволили, когда я нажимаю на миниатюру окна приложения на панели задач?Delphi - событие, запущенное после нажатия окна миниатюры на панели задач

Например, после переместить курсор на иконку приложения на панели задач я вижу две миниатюр два различных открытых приложения окна, и теперь я хочу, чтобы принести к переднему окну, что миниатюрный я нажимаю

На панели задач у меня есть 2 миниатюра: из MainForm и формы открыты с использованием MainForm

with TfrZadaniaMain.Create(Application) do 
    try 
    Show; 

где TfrZadaniaMain это название второй формы, видимой в миниатюре.

И у меня есть проблемы с переключением между этими двумя формами, нажав на него миниатюрный

Создать Params из TfrZadaniaMain у меня есть:

procedure TfrZadaniaMain.CreateParams(var Params: TCreateParams); 
begin 
    inherited CreateParams(Params); 
    Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; 
end; 

, но это не помогает. На обоих MainForm и TfrZadaniaMain на FormActivate случае у меня есть BringToFront, но, вероятно, мне нужно что-то большее для комфортного переключения между этими двумя формами


На панели задач у меня есть 2 миниатюры: Of MainForm и по форме, открыт с MainForm использованием

with TfrZadaniaMain.Create(Application) do 
    try 
    Show; 

где TfrZadaniaMain - это имя второй формы, видимой в миниатюрах.

И у меня есть проблемы с переключением между этими двумя формами

Создать Params из TfrZadaniaMain у меня есть:

procedure TfrZadaniaMain.CreateParams(var Params: TCreateParams); 
begin 
    inherited CreateParams(Params); 
    Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; 
end; 

, но это не помогает. На обоих MainForm и TfrZadaniaMain на FormActivate случае я имею BringToFront, но, вероятно, мне нужно что-то большее для комфортного переключения между этими двумя формами

+0

Я действительно не знаю, но - поскольку в случае свернутых окон это означает событие «окна восстановления» - я бы сильно предположил, что сообщение WM_SIZE будет отправлено в ваше приложение. В случае без минимизации окон я думаю, что ваше окно становится в фокусе. Если вы хотите выполнить что-то более сложное, я бы предложил вам прочитать о [API-панели панели задач] (http://msdn.microsoft.com/en-us/magazine/dd942846.aspx) – mg30rg

+0

* «.. Я вижу две миниатюры. . * * Это не поведение по умолчанию. По умолчанию в окне приложения есть кнопка (MainFormOnTaskBar = False) - в этом случае есть одна миниатюра одной (произвольной?) Формы или основная форма имеет кнопку (MainFormOnTaskbar = True) - в этом случае есть единственное миниатюра основной формы. –

+2

Мое мнение, что это не совсем возможно, не зная, что вы сделали. –

ответ

0

Что касается исходного вопроса о том, какие события первого обожженного при Применение восстанавливается из свернутого состояния:

Первое событие уволен является TApplication.OnRestore http://docwiki.embarcadero.com/Libraries/XE7/en/Vcl.Forms.TApplication.OnRestore

не следует путать этот с TForm.OnRestore событие, как они отличаются.

TApplication.OnRestore срабатывает только тогда, когда приложение не будет восстановлена ​​из свернутого состояния (не матер, какая форма была восстановлена ​​приложение)

TForm.OnRestore вызывается, когда конкретная форма восстанавливается из сворачивания или разворачивания состояние и является специфическим для каждой отдельной Формы.

-1

Хорошо, наконец, я нашел решение!

Благодаря this site

Решение состоит в том, чтобы добавить в WndParent := GetDesktopwindow;TfrZadaniaMain.CreateParams.

Теперь, когда я нажимаю на миниатюру каждой формы (Main или TfrZadaniaMain) запрашиваемое (щелкнул) формы появляются.

+3

Это плохая идея: [Что особенного в окне рабочего стола?] (Http://blogs.msdn.com/b/oldnewthing/archive/2004/02/24/79212.aspx) –

+1

Действительно, это абсолютно неправильно –