我写了一个托盘图标的控件。其中有个控制图标的属性,问题属性声明如下:
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;运行结果是能正常显示程序的图标。但是用编辑器选择另一个图标后,程序运行时还是原来的图标。搞了半天没有搞通,现在请教一下大家是怎么回事
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;运行结果是能正常显示程序的图标。但是用编辑器选择另一个图标后,程序运行时还是原来的图标。搞了半天没有搞通,现在请教一下大家是怎么回事
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货