Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Восстановление минимизированного приложения 
:(
    Опции темы
Den
  Дата 23.9.2002, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.9.2002

Репутация: нет
Всего: нет



При минимизации формы я использую RxTrayIcon, чтобы при этом исчезла
кнопка из Панели задач вызываю ShowWindow(Application.Handle,SW_HIDE).
Но вот незадача - не получается при восстановлении приложения (после клика
на TrayIcon) добиться, чтобы оно становилось поверх других окон и обязательно было активным.
Пересмотрел кучу FAQ-ов, но не нашел реально работающих примеров.
Был бы весьма признателен за помощь.
Drelphi 6, Win98 :thumbs-up
PM MAIL   Вверх
Vit
Дата 23.9.2002, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



А так пробовал:

Код

ShowWindow(Application.Handle,SW_HIDE);
ShowWindow(Handle,SW_HIDE);


Код

ShowWindow(Application.Handle,SW_restore);
ShowWindow(Handle,SW_restore);



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Den
Дата 23.9.2002, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.9.2002

Репутация: нет
Всего: нет



Цитата(Vit @ 23.9.2002, 12:30)
А так пробовал:

Код

ShowWindow(Application.Handle,SW_HIDE);
ShowWindow(Handle,SW_HIDE);


Код

ShowWindow(Application.Handle,SW_restore);
ShowWindow(Handle,SW_restore);

Пробовал - наверх при этом окно не выходит.

Если сделать
  Application.MainForm.FormStyle := fsStayOnTop;
  Application.MainForm.FormStyle := fsNormal;

то оно становится верхним, но не активизируется.
PM MAIL   Вверх
FdX
Дата 23.9.2002, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



Попробуй винапи SetActiveWindow(HWND hWnd);

Должно работать
PM MAIL ICQ   Вверх
Song
Дата 23.9.2002, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Клик по значку обрабатываете самостоятельно?
Вообще для того чтобы сделать актинвным окно, используют SetForeGroundWindow()


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Den
Дата 23.9.2002, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.9.2002

Репутация: нет
Всего: нет



Пробовал -  те-же пироги ... :-(
Может я чего не так делаю. Вроде собрал минимальный тестовый проект:

type
 TForm1 = class(TForm)
   RxTrayIcon1: TRxTrayIcon;
   procedure FormCreate(Sender: TObject);
   procedure RxTrayIcon1Click(Sender: TObject; Button: TMouseButton;
                                         Shift: TShiftState; X, Y: Integer);
 private
   procedure ApplicationMinimize(Sender : TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.ApplicationMinimize(Sender : TObject);
begin
 RxTrayIcon1.Show;
 ShowWindow(Application.Handle,SW_HIDE);
 ShowWindow(Handle,SW_HIDE);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 RxTrayIcon1.Icon := Application.Icon;
 Application.OnMinimize := ApplicationMinimize;
end;

procedure TForm1.RxTrayIcon1Click(Sender: TObject; Button: TMouseButton;
         Shift: TShiftState; X, Y: Integer);
begin
 Application.Restore;
 ShowWindow(Application.Handle,SW_SHOW);
 ShowWindow(Handle,SW_SHOW);
 SetActiveWindow(Application.MainForm.Handle);
 RxTrayIcon1.Hide;
end;
PM MAIL   Вверх
Den
Дата 23.9.2002, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 23.9.2002

Репутация: нет
Всего: нет



По-поводу SetForegroundWindow - действительно это так. Поэтому спасибо!
Все получилось. Хотя ранее я пробовал этот вариант и - глухо...
Хорошо что уважаемый Song напомнил мне об этом, а то я уже закопался в
поисках и стал забывать с чего все началось.
Дело оказалось в следующем : гасить Tray-иконку надо в последнюю очередь,
именно так все работает(ранее сначала гасил Tray-иконку, а уже потом восттанавливал свое приложение).
Таким образом правильно работает следующий код:

procedure TForm1.ApplicationMinimize(Sender : TObject);
begin
 RxTrayIcon1.Show;
 ShowWindow(Application.Handle,SW_HIDE);
end;

procedure TForm1.RxTrayIcon1Click(Sender: TObject; Button: TMouseButton;
         Shift: TShiftState; X, Y: Integer);
begin
 Application.Restore;
 SetForeGroundWindow(Application.MainForm.Handle);
 RxTrayIcon1.Hide;
end;

Спасибо всем, принявшим участие в обсуждении!  :D
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.