我是一个初学者,尝试做了两个小数据库的东东,感觉delphi上手较快,易用。   现请教一个问题,一直没搞清楚。 我不喜欢在主窗体中用菜单,而是用顶部maner图片,左侧导航。以前都是在右侧用同的paenl组件上放置各模块需要的东西,最后做成一个exe文件,运行时点击不同的左侧按钮时让右侧的paenl显示或不显示。头痛是panel较多,设计时很烦;还有就是生成的exe文件也大,启动慢。没有按功能划分模块,很笨哟!  我知道,如果系统是一个主窗体,在主窗体中通过菜单方式访问许多子窗体的设计模式的话。通过看书学习后,我知道了一般是将主窗体和数据模块datamodule做一个main,其它的子窗体做成不同bpl包,包1,包2...运行在主窗体中根据需要直接调用包就可以了。这样修改个别模块较方便,符合软件设计的基本规范。  问题是,如前所述,我“我不喜欢在主窗体中用菜单,而是用顶部maner图片,左侧导航。”,点击左侧的按钮后子模块也不是以新窗体的方式来显示,而是感觉像panel一样主窗体右侧中显示。我发现很多商业软件也是这样。
    
    要达到这种效果,不知道如何封闭子模块为bpl包。我试过了,还是将子模块以窗体的方式封闭为bpl的话,设置窗体外观为无边框,将子窗体位置设计在主窗体的右侧。这就存在一个焦点问题,调有弹出一个子窗体时,若不关闭子窗体,主窗体就无法获得焦点。可是我发现商业软件也是把子模块做成bpl,在左侧导航和右侧内容间可以方便切换焦点呀。  没搞懂,请教高手!甚为感谢!

解决方案 »

  1.   

    不需要使用子窗体模式,创建动态form,动态指定他的parent就可以了。
      

  2.   

    除了动态创建或控制panel的显示外,你还可以在主页面做一个webborowser,然后加载你做好的网页,网页内容就是切换导航并显示子模块内容,然后可以通过捕获webbrowser的URL来调用深层次的同能
      

  3.   

    不一定什么软件都要调用BPL,一般的软件没必要把窗口模块写在BPL中啊,我觉得逻辑流程写在BPL中,在系统初始化时调用这些BPL是比较好的一个思路。
      

  4.   

    不一定要使用BPL的,可以按自己的想法來做。現在軟件大不是問題,硬件已經足夠了。只要你軟件好看,功能夠強大就行了