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;

メソッドでは、2 つの異なるユニットで定義されたあいまいさを解決するためdrwgrd1DrawCellに明示的に使用しました。すべて正常に動作し、コードはコンパイル中です。しかし、上記のユニットを保存するたびに、Delphi IDE から次の質問が表示されますWindows.TRectTRect

これは非常に面倒です。このメッセージ ダイアログをオフにする方法や、表示されないようにコードを記述する方法はありますか? 残念ながら、TRectforTRect2などを変更することはできません。

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 に答える