bsTrayIcon的IconList属性连接了ImageList1控件,在ImageList1里有三个图片0、1、2。我要做的是,当没有消息时让bsTrayIcon只显示图片2,当有新消息时让bsTrayIcon在图片0和1之间变换显示(就会有一闪一闪的效果,象QQ一样),我自己的代码如下,自己写的过程:
procedure TFormMain.SetTrayIcon();
begin
if iNeedDo > 0 then //iNeedDo为待办的事情个数
begin
bsTrayIcon1.Hint := '您有' + IntToStr(iNeedDo) + 待办事务';
bsTrayIcon1.CycleIcons := True;
end
else
begin
bsTrayIcon1.Hint := 您没有待办事务';
bsTrayIcon1.CycleIcons := False;
end;
end;程序里没写图片转换的代码,因为实验了好多都没有达到目的,总是三个图片互相转换。是不是我写的地方不对,还是应该在ImageList1控件的事件里写?现在思路有点混乱,请高手指教,谢谢!
procedure TFormMain.SetTrayIcon();
begin
if iNeedDo > 0 then //iNeedDo为待办的事情个数
begin
bsTrayIcon1.Hint := '您有' + IntToStr(iNeedDo) + 待办事务';
bsTrayIcon1.CycleIcons := True;
end
else
begin
bsTrayIcon1.Hint := 您没有待办事务';
bsTrayIcon1.CycleIcons := False;
end;
end;程序里没写图片转换的代码,因为实验了好多都没有达到目的,总是三个图片互相转换。是不是我写的地方不对,还是应该在ImageList1控件的事件里写?现在思路有点混乱,请高手指教,谢谢!
在OnCycle事件写bsTrayIcon1.IconIndex:=NextIndex;就可以实现图片闪动
if iNeedDo > 0 then //iNeedDo为待办的事情个数
begin
bsTrayIcon1.Hint := '您有' + IntToStr(iNeedDo) + '待办事务';
bsTrayIcon1.CycleIcons := True;
bsTrayIcon1.IconIndex:=0;
end
else
begin
bsTrayIcon1.Hint :=' 您没有待办事务';
bsTrayIcon1.CycleIcons := False;
bsTrayIcon1.IconIndex:=2;
end;
end;
end;procedure TFormMain.bsTrayIcon1Cycle(Sender: TObject; NextIndex: Integer);
begin
if NextIndex<>1 then bsTrayIcon1.IconIndex:=NextIndex;
end;procedure TFormMain.FormCreate(Sender: TObject);
begin
bsTrayIcon1.IconIndex:=2;
end;
begin
if iNeedDo > 0 then //iNeedDo为待办的事情个数
begin
bsTrayIcon1.Hint := '您有' + IntToStr(iNeedDo) + 待办事务';
TrayIcon1.IconList := ImageList1;//这个ImageList1里只有你所说的0、1两张图片
TrayIcon1.CycleInterval := 400;
TrayIcon1.CycleIcons := True;
end
else
begin
bsTrayIcon1.Hint := 您没有待办事务';
TrayIcon1.IconList := ImageList2;//这个ImageList1里只有你所说的2一张图片
TrayIcon1.CycleIcons := False;
end;
end;