德尔福(Delphi)-“自定义”在其中定义了使用条款?

时间:2018-11-23 14:05:08

标签: delphi

Delphi Tokyo-我有一个独立的UNIT,我正在用作实用程序/库...也就是说,没有与此相关的表格。例程之一创建并显示一个“ OpenDialog”组件。当我尝试编译代码时,出现错误:  未声明的标识符“ Self”。我的代码很简单...

    var
      ExcelOpenDialog1: TOpenDialog;
    begin

     ExcelOpenDialog1 := TOpenDialog.Create(Self);
     ...

这使我得出结论,我在USES子句中没有需要的条目,但是我不知道我缺少哪一个。我当前使用的条款是...

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, System.UITypes, ComObj,  Office_TLB, Excel_TLB,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.ExtCtrls, Vcl.StdCtrls,
  System.IOUtils, System.StrUtils, Generics.Collections, Generics.Defaults;

我需要添加什么才能进行编译?当我将TOpenDialog组件添加到窗体中(并进行编译)时,我发现USES子句中的所有条目已经包含在我的库单元中...

1 个答案:

答案 0 :(得分:3)

@whosrdaddy已经提到,您在此处没有对象,因此应使用NIL作为owner参数的值。
在这种情况下,您需要在完成对话框后负责清理,例如

var
  ExcelOpenDialog1: TOpenDialog;
begin
  ExcelOpenDialog1 := TOpenDialog.Create(NIL);
  try
    // do your stuff here with ExcelOpenDialog1
  finally
    ExcelOpenDialog1.Free;
  end;