有2个窗体,form1,form2,点击form2上一个按钮触发一个colordialog,可是被form1挡在后面,该怎么让colordialog到前端来显示?

解决方案 »

  1.   

    你可以在form1加载完form2后,关闭form1
      

  2.   

    把form1最小化可以看到弹出的窗体,可是这样都不满足我要的效果,还有其他办法么?
      

  3.   

    if dlgColor1.Execute then
    怎么会被form1挡住呢?很奇怪,你form1和form2的关系是什么?不可能两个窗体同时showmodal的吧?
      

  4.   

    form2随着mdi一起启动,mdi启动后又启动了form1(子窗体),所以屏幕上同时有form1,form2.
    form2 use form1,给form1中的一些变量赋值。问题是form2触发的对话框被form1挡住了
      

  5.   

    那就先启动FORM1在启动FORM2.
    你这样启动窗体很奇怪,而且一开始就弹一个颜色选择对话框出来做什么?
      

  6.   

    form1是程序的主界面,要在主界面上进行画图操作
    form2是一个‘工具栏’,在form2上为form1配置画笔等信息。
    因为form2引用了form1的公共变量,所以form2引用了form1,而不是相反。
    最好可以控制form2弹出对话框的位置。
      

  7.   

    我估计你是把
    form1.FormStyle := fsStayOnTop ;
      

  8.   

    no,
    form1.formstyle:=fsmdichild;
    整个是一个mdi工程,然而无论我把formstyle改成什么,从form2触发的colordialog都乖乖的跑到
    了form1的身后,很奇怪。
      

  9.   

    只有我把form1先最小化,才可以
      

  10.   

    with colordialog1 do
       begin
         color:=fmdesign.Filledcolor;
         form1.WindowState:=wsminimized;
         if Execute then
           form1.filledcolor:=color;
         form1.WindowState:=wsnormal;
       end;
    以上这样可以,不过效果不好
      

  11.   

    谢谢各位的热心帮忙。
    现在发现form1有个onpaint过程,把这个过程禁用就可以
    具体还不大清楚为什么