8

最近投稿したこの質問に続いて、複数のコンポーネントでコンポーネント エディターを実行できますか?

実行時に構成ファイルを選択する TOpenDialog を表示する新しいコンポーネント用の ComponentEditor を作成しました。ファイルがロードされると、データを読み取り、値を呼び出し元のコンポーネントにコピーします (これはComponentTComponentEditor であるため)。

Object Inspector が新しく変更された値を反映するように更新されていないことを除いて、まったく問題はありません。Designer でコンポーネントを再度クリックしたときにのみ更新されます。

大したことではないように思えるかもしれませんが、プロパティが正常に変更されたことを (フォーカスをコントロールに戻さなくても) 確認できるように、Object Inspector を更新する必要があります。

では、オブジェクト インスペクタを更新/更新する必要があることを Delphi に知らせる方法はありますか? 私

4

1 に答える 1

8

IDesigner.Modified()必要に応じてコンポーネントを変更した後、コンポーネント エディターはメソッドを呼び出す必要があります。

procedure TMyComponentEditor.ExecuteVerb(Index: Integer);
var
  Dlg: TOpenDialog;
begin
  ...
  Dlg := TOpenDialog.Create(nil);
  try
    ...
    if Dlg.Execute then
    begin
      ...
      Designer.Modified;
    end;
  finally
    Dlg.Free;
  end;
  ...
end;
于 2013-02-12T01:17:01.890 に答える