我正在Delphi中编写一个程序,该程序在气球中显示新信息。
有没有办法确定我点击了哪个气球?
像这样:
sendername := 'Gert';
TrayIcon1.Visible := True;
TrayIcon1.BalloonHint := 'You got a new message from '+sendername+'!';
TrayIcon1.ShowBalloonHint;
sendername := 'Peter';
TrayIcon1.Visible := True;
TrayIcon1.BalloonHint := 'You got a new message from '+sendername+'!';
TrayIcon1.ShowBalloonHint;
现在,我想在BalloonClick事件中显示相关的字母,但我如何确定单击了哪个字母?
您的问题似乎意味着单个TTrayIcon组件可以显示多个气球。事实并非如此。只有一个引出序号,该引出序号的文本将包含您上次指定给BalloonHint的内容。
因此,在您的情况下,sendername变量将包含气球中当前显示的名称。
每个纸盘图标只有一个气球,因此您无法告诉单击了哪个气球。
您可以通过利用所有VCL控件共享的Tag
属性来实现您的要求。
sendername := 'Gert';
TrayIcon1.Tag := 1;
TrayIcon1.Visible := True;
TrayIcon1.BalloonHint := 'You got a new message from '+sendername+'!';
TrayIcon1.ShowBalloonHint;
sendername := 'Peter';
TrayIcon1.Tag := 2;
TrayIcon1.Visible := True;
TrayIcon1.BalloonHint := 'You got a new message from '+sendername+'!';
TrayIcon1.ShowBalloonHint;
现在在TTrayIcon中。OnBalloonClick事件:
case TrayIcon1.Tag of
1: // Gert was the sendername
2: // Peter was the sendername
else
// Catch any where you forgot to set the tag
ShowMessage('Unknown sendername. BallooonHint: ' + TrayIcon1.BalloonHint);
end;
TrayIcon1.Tag := 0; // Reset tag to 0 when finished