You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Delphi中判断点击的是哪个托盘提示气泡?

Delphi托盘气泡点击时区分对应消息的解决方案

在使用Delphi的TTrayIcon控件展示不同发送者的气泡提示时,要在BalloonClick事件中判断点击的是哪个气泡并展示对应消息,可以通过以下两种方式实现:

方法一:用类级变量记录当前气泡的关联数据

在窗体类中声明私有变量存储当前弹出气泡对应的发送者信息,点击事件中直接读取该变量即可。

  1. 声明变量:
type
  TForm1 = class(TForm)
    TrayIcon1: TTrayIcon;
    procedure TrayIcon1BalloonClick(Sender: TObject);
  private
    FCurrentSender: string; // 存储当前气泡对应的发送者
  public
    { Public declarations }
  end;
  1. 弹出气泡时赋值:
// 弹出Gert的消息气泡
FCurrentSender := 'Gert';
TrayIcon1.Visible := True;
TrayIcon1.BalloonHint := 'You got a new message from '+FCurrentSender+'!';
TrayIcon1.ShowBalloonHint;

// 弹出Peter的消息气泡
FCurrentSender := 'Peter';
TrayIcon1.Visible := True;
TrayIcon1.BalloonHint := 'You got a new message from '+FCurrentSender+'!';
TrayIcon1.ShowBalloonHint;
  1. 在BalloonClick事件中使用:
procedure TForm1.TrayIcon1BalloonClick(Sender: TObject);
begin
  // 根据存储的发送者信息展示对应消息
  ShowMessage('查看来自「' + FCurrentSender + '」的消息');
end;

方法二:扩展TTrayIcon控件,添加自定义属性存储气泡数据

如果需要更严谨的关联(避免变量被意外覆盖),可以自定义继承自TTrayIcon的控件,添加专属属性存储气泡关联数据。

  1. 自定义控件:
type
  TMyTrayIcon = class(TTrayIcon)
  private
    FBalloonSender: string; // 存储气泡对应的发送者
  public
    property BalloonSender: string read FBalloonSender write FBalloonSender;
  end;
  1. 使用自定义控件弹出气泡:
// 弹出Gert的消息气泡
MyTrayIcon1.BalloonSender := 'Gert';
MyTrayIcon1.Visible := True;
MyTrayIcon1.BalloonHint := 'You got a new message from '+MyTrayIcon1.BalloonSender+'!';
MyTrayIcon1.ShowBalloonHint;

// 弹出Peter的消息气泡
MyTrayIcon1.BalloonSender := 'Peter';
MyTrayIcon1.Visible := True;
MyTrayIcon1.BalloonHint := 'You got a new message from '+MyTrayIcon1.BalloonSender+'!';
MyTrayIcon1.ShowBalloonHint;
  1. 在BalloonClick事件中获取数据:
procedure TForm1.MyTrayIcon1BalloonClick(Sender: TObject);
var
  CustomTrayIcon: TMyTrayIcon;
begin
  if Sender is TMyTrayIcon then
  begin
    CustomTrayIcon := TMyTrayIcon(Sender);
    ShowMessage('查看来自「' + CustomTrayIcon.BalloonSender + '」的消息');
  end;
end;

注意事项

Windows系统同一时间只会显示一个托盘气泡,后续弹出的气泡会覆盖之前的(或排队等待显示),因此上述两种方法中,最后一次设置的关联数据会对应当前显示的气泡,足以应对常规业务场景。

内容的提问来源于stack exchange,提问作者Felix Murzsa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:45:38