回 帖 发 新 帖 刷新版面

主题:请教一个MDI问题,回贴就加分

我新建了一个工程,将窗体Form1的FormStyle属性设置为fsMDIForm。然后在窗体Form1上加入一MainMenu组件,打开菜单编辑器,加入如下几个菜单项。
文件(File)
.....新建(New)
.....关闭(CLOSE)
.....关闭所有子窗口(CloseAll)
.....-(N1)
.....退出(Exit )
窗口(window)
.....层叠(CASCADE)
.....平铺(TILE)
.....排列(ARRANGEICONS)
实现过程:将窗体Form1的WindowMenu属性设置成Window菜单项,这样所有打开的子窗体都会在这个菜单中列出。
选择File菜单中的New Form,加入一新窗体,将它的FormStyle属性设置为fsMDIChild,Name属性设置为MDIClientForm.
创建窗体Form1中各菜单项的OnClick事件响应函数,并加入如下所示的代码:
void _fastcall TForm1::NewClick(TObject *sender)
{
  TMDIClientForm* clientForm;
  clientForm=new TMDIClientForm(Application);
  clientForm->caption="未命名"+IntToStr(MDIChildCount);
}
//---------------------------------------------------------------------
void _fastcall TForm1::CLOSEClick(TObject *sender)
{
  if(ActiveMDIChild!=NULL)
   ActiveMDIChild->Close();
}
//-------------------------------------------------------------------
void _fastcall TForm1::CloseAllClick(TObject *Sender)
{
  int i;
  for(i=0;i<MDIChildCount;i++)
  MDIChildren[i]->Close();
}
//---------------------------------------------------------------------
void _fastcall TForm1::CASCADEClick(TObject *sender)
{
  Cascade();
}
//--------------------------------------------------------------------
void _fastcall TForm1::TILEClick(TObject *sender)
{
  Tile();
}
//---------------------------------------------------------------------
void _fastcall TForm1::ARRANGEICONSClick(TObject *sender)
{
   ArrangeIcons();
}
//-------------------------------------------------------------------
void _fastcall TForm::ExitClick(TObject *sender)
{
  Close();
}
//---------------------------------------------------------------------
创建窗体MDIClientForm的onClose事件响应函数,在其中加入如下所示的代码,这样才能关闭子窗体。
//--------------------------------------------------------------------
void _fastcall TMDIClientForm::FormClose(TObject *sender,
TCloseAction &Action)
{
  Action=caFree;
}
//--------------------------------------------------------------------
编译程序
出现错误
E2451 Undefined symbol 'TMDIClientForm'
E2451 Undefined symbol 'ClientForm'
E2303 Type name expected
E2379 Statement missing

请问各路高手应该怎么办?

回复列表 (共6个回复)

沙发

clientForm=new TMDIClientForm(Application);
TMDIClientForm这东西哪里来的?

板凳

有包含TMDIClientForm的头文件吗

3 楼

请二位指教,应该怎么办

4 楼

#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"



加个头文件#include "Unit2.h"

5 楼

编译程序
出现错误
E2451 Undefined symbol 'TMDIClientForm'
E2451 Undefined symbol 'ClientForm'
E2303 Type name expected
E2379 Statement missing
————————————————————————————————
错误E2451是说你没有定义'TMDIClientForm'类,我想你的程序是书上拷下来的吧。这个类是你创建子窗口的类,可能程序已经定义了,但你用错了。如果主窗口的类定义成TForm1,那么你可能把子窗口的类名定义成TForm2,因为窗口类自动定义了TForm2。所以解决E2451的方法是,将程序中全部的TMDIClientForm代码替换成TForm2。或者你将TForm2全部改成TMDIClientForm也一样。
-------------------------------------------------
还有你程序中 clientForm->caption="未命名"+IntToStr(MDIChildCount的“caption"应该变成“Caption"

6 楼

学习

我来回复

您尚未登录,请登录后再回复。点此登录或注册