请考虑以下简化示例:

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更改为TRect2或类似的内容。

最佳答案

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

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

09-26 18:56