📄 sistemaiconetray.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 + -