采用MDI模式设计窗体,每次显示新的窗体时候,前一个窗体就会被覆盖,当再次需要显示前一个窗体的时候,首先判断窗体是否已经存在,如果存在那么显示即可,不存在则创建
function Tmain.FindForm(caption: string): bool;
var
i:integer;
begin
for i:=0 to main.MDIChildCount do
begin
// 通过对窗体标题判断窗体是否存在
if main.MDIChildren[i].Caption=caption then
begin
//如果窗体已存在,则恢复窗体,并返回true
SendMessage(mdichildren[i].Handle, WM_SYSCOMMAND, SC_restore, 0);
mdichildren[i].Enabled:=true;
mdichildren[i].Show;
mdichildren[i].SetFocus;
result:=true;
break;
end
else
//如窗体不存在,则返回false,程序将创建窗体
result:=false;
end
end;
-------------
procedure Tmain.N2Click(Sender: TObject);
var
newform:TSecSetting;
begin
if findForm( '会计科目设置 ')=false then
begin
//若窗体不存在,则创建窗体
newform:=Tsecsetting.Create(application);
newform.Caption:= '会计科目设置 ';
end;
end;//判断是否存在窗体并创建