⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sistemaiconetray.pas

📁 Source Code TrayIcon and BaloonHint
💻 PAS
字号:
//------------------------------------------------------------------------------
//  Inicia a Unit TrayIcon.pas
//------------------------------------------------------------------------------

unit SistemaIconeTray;

//------------------------------------------------------------------------------
//  Inicia a Interface
//------------------------------------------------------------------------------

interface

//------------------------------------------------------------------------------
//  Declara珲es de uses
//------------------------------------------------------------------------------

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, ShellAPI, Menus, Dialogs;

//------------------------------------------------------------------------------
//  Tipos de procedimentos declarados
//------------------------------------------------------------------------------

type

  TBalloon = (bNenhum, bErro, bInformacao, bAviso, bAplicativo);
  PNewNotifyIconData = ^TNewNotifyIconData;

  TNewNotifyIconData = record
    cbSize: DWORD;
    Wnd: HWND;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: HICON;
    szTip: array [0..127] of Char;
    dwState: DWORD;
    dwStateMask: DWORD;
    szInfoTexto: array [0..255] of Char;
    uTimeOut: DWORD;
    szInfoTitul: array [0..63] of Char;
    dwInfoFlags: DWORD;
  end;


type
  TIconeTray = class(TComponent)

//------------------------------------------------------------------------------
//  Declara珲es Privadas
//------------------------------------------------------------------------------

  private

    procedure WndProc(var msg : TMessage); //Mensagem handler

//------------------------------------------------------------------------------
//  Declara珲es Protegidas
//------------------------------------------------------------------------------

  protected

    NID: TNewNotifyIconData;//TNotifyIconData;                      //Dados representando 韈one da bandeja para o Win32
    FIcone:TIcon;                               //Uma imagem para mostrar na barra de bandeja
    FEstadoIcone:Boolean;                       //Verdadeiro se o 韈one estiver na barra de bandeja
    FPopupMenu:TPopupMenu;                     //Menu Pop-up
    FWindowHandle:THandle;                     //Componente do Win32 handle

    FClickDuplo,FClickSimpl:TNotifyEvent;      //Eventos determinado para o usu醨io

    procedure SetVisibility(ShowIt:boolean);
                                               //Solicita em Adicionar ou Remover
    procedure SetIcon(NewIcon:TIcon);          //Define uma nova imagem
    function GetHint:string;                   //Retorna utilizados texto hint
    procedure SetHint(NewHint:string);         //Define um novo texto hint

//------------------------------------------------------------------------------
//  Declara珲es P鷅licas
//------------------------------------------------------------------------------

  public

    constructor Create(AOwner:TComponent=nil); override;
    destructor Destroy; override;
    procedure Criar;
    procedure Remover;
    procedure Modificar;
    procedure MostrarMenuPopup;                          //Mostra um menu pop-up se poss韛el
    Procedure Balao(Titulo,Texto:String;BalaoIcone:TBalloon=bNenhum;Duracao:Integer=5000);
//------------------------------------------------------------------------------
//  Declara珲es Publicadas
//------------------------------------------------------------------------------

  published

    property Visivel:Boolean read FEstadoIcone write SetVisibility;
    property PopupMenu:TPopupMenu read FPopupMenu write FPopupMenu;
    property Icone:TIcon read FIcone write SetIcon;
    property Texto:String read GetHint write SetHint;
    property ClickDuplo  :TNotifyEvent read FClickDuplo write FClickDuplo;
    property ClickSimples:TNotifyEvent read FClickSimpl write FClickSimpl;

//------------------------------------------------------------------------------
//  Termina a Interface
//------------------------------------------------------------------------------
end;

procedure Register;

//------------------------------------------------------------------------------
//  Inicia a Implementa珲a
//------------------------------------------------------------------------------

implementation

//{$R *.DCR}

//------------------------------------------------------------------------------
//  Variaveis Constantes
//------------------------------------------------------------------------------

const
  WM_ToolTrayIcon = WM_User+1;       //Callback mensagem identifica玢o
  WM_SetToolTip   = WM_User+2;       //Mensagem para criar um texto hint
  FEstadoIcone = False;

  NIF_INFO = $10;
  NIF_MESSAGE = 1;
  NIF_ICON = 2;
  NOTIFYICON_VERSION = 3;
  NIF_TIP = 4;
  NIM_SETVERSION = $00000004;
  NIM_SETFOCUS = $00000003;

  NIIF_NONE    = $00000000;
  NIIF_INFO    = $00000001;
  NIIF_WARNING = $00000002;
  NIIF_ERROR   = $00000003;
  NIIF_APP     = $00000004;
  // 7 Ineroga玢o

  NIN_BALLOONSHOW = WM_USER + 2;
  NIN_BALLOONHIDE = WM_USER + 3;
  NIN_BALLOONTIMEOUT = WM_USER + 4;
  NIN_BALLOONUSERCLICK = WM_USER + 5;
  NIN_SELECT = WM_USER + 0;
  NINF_KEY = $1;
  NIN_KEYSELECT = NIN_SELECT or NINF_KEY;

//------------------------------------------------------------------------------
//  Inicia as fun珲es
//------------------------------------------------------------------------------

function TIconeTray.GetHint:string;
begin
  result:=string(NID.szTip);
end;

//------------------------------------------------------------------------------
//  Procedimentos
//------------------------------------------------------------------------------

procedure TIconeTray.SetHint(NewHint:string);
begin
  //Manter o comprimento do hint no m醲imo de 64 caracteres
  if Length(NewHint) > 64 then NewHint:=Copy(NewHint, 1, 64);
  StrPCopy(NID.szTip, NewHint);

end;

//******************************************************************************

procedure TIconeTray.SetIcon(NewIcon:TIcon);
begin
  FIcone.Assign(NewIcon);
end;

//******************************************************************************

procedure TIconeTray.Criar;
begin

  FEstadoIcone:=True;

  Shell_NotifyIcon(NIM_ADD, @NID);

  PostMessage(FWindowHandle, WM_SetToolTip, 0, 0);
  //se o hint 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -