Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Безопасность, Шифрование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2007, 23:02   #1
Lonix
Пользователь
 
Регистрация: 17.03.2007
Сообщений: 39
По умолчанию Иконка у часов

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


Заранее спасибо!
Lonix вне форума Ответить с цитированием
Старый 28.03.2007, 06:59   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Цитата:
Сообщение от Lonix Посмотреть сообщение
Как сделать так чтобы была иконка у часов, а на неё нажимаешь и выводится меню программы?


Заранее спасибо!

Компонент CoolTrayIcon + popupmenu.

Да кстати документацию по работе с компонентом не забудь прочесть!
Вложения
Тип файла: zip TСooltrayicon.zip (104.0 Кб, 41 просмотров)
merax вне форума Ответить с цитированием
Старый 03.04.2007, 17:20   #3
Voland
Heavy metal
Пользователь
 
Аватар для Voland
 
Регистрация: 02.04.2007
Сообщений: 42
По умолчанию

Если не хочешь компонент - читай Win32 SDK по теме Shell_NotifyIcon
Voland вне форума Ответить с цитированием
Старый 03.04.2007, 17:38   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Delphi 8 и старше.
TTrarIcon.
В стандартной палитре компонент.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 03.04.2007, 22:49   #5
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

вот такой кодик...
писал для себя когда писал на WinAPI
Код:
const
 WM_MYICONNOTIFY = WM_USER + 123;
    
    procedure RestoreItemClick(Sender: TObject);
    procedure HideItemClick(Sender: TObject);
    procedure FileExitItem1Click(Sender: TObject);
  private
  ShownOnce: Boolean;
  public
    procedure WMICON(var msg: TMessage); message WM_MYICONNOTIFY;
    procedure WMSYSCOMMAND(var msg: TMessage);message WM_SYSCOMMAND;
    procedure RestoreMainForm;
    procedure HideMainForm;
    procedure CreateTrayIcon(n:Integer);
    procedure DeleteTrayIcon(n:Integer);
  end;

uses ComObj,  Activex, ShellApi, Shlobj, Registry;

{Если CheckBox1.Checked=true то программа будет сворачиваться в SystemTray а если false То нет}

procedure TForm1.WMICON(var msg: TMessage);
var Pos : TPoint;
begin
if CheckBox1.Checked=false then Exit;
 case msg.LParam of
 WM_RBUTTONDOWN:
  begin
   GetCursorPos(Pos);
   SetForegroundWindow(Application.MainForm.Handle);
   PopupMenu1.Popup(Pos.X, Pos.Y);
  end;
 WM_LBUTTONDBLCLK :RestoreItemClick(Self);
 end;
end;

procedure TForm1.WMSYSCOMMAND(var msg: TMessage);
begin
 inherited;
 if (Msg.wParam=SC_MINIMIZE) then HideItemClick(Self);
end;


procedure TForm1.HideMainForm;
begin
if CheckBox1.Checked=false then Exit;
  Application.ShowMainForm := False;
  ShowWindow(Application.Handle, SW_HIDE);
  ShowWindow(Application.MainForm.Handle, SW_HIDE);
end;

procedure TForm1.RestoreMainForm;
var i,j : Integer;
begin
if CheckBox1.Checked=false then Exit;
  Application.ShowMainForm := True;
  ShowWindow(Application.Handle, SW_RESTORE);
  ShowWindow(Application.MainForm.Handle, SW_RESTORE);
  if not ShownOnce then
  begin
    for I := 0 to Application.MainForm.ComponentCount -1 do
      if Application.MainForm.Components[I] is TWinControl then
        with Application.MainForm.Components[I] as TWinControl do
          if Visible then
          begin
            ShowWindow(Handle, SW_SHOWDEFAULT);
            for J := 0 to ComponentCount -1 do
              if Components[J] is TWinControl then
                ShowWindow((Components[J] as TWinControl).Handle, SW_SHOWDEFAULT);
          end;
    ShownOnce := True;
  end;
end;

procedure TForm1.CreateTrayIcon(n:Integer);
var nidata : TNotifyIconData;
begin
if CheckBox1.Checked=false then Exit;
 with nidata do
  begin
   cbSize := SizeOf(TNotifyIconData);
   Wnd := Self.Handle;
   uID := 1;
   uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
   uCallBackMessage := WM_MYICONNOTIFY;
   hIcon := Application.Icon.Handle;
   StrPCopy(szTip,’Название твое программы :)’);
  end;
  Shell_NotifyIcon(NIM_ADD, @nidata);
end;

procedure TForm1.DeleteTrayIcon(n:Integer);
var nidata : TNotifyIconData;
begin
if CheckBox1.Checked=false then Exit;
 with nidata do
  begin
   cbSize := SizeOf(TNotifyIconData);
   Wnd := Self.Handle;
   uID := 1;
  end;
  Shell_NotifyIcon(NIM_DELETE, @nidata);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ShownOnce:= False;
 CreateTrayIcon(1);
end;


procedure TForm1.RestoreItemClick(Sender: TObject);
begin
RestoreMainForm;
 DeleteTrayIcon(1);
end;

procedure TForm1.HideItemClick(Sender: TObject);
begin
HideMainForm;
 CreateTrayIcon(1);
end;

procedure TForm1.FileExitItem1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteTrayIcon(1);
end;

procedure TForm1.N1Click(Sender: TObject);
begin
 RestoreMainForm; //Восстановить
end;

procedure TForm1.N2Click(Sender: TObject);
begin
 HideItemClick(Self); //Свернуть
end;
Довольно таки нтересный пример... есть над чем поиграться и есть что дописать для полного счастья
dron-s вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста при написании графических часов на С Black_Ak24 Общие вопросы C/C++ 7 12.06.2008 10:24
иконка ruslan21 Общие вопросы Delphi 3 22.06.2007 10:57
Сайт был недоступен около 40 часов, официальные причины. Alar О форуме и сайтах клуба 2 09.03.2007 16:46
КАК поделить цыферблат часов на 10 равных частей? VALIK Общие вопросы Delphi 4 28.02.2007 19:51