4

请考虑这个简化的例子:

type
  TForm43 = class(TForm)
    drwgrd1: TDrawGrid;
    procedure drwgrd1DrawCell(Sender: TObject; ACol, ARow: Integer; 
      Rect: Windows.TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure TForm43.drwgrd1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: Windows.TRect; State: TGridDrawState);
begin
  Rect.Left := 5;
end;

在方法drwgrd1DrawCell中,我已明确用于解决在两个不同单元中定义的Windows.TRect歧义。TRect一切正常,代码正在编译。但是每次保存上述单元时,我都会从 Delphi IDE 中收到一个问题,询问:“ drwgrd1.OnDrawCell 引用的 drwgrd1DrawCell 方法具有不兼容的参数列表。删除引用?

这很烦人。有什么方法可以关闭此消息对话框或以不显示的方式编写我的代码?不幸的是,我无法更改我TRect的 forTRect2或类似的东西。

4

2 回答 2

4

您可以在表单声明上方添加以下类型声明:

    type
      TRect = Windows.TRect;
于 2012-09-27T20:19:22.513 回答
3

保存表单时出现错误的原因是因为 Delphi 比较了所有事件处理程序的声明,以确保它们的声明与其继承的实现完全相同。添加Windows.到声明中会使比较失败。

如果在声明的子句中将单位移到另一个单位之后,则可以删除Windows.from 。这是因为 Delphi从最后一个到第一个处理子句中的单元。它将使用它找到的第一个实例...drwgd1DrawCell()WindowsusesTRectusesTRect

于 2012-09-27T16:24:47.553 回答