我在 Delphi7 应用程序中有一个搜索窗口,根据打开搜索时哪个表单处于活动状态,它的行为需要有所不同。具体来说,有两种表单需要在搜索中显示不同的按钮,而当它来自所有其他表单时应该不可见。
有没有办法访问存储表单名称的属性(访问 Name 属性甚至 Caption 属性),我可以将其作为参数发送?或者另一种更好/更清洁的方式来实现这一点,如果你知道的话。
在 MDI 应用程序中,主窗体的ActiveMDIChild
属性为您提供当前活动的子窗体。
一种方法是
以其中一种形式
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 源代码中,您可以获取在 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;
您需要从 Project->Option->Forms 的自动创建表单列表中删除 TFormSearch
我希望它对你有所帮助