gpt4 book ai didi

delphi - 在非 GUI 环境 (DLL) 中使用事件监听器 (Delphi)

转载 作者:行者123 更新时间:2023-12-01 19:42:42 26 4
gpt4 key购买 nike

我正在尝试将我在 Delphi(实际上是 Lazarus)中制作的 GUI 应用程序转换为库(DLL)。

在 GUI 应用程序中,我使用了 OnDataChange 事件监听器,但我似乎无法弄清楚如何为库执行相同的操作。

GUI 应用程序中的外观如下:

procedure TForm1.Datasource2DataChange(Sender: TObject; Field: TField);
begin
ZMakeRankedTable.Close;
GetNN;
end;

在单位的 LFM 文件中:

object Datasource2: TDatasource
DataSet = ZMakeRankedTable
OnDataChange = Datasource2DataChange
left = 184
top = 95
end

我如何为图书馆做同样的事情?在哪里初始化事件监听器?

最佳答案

创建自己的新类作为委托(delegate)而不是表单有什么问题:

type
TDataDelegate = class
public
procedure DataChange(Sender: TObject; Field: TField);
etc...
end;

procedure TDataDelegate.DataChange(Sender: TObject; Field: TField);
begin
// Do what you normally would do in your form's event handler
end;

并且一定要创建该类的实例

DataDelegate := TDataDelegate.Create;
DataSource2.OnDataChange := DataDelegate.DataChange;

等等...

换句话说,不使用表单,而是使用您编写的类来处理各个类的事件。就像在表单中一样,每个过程都应该具有事件处理程序的签名。唯一的区别是 IDE 不会为您创建这些方法。

我猜你也可以使用 TDataModule,但我不确定其含义。优点是 IDE 支持。

关于delphi - 在非 GUI 环境 (DLL) 中使用事件监听器 (Delphi),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7309061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com