请考虑以下简化示例:
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
。