Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  124

•  TDictionary Custom Sort  3 311

•  Fast Watermark Sources  3 060

•  3D Designer  4 816

•  Sik Screen Capture  3 313

•  Patch Maker  3 527

•  Айболит (remote control)  3 628

•  ListBox Drag & Drop  2 990

•  Доска для игры Реверси  81 530

•  Графические эффекты  3 920

•  Рисование по маске  3 226

•  Перетаскивание изображений  2 607

•  Canvas Drawing  2 731

•  Рисование Луны  2 555

•  Поворот изображения  2 162

•  Рисование стержней  2 160

•  Paint on Shape  1 564

•  Генератор кроссвордов  2 223

•  Головоломка Paletto  1 764

•  Теорема Монжа об окружностях  2 209

•  Пазл Numbrix  1 682

•  Заборы и коммивояжеры  2 052

•  Игра HIP  1 278

•  Игра Go (Го)  1 224

•  Симулятор лифта  1 470

•  Программа укладки плитки  1 214

•  Генератор лабиринта  1 542

•  Проверка числового ввода  1 350

•  HEX View  1 488

•  Физический маятник  1 355

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

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



Ведущий раздела KOL и MCK: Анатолий aka XVeL
Автор: Борис Моренко
WEB-сайт: http://kolmck.net/

Часто можно услышать вопрос : как сделать так, чтобы программа была видна и в трее (рядом с часами) ? Конечно и на 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

programm 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.




Похожие по теме исходники

Программа укладки плитки




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте