2

検索を開いたときにアクティブだったフォームに応じて、異なる動作をする必要がある Delphi7 アプリケーションの検索ウィンドウがあります。具体的には、検索時に別のボタンを表示する必要がある 2 つのフォームがありますが、他のすべてのフォームからの場合は非表示にする必要があります。

パラメータとして送信できるフォームの名前を格納するプロパティにアクセスする方法はありますか (Name プロパティまたは Caption プロパティにアクセスすることもできます)。または、これを達成するための別のより良い/よりクリーンな方法を知っている場合。

4

2 に答える 2

6

MDIアプリケーションでは、メインフォームのActiveMDIChildプロパティにより、現在アクティブな子フォームが提供されます。

于 2013-01-30T18:20:38.023 に答える
2

それを行う1つの方法は

フォームの1つで

procedure TFormMain.btnSearchClick(Sender: TObject);
begin
   TFormSearch.CallForm(self); 
end;

別の形式で:

procedure TFormMain2.btnSearchClick(Sender: TObject);
begin
   TFormSearch.CallForm(self); 
end;

およびその他:

procedure TFormMain3.btnSearchClick(Sender: TObject);
begin
   TFormSearch.CallForm(self); 
end;

TFormSearchのソースコードでは、uはonshowイベントで開かれたフォームの名前を取得する場合があります

class procedure TFormSearch.CallForm(AOwner: TComponent);
begin
   with TFormSearch.Create(AOwner) do
   begin
      showmodal;
      free;
   end;
end;

procedure TFormSearch.FormShow(Sender: TObject);
begin
  Showmessage(Owner.ClassName);
end;

[プロジェクト]->[オプション]->[フォーム]の自動作成フォームのリストからTFormSearchを削除する必要があります

お役に立てば幸いです

于 2013-01-30T18:33:38.093 に答える