我在Delphi7应用程序中有一个搜索窗口,根据打开搜索时哪个窗体处于活动状态,需要表现不同。具体来说,有两种形式需要在搜索中显示不同的按钮,当它来自所有其他形式时应该是不可见的。
有没有办法访问存储表单名称的属性(访问Name属性,甚至是Caption属性),我可以将其作为参数发送?或者另一种更好/更清洁的方法,如果你知道一个。
答案 0 :(得分:7)
在MDI应用程序中,主窗体的ActiveMDIChild
属性为您提供当前活动的子窗体。
答案 1 :(得分:2)
一种方法是
以表格之一
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我希望它能帮助你