Delphi XE 10.1 Berlin FireMonkey下 消息的自我传递

实现: 在窗体uFrmMain下, 包含线程ThreadA, 线程向该窗体发送消息,  窗体处理消息.

由于FMX和VCL差异很大, 以前用的SendMessage不能用了, 得另想办法, 在网上找到了一个好的方法.

如下操作:

1. uses 添加引用 FMX.Presentation.Messages.

2. 声明全局变量FMessageSender,  注意位置 如图所示:

var
  FrmMain: TFrmMain;
  FMessageSender: TMessageSender;

3. 在FormCreate事件编写

  FMessageSender := TMessageSender.Create();
  FMessageSender.Receiver:= Self;

4. 在FormDestroy事件编写

  FMessageSender.DisposeOf();

5. 在窗体public部分声明

    procedure DefaultHandler(var Message); override;

     实现代码如下:

procedure TFrmMain.DefaultHandler(var Message);
var
  msg_id, msg_value: AnsiString;
begin
  inherited;
  msg_id:= TDispatchMessage(Message).MsgID.ToString;;
  msg_value:= TDispatchMessageWithValue<AnsiString>(Message).Value;
  if msg_id= '0' then
  begin
    //操作1
  end
  else if msg_id= '1' then
  begin
    //操作2
  end
  else if msg_id= '2' then
  begin
    //操作3
  end
  else if msg_id= '3' then
  begin
    //操作4
  end
  else if msg_id= '4' then
  begin
    //操作5
  end
  else if msg_id= '5' then
  begin
    //操作6
  end
  else if msg_id= '6' then
  begin
    //操作7
  end
  else if msg_id= '7' then
  begin
    //操作8
  end
  else if msg_id= '8' then
  begin
    //操作9
  end;
end;

6. 测试代码如下:

procedure TFrmMain.Act_ConfigExecute(Sender: TObject);
begin
  FMessageSender.SendMessage(10, 'ChenWeiXin');
end;

第一个参数MsgID, 第二个参数就是传递的值. 利用好参数, 即可处理相应的信息. 比如:

FMessageSender.SendMessage(0, AnsiString('值1'));  //操作1
FMessageSender.SendMessage(1, AnsiString('值2'));  //操作2
FMessageSender.SendMessage(7, AnsiString('值3'));  //操作3
FMessageSender.SendMessage(4, AnsiString('值4'));  //操作4
FMessageSender.SendMessage(8, AnsiString('值5'));  //操作5

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi 10.1 Berlin是一种强大的开发工具,可用于创建各种桌面和移动应用程序。DataSnap是其集成的一项功能,可以用于开发分布式应用程序和客户端/服务器架构。 在DataSnap开发手册中,您将找到详细的说明和教程,帮助您了解如何使用Delphi 10.1 Berlin的DataSnap功能。手册将提供有关如何创建DataSnap服务器和客户端应用程序的全面指导,以及如何进行数据传输和通信。 首先,手册会引导您创建一个DataSnap服务器应用程序。您将了解到如何使用DataSnap架构来实现服务器和客户端之间的通信,以及如何使用不同的数据传输协议(如TCP/IP或HTTP)来传输数据。手册将详细介绍如何定义DataSnap服务器的接口和方法,并向您展示如何使用它们来处理客户端请求和返回数据。 接下来,手册将介绍如何创建DataSnap客户端应用程序。您将学习如何使用Delphi 10.1 Berlin的工具来连接到DataSnap服务器,并调用服务器端方法。手册将提供一些示例代码和说明,帮助您理解如何使用DataSnap客户端组件进行数据传输和通信。 此外,手册还会介绍一些高级技术,如数据筛选、缓存和安全性。您将了解如何使用DataSnap提供的特性来优化数据传输和提高应用程序的性能。手册还将提供有关如何在DataSnap应用程序中实现安全性措施的指导,以保护您的数据和应用程序免受恶意攻击。 总之,Delphi 10.1 Berlin的DataSnap开发手册提供了全面而详细的指导,帮助您利用DataSnap功能开发分布式应用程序和客户端/服务器架构。手册将介绍DataSnap的基本概念和使用方法,并向您展示如何利用其强大的功能来创建高效的应用程序。无论您是初学者还是有经验的开发人员,都能从手册中获得有价值的知识和技巧。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值