首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >暴露TStringList

暴露TStringList
EN

Stack Overflow用户
提问于 2013-10-07 22:00:02
回答 1查看 170关注 0票数 1

我想在这里的一个类中实现一些日志功能。基本上,我的想法是在包含日志的类中创建一个TStringList。我可以毫不费力地做到这一点,但我的问题是如何在类之外公开它,使控件(TMemo或TListBox)能够在包含表单的情况下动态显示内容。我可以直接关联到类中的控件,但是我希望使类不受表单代码本身的影响,并在类中创建一个过程来实现这种关联。

基本上,如果我的类中有LogFile: TStringList,那么如何使它在那里添加一行使它从与类分离的表单中显示出来呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-07 22:20:47

让表单在类中注册回调事件。

如果在向列表中添加项时分配了此事件,请使用回调发送字符串。

代码语言:javascript
复制
Type
  TMyCallback = procedure(const aLogStr: String) of object;

  TMyClass = Class
    private
      FCallback : TMyCallback;
      FLogFile : TStringList;
      procedure SetCallback(ACallback: TMyCallback);
    public
      property Callback : TMyCallback write SetCallback;
  end;

...
// Update FLogFile
FLogFile.Items.Add(SomeText);
if Assigned(FCallback) then
  FCallBack(SomeText);
...

在你的形式课上:

代码语言:javascript
复制
Type
  TMyForm = Class(TForm)
    private
      procedure IncomingLogString(const AStr: String);
  end;

procedure TMyForm.IncomingLogString(const AStr: String);
begin
  MyMemo.Lines.Add(AStr);
end;

...
// Register callback
FMyClass.Callback := Self.IncomingLogString;

现在,您的TMyClass与表单的任何依赖都是解耦的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19235546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档