Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];

Вниз

POPUP меню в SYSTRAY   Найти похожие ветки 

 
Zergling   (2002-09-12 13:00) [0]

Подскажите plz, как в systray"е правильно обработать вызов popup меню, а то у меня после вызова меню форма становится неактивной (не могу кликать по элементам управления, например кнопкам).

вот вам код:

unit TVTrayIcon;

interface

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

type
TTVTrayIcon = class(TComponent)
private
{ Private declarations }
FNotificationHandle: HWnd;
FTrayIcon: TIcon;
FShowHint: Boolean;
FHint: string;
FActive: Boolean;
FCurrentlyActive: Boolean;
FPopupMenu: TPopupMenu;
FOnDblClick: TNotifyEvent;
procedure NotificationWndProc(var Message : TMessage);
procedure SetShowHint(const Value: Boolean);
procedure SetHint(const Value: string);
procedure SetTrayIcon(const Value: TIcon);
procedure SetActive(const Value: Boolean);
procedure SetPopupMenu(const Value: TPopupMenu);
protected
{ Protected declarations }
procedure DoDblClick;
procedure Loaded; override;
procedure OnAppMinimize(Sender: TObject);
function SendTrayMessage(AMessage: DWORD): Boolean;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure RemoveTrayIcon;
procedure RestoreApp;
procedure ShowTrayIcon;
procedure RemoveFromTaskbar;
procedure ShowInTaskbar;
published
{ Published declarations }
property Active: Boolean read FActive write SetActive;
property Hint: string read FHint write SetHint;
property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;
property PopupMenu: TPopupMenu read FPopupMenu write SetPopupMenu;
property ShowHint: Boolean read FShowHint write SetShowHint;
property TrayIcon: TIcon read FTrayIcon write SetTrayIcon;
end;

procedure Register;

implementation

const
ID_TRAYICON =1;
UWM_TRAYICON = WM_USER + 1;


procedure Register;
begin
RegisterComponents("TVSystem", [TTVTrayIcon]);
end;

{ TTVTrayIcon }

constructor TTVTrayIcon.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FNotificationHandle := AllocateHwnd(NotificationWndProc);
FTrayIcon := TIcon.Create;
Application.OnMinimize := OnAppMinimize;
end;

destructor TTVTrayIcon.Destroy;
begin
if FCurrentlyActive then RemoveTrayIcon;
FTrayIcon.Free;
if FNotificationHandle <> 0 then DeallocateHWnd(FNotificationHandle);
inherited Destroy;
end;

procedure TTVTrayIcon.NotificationWndProc(var Message: TMessage);
var Pt: TPoint;
begin
if Message.Msg = UWM_TRAYICON then
begin
case Message.lParam of
WM_LBUTTONDBLCLK: DoDblClick;
WM_RBUTTONDOWN: if Assigned(FPopupMenu) then
begin
SetForegroundWindow(FNotificationHandle);
GetCursorPos(Pt);
FPopupMenu.Popup(Pt.X, Pt.Y);
end;
end;
end;
end;

procedure TTVTrayIcon.SetPopupMenu(const Value: TPopupMenu);
begin
FPopupMenu := Value;
end;


end.


 
Song   (2002-09-12 13:32) [1]

Вы забываете передавать WM_NULL



Страницы: 1 вся ветка

Форум: "Система";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
6-46027
AndreyS
2002-09-17 14:24
2002.11.14
Определение активности удаленной машины по локалке?


1-45972
Valt
2002-11-04 15:37
2002.11.14
Вид окна при разных разрешениях


3-45777
Zloy
2002-10-22 04:14
2002.11.14
Приветствую!!! Не посоветуете, плиз, как базу парадокс сохранить


6-46023
snowman
2002-09-13 16:02
2002.11.14
Как узнать имя под которым расшарена директория?


1-45947
Youri
2002-11-04 12:29
2002.11.14
Прерывание процедуры!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский