同一mdi子窗体没封闭,多次打开,每次窗体的名称不同

同一mdi子窗体没关闭,多次打开,每次窗体的名称不同
同一mdi子窗体没关闭,多次打开,每次窗体的名称不同
如第一次打开为Form1,没有关闭再打开,名称就变成Form1_1了,各位编程时怎样动态获取form的名称?
不能限制每个窗体只能打开一次。也不能在打开前关闭打开过的窗体
------解决方案--------------------
我已前也碰到,这样太可以解决
procedure TFrm_OtherInList.FormDestroy(Sender: TObject);
begin
Frm_OtherInList:=nil;
end;

退出时释放窗体就可以
------解决方案--------------------
正常打开 得激活上次已经打开的 不能再重复打开吧
激活上次打开代码如下:
function TfrmMain.MDIExist(frmName: string): Boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to MDIChildCount - 1 do
  begin
    if MDIChildren[i].Name = frmName then
    begin
      Result := True;
      MDIChildren[i].BringToFront;
      Break;
    end
  end;
end;
如果lz意思是要打开复制一个的话 那就按照ls意思 差不多了。
------解决方案--------------------
打开前,先判断此窗体是否已经打开了

像楼上的就行了

------解决方案--------------------
我也问个问题mdi最小化了就隐藏了怎么办呀
------解决方案--------------------
引用:
正常打开 得激活上次已经打开的 不能再重复打开吧
激活上次打开代码如下:
function TfrmMain.MDIExist(frmName: string): Boolean;
var
  i: Integer;
begin
  Result := False;
  for i := 0 to MDIChildCount - 1 do
  begin
  if MDIChil……






 if  not MDIExist('frm_SellPreList') then
begin
application.CreateForm(Tfrm_SellPreList,frm_SellPreList);
frm_SellPreList.Show;
end

这个对吗,好像不对
------解决方案--------------------
procedure RunDc(App: TApplication);
begin
  if not Assigned(frmPatDc) then
  begin
    Application := App;
    frmPatDc := TfrmPatDc.Create(app.MainForm);
    frmPatDc.frmHandle :=frmPatDc.Handle;
    frmPatDc.Show;
  end
  else
  begin
    ShowWindow(frmPatDc.frmHandle, SW_SHOWDEFAULT);
    frmPatDc.BringToFront;
  end;
end;
------解决方案--------------------
主窗:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  Tmain = class(TForm)
    Button1: TButton;
    Timer1: TTimer;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);