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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по созданию иконки в трее, списал код, а он не работает 
:(
    Опции темы
Chechaco
Дата 11.10.2005, 03:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 6.10.2005
Где: из Канска

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



Имеется нижеследующий кусок кода по помещению иконки в трей, его я кстати списал с этого же форума, вот адрес: http://vingrad.ru/DELPHI-DLP-000635 Компилятор доходит до процедуры Ic(1, Application.Icon) и выдает ошибку Types of actual and formal var parameters must be identical - это, я так понимаю, несовместимость типов объявленных и реальных значений процедуры. Подскажите, как сделать правильно?

Код

Procedure TForm1.Ic(n:Integer;Icon:TIcon); 
  Var Nim:TNotifyIconData; 
begin 
 With Nim do  
 
 
 Begin  

  
 cbSize:=SizeOf(Nim);  
 
 Wnd:=Form1.Handle;  
 
 uID:=1;  
 
 uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;  
 
 hicon:=Icon.Handle;  
 
 uCallbackMessage:=wm_user+1;  
 
 szTip:='Хинт, который будет появляться у значка';  
 
  
 End;  
 
  
 Case n OF  
 
  
 1: Shell_NotifyIcon(Nim_Add,@Nim);  
 
 2: Shell_NotifyIcon(Nim_Delete,@Nim);  
 
 3: Shell_NotifyIcon(Nim_Modify,@Nim);  
 
  
 End;  
 
  
end;

procedure TForm1.ControlWindow(var Msg: TMessage); 
  begin 
    if Msg.WParam = SC_MINIMIZE then 
      begin 
        Ic(1, Application.Icon); // Добавляем значок в трей
        ShowWindow(Handle, SW_HIDE); // Скрываем программу
      end 
    else 
      inherited; 
  end; 


А заодно, будьте добре, подскажите что такое inherited и как оно работает?
PM MAIL   Вверх
~FoX~
Дата 11.10.2005, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Вот 100% рабочий код, из своего приложения выдрал:
Код

  protected
    procedure IconMouse(var Msg : TMessage); message WM_USER+1;
    procedure Ic(n:Integer;Icon:TIcon);
    Procedure ControlWindow(Var Msg:TMessage); message WM_SYSCOMMAND;
//......................

Procedure TForm1.Ic(n:Integer;Icon:TIcon);
Var
  Nim:TNotifyIconData;
begin
  With Nim do
    Begin
      cbSize:=SizeOf(Nim);
      Wnd:=Form1.Handle;
      uID:=1;
      uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
      hicon:=Icon.Handle;
      uCallbackMessage:=wm_user+1;
      szTip:='WallPapperChanger';
    End;
  Case n OF
    1: Shell_NotifyIcon(Nim_Add,@Nim);
    2: Shell_NotifyIcon(Nim_Delete,@Nim);
    3: Shell_NotifyIcon(Nim_Modify,@Nim);
  End;
end;


Procedure TForm1.IconMouse(var Msg : TMessage);
Var
  p:tpoint;
begin
  GetCursorPos(p); // Запоминаем координаты курсора мыши
  Case Msg.LParam OF WM_LBUTTONUP,WM_LBUTTONDBLCLK:
    Begin
      Ic(2,Application.Icon); // Удаляем значок из трея
      ShowWindow(Handle,SW_SHOWNORMAL);
      ShowWindow(Application.Handle,SW_SHOWNORMAL); // Восстанавливаем окно программы
    End;
      WM_RBUTTONUP, WM_RBUTTONDBLCLK:
    Begin
      SetForegroundWindow(Handle); // Восстанавливаем программу в качестве переднего окна
      Form1.PopupMenu5.Popup(p.X,p.Y); // Заставляем всплыть тот самый TPopUp о котором я говорил ?
      PostMessage(Handle ,WM_NULL,0,0) // Обнуляем сообщение
    end;
End;
end;

Procedure TForm1.ControlWindow(Var Msg:TMessage);
Begin
  IF Msg.WParam=SC_MINIMIZE then
    Begin
      Ic(1,Application.Icon); // Добавляем значок в трей
      ShowWindow(Handle, SW_HIDE); // Скрываем программу
      ShowWindow(Application.Handle, SW_HIDE);
    End
  else
    inherited;
End;




--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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