Понедельник, 13.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Как часто ви на этот сайт заходите?
Всего ответов: 159
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Система » Kol и MCK

Программа в треe с легкостью

Часто можно услышать вопрос : как сделать так, чтобы программа была видна и в трее (рядом с часами) ? Конечно и на VCL это возможно сделать, но в KOL это реализуется очень просто. Для этого у него есть объект TTrayIcon. Воспользовавшись им, вы получите маленькую программу (а не VCL-монстра) с иконкой в трее.

function NewTrayIcon( AParent: PControl; Icon :HIcon): PTrayIcon;

Icon - это иконка, которая будет у нас грузится из ресурса созданного например с помощь Image Editor, или BRCC32.EXE, ну или другой утилиты (я очень рекомендую Resource Builder).
Скомпонованный фай с расширением .res помещаем в каталог с нашей программой. В тексте программы должно быть прописано, что программа компилируется вместе с ресурсами: {$R *.res} .
Сама иконка грузится из ресурса через API ф-цию LoadIcon.

Function LoadIcon(Instance: THandle; IconName: PChar): HIcon;

Загpужает поименнованный ресурс пиктограммы.

Паpаметpы:
Instance:
Экземпляp модуля, исполнимый файл которого содержит пиктограмму или 0 для предопределенной пиктограммы.

IconName:
Стpока или имя целочисленного идентификатора или предопределенная пиктограмма, определенная одной из констант idi_.

Возвpащаемое значение:
В случае успешного завершения - идентификатор пиктограммы; 0 - в противном случае.

Функция находится в файле user32.dll .

Также для значка в трее мы должны создать Applet. Совсем не обязательно чтобы этот Applet был родительским объектом окна.

Лучше тысячи слов может быть наглядней только пример. Напишем утилиту облегчающую программирование на KOL

 program KOLProcedure;

 uses
 windows,
 messages,
 kol;

 {$R *.RES}
 var
 frmMain,
 panel:pControl;
 Tray:pTrayIcon;
 Menu:pMenu;

 //////////////////////////////////////////////////////////
 procedure doTrayMouse(dummy:pointer;sender:Tobject;Message:Word);
 var
 P:Tpoint;
 begin
 if message = WM_LBUTTONUP then
 begin
 getcursorpos(p); //узнаем позицию курсора
 Menu.PopUp(p.x,p.y); // выводим в этой позиции меню
 end;
 end;
 //////////////////////////////////////////////////////////
 procedure doWorkMenu(Dummy:pointer;Sender:pMenu;Item:Integer);
 begin
 case Item of
 0:Text2Clipboard('Procedure NameProc ( Dummy : Pointer; Sender: PControl );') ;
 1:Text2Clipboard('Procedure NameProc ( Sender: PObj; var Accept: Boolean );') ;
 2:Text2Clipboard('Procedure NameProc ( Sender: PControl; var Mouse: TMouseEventData );') ;
 3:Text2Clipboard('Procedure NameProc ( Sender: PControl; var Key: Longint; Shift: DWORD );') ;
 4:Text2Clipboard('Procedure NameProc ( Sender: PControl; var Key: Char; Shift: DWORD );') ;
 5:Text2Clipboard('Procedure NameProc ( Sender : PMenu; Item :Integer );') ;
 6:Text2Clipboard('Function NameFunc ( var Msg: TMsg; var Rslt:Integer ): Boolean;') ;
 7:Applet.close;
 8:MsgOK('8');
 end;{case}
 end;
 //////////////////////////////////////////////////////////
 begin
 Applet := NewApplet('KOL Procedure');

 frmMain := NewForm(nil,'KOL Procedure');
 frmMain.Icon:=LoadIcon(hinstance,'MainIco');
 frmMain.Hide; // прячем главное окно 

 panel := NewPanel(frmMain,esNone);
 Menu := NewMenu(panel,0,
 [ 'TOnEvent',
 'TOnEventAccept',
 'TOnEventAccept',
 'TOnKey',
 'TOnChar',
 'TOnMenuItem',
 'TOnMessage',
 '-',
 'Exit'],
 TOnMenuItem( MakeMethod( nil, @doWorkMenu ))
 );
 Tray := NewTrayIcon(panel,frmMain.Icon) ; // иконка в трее - аналог иконки на форме
 Tray.OnMouse:=TOnTrayIconMouse(Makemethod(nil,@doTrayMouse));
 run(frmMain)
 end.

Получить ссылку на материал

Категория: Kol и MCK | Добавил: Барон (13.12.2011)
Просмотров: 1105 | Теги: трей | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
ActiveX [10]
CORBA и COM [16]
Kol и MCK [23]
WinAPI [28]
Компоненты [27]
Работа с Bluetooth [4]
Железо [8]
Текст [18]
Разное [98]
Королевство Delphi © 2010-2024
Яндекс цитирования