关于托盘图标显示的问题
我写了一个托盘图标的控件。其中有个控制图标的属性,问题属性声明如下:
private
FIcon: TIcon;
protected
procedure SetIcon(Value: TIcon);
published
property Icon: TIcon read FIcon write SetIcon;
public
constructor Create(AOwner: TComponent); override;
procedure UpDateTray(dwMessage: TOpType);
constructor TTray.Create(AOwner: TComponent);
begin
inherited;
FIcon := TIcon.Create;
FIcon.Assign(Application.Icon);
。。。。
end;
procedure TTray.SetIcon(Value: TIcon);
begin
if not Value.Empty then //若赋值了就使用新图标
begin
FIcon.Assign(Value);
end
else
begin
FIcon.Assign(Application.Icon); //否则使用程序的图标
end;
if Enabled then
begin
UpDateTray(NIM_MODIFY);
end;
end;
procedure TTray.UpDateTray(dwMessage: TOpType);
begin
if not (csDesigning in ComponentState) then
begin
if FEnabled then
begin
FTrayIconData.cbSize := SizeOf(TNotifyIconData);
FTrayIconData.Wnd := FWnd;
FTrayIconData.uID := 1;
FTrayIconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
FTrayIconData.uCallbackMessage := WM_TRAYMSG;
FTrayIconData.hIcon := FIcon.Handle;
StrLCopy(FTrayIconData.szTip, PChar(FHint), 63);
Shell_NotifyIcon(dwMessage, @FTrayIconData);
end;
end;
end;
运行结果是能正常显示程序的图标。但是用编辑器选择另一个图标后,程序运行时还是原来的图标。搞了半天没有搞通,现在请教一下大家是怎么回事
[解决办法]
关了编辑器在重新打开,重新加载一次图标,可能是你编辑器的问题!