还不如用API找到这个form然后再让他显示在最顶上

解决方案 »

  1.   

    FromStyle:=fsStayOnTop试试
    不行回复或QQ19680471
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      frm:TForm;
    begin
      frm:=TForm.Create(nil);
      frm.Show;
    end;
    就可以了!
      

  3.   

    我想,如果你不用Parent属性,则可以,或者加
    myform.Parent :=nil;也可,即如下:
    myform:=Tform.create(mainform);
    myform.parent:=nil;
    myform.show;
      

  4.   

    楼上四位老兄,请你们看清楚要求好吧,要是这么简单还会开三个贴?
    我的要求是要以一个panel为父。要是没有父,我也不会来这里问了,
      

  5.   

    Form2 := TForm2.Create(self);
    Form2.ShowModal;Show 和 ShowModal的问题,我不明白是不是我理解不正确。如果认为我说的不对,请把问题说清楚,发消息给我。
      

  6.   

    关于 showModal 我实在不想再说了,前面说得最多的就是 showModal 和 去掉 parent,我实在是无语了,还有人没看清就灌.
      

  7.   

    这种方法是可行的,不是MDI的,我已经给你发过帖了。
    procedure TForm1.CreFormClick(Sender: TObject);
    var
      mForm : TForm;
    begin
      mForm := TForm.Create(self);
      mForm.Position := poScreenCenter;
      mForm.Show;
    end;
      

  8.   

    To:case_sheng(宁静致远) 
    如果我的客户区不在ScreenCenter呢?
      

  9.   

    To:case_sheng(宁静致远) 
    如果我的客户区不在ScreenCenter呢?
      

  10.   

    唉,为什么都不看青人家的要求呢?现在主要问题是:Form2上面的Memo,Edit等控件无法输入数据,如果可以在Memo,
    Edit上输入数据,但Form2的标题栏仍然是灰色的,不知道这样是否达到了你的要求?
      

  11.   

    你为什么不自己看书
    再说,这类问题不于看看MSDN的开发文档
      

  12.   

    To:BCB_FANS(四大名捕之追杀令)
    真的非常谢谢你,每次都是你在帮我解释,他们总是不看要求就灌,
    现在的主要问题是:Form2 上面的控件能输入数据,但标题栏仍然是灰色的,而且不能触发OnActive事件。
      

  13.   

    To:cutelocust(我不入地狱谁入地狱)
    我要是E文很好早就去看MSDN去了,
      

  14.   

    设置Form的KeyPreview := true;procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
        if Key = vk_return then
            Postmessage(handle,WM_KEYDOWN,VK_TAB,0);
    end;
      

  15.   

    已经解决:
    myform:=Tform.create(mainform);
    myform.parent:=mainform;
    myform.show;
    BringWindowToTop(MyForm.handle);结帖吧!
      

  16.   

    varmyform:Tform;begin
    myform:=Tform.create(nil);
    //myform.parent:=form1;
    Windows.SetParent(myform.Handle,form1.Handle);//这样应该达到你的目的.
    myform.show;end;
      

  17.   

    既然你已经解决了Form2上面的控件的输入问题,那现在的问题就是如何让Form2显示为蓝色状态,是吗?
      

  18.   

    varmyform:Tform;begin
    myform:=Tform.create(nil);
    //myform.parent:=form1;
    Windows.SetParent(myform.Handle,form1.Handle);
    myform.show;end;
      

  19.   

    To:Borlandor(五角▲大民) 
    请学学:BCB_FANS(四大名捕之追杀令) 好吧,看清要求:
    myform.parent:=mainform.panel2;
    谢谢!
      

  20.   

    To:BCB_FANS(四大名捕之追杀令) 
    myform中的控件本来就可以输入,但是输入不灵活,好像有很多消息都丢失了,而且myform不能触发:OnActive事件,
      

  21.   

    varmyform:Tform;begin
    myform:=Tform.create(nil);
    //myform.parent:=form1;
    Windows.SetParent(myform.Handle,form1.Handle);//我拭过了,myform绝对能得到焦点,且能达到你的目的.
    myform.show;end;
      

  22.   

    控件获得焦点,其父窗体将被激活。你创建的myform的父系是panel,而panel的父窗体是form1,所以form1被激活,你自己创建的窗体的标题栏当然就是灰的了,但是myform中的控件还是可以正常使用的
      

  23.   

    To:superljj() 
    我要   myform 他老爸是一个panel! 你还不明白啊?
      

  24.   

    To:superljj() 
    我要   myform 他老爸是一个panel! 你还不明白啊?
      

  25.   

    To:gdutqhl(澜) 
    你说的非常正确,但怎么解决这个矛盾呢?
      

  26.   

    也是同样的道理.你可以变通一下啊.
    varmyform:Tform;begin
    myform:=Tform.create(nil);
    //myform.parent:=form1;
    Windows.SetParent(myform.Handle,Panel1.Handle);//我拭过了,myform绝对能得到焦点,且能达到你的目的.
    myform.show;end;
      

  27.   

    我在Form2上放一个TMemo,怎么点鼠标,输入光标都不出现,但点一个按钮又能触发OnClick事件,真邪了! 看来得研究一下VCL源马.
      

  28.   

    你可以自己画一个caption呀,将form1的caption画成灰的,将myform的caption画成被激活的样子。可能有点复杂,可是我只想到这个方法 :)
      

  29.   

    to superljj()
    方法不错,又学到东西了
      

  30.   

    superjj的方法的确可以得到焦点,不过又产生新的问题(可以说是致命的):1、用鼠标单击一下MainForm,你会发现MainForm无法响应任何消息了。
    2、Form2->Align属性失效,.我刚刚试过,情况属实:-)
      

  31.   

    to BCB_FANS(四大名捕之追杀令) :1. MainForm 仍然可以获得焦点,MainForm仍然可以响应消息。
    2.myForm->Align属性也没有失效.不知你是怎么试的?
      

  32.   

    to BCB_FANS(四大名捕之追杀令) :1. MainForm 仍然可以获得焦点,MainForm仍然可以响应消息。
    2.myForm->Align属性也没有失效.不知你是怎么试的?
      

  33.   

    to BCB_FANS(四大名捕之追杀令) :1. MainForm 仍然可以获得焦点,MainForm仍然可以响应消息。
    2.myForm->Align属性也没有失效.不知你是怎么试的?
      

  34.   

    这些问题是可以解决的,但是我不知道还有多少没有发现的问题,这种想法就是错的明明有Frame何必使用Form呢?不懂怎么想的!
      

  35.   

    我是这样试的,不只对不对?  Form2=new TForm2(NULL);
      ::SetParent(Form2->Handle,Panel1->Handle);
      Form2->Align=alClient;
      Form2->Show();
      

  36.   

    to BCB_FANS(四大名捕之追杀令):
    你大概不是用DELPHI的吧.
    Form2 是你设计室的Form吧.
    你的代码我改成DELPHI中,仍然正常.
    var
        Form2:TForm2;
    begin
      Form2:=TForm2.Create(nil); ;
      windows.SetParent(Form2.Handle,Panel1.Handle);
      Form2.Align:=alClient;
      Form2.Show();
    end;
      

  37.   

    你大概不是用DELPHI做的.但我用C++ BUILDER也同样达到了目的.
    你用下面的代码试试.
    Form2=new TForm(this);
      ::SetParent(Form2->Handle,Panel1->Handle);
      Form2->Align=alClient;
      Form2->Show();
      

  38.   

    Form2=new  TForm(this); //Form2怎么会是TForm的实例,我试了,这样编译不通过改为 Form2=new TForm2(this)后,MainForm还是没有反应,也许是我碰到鬼了.
      

  39.   

    我告诉你这不可能,panel不能得到焦点!!!!!!!!!!!!
    我告诉你这不可能,panel不能得到焦点!!!!!!!!!!!!
      

  40.   

    这些问题是可以解决的,但是我不知道还有多少没有发现的问题,这种想法就是错的明明有Frame何必使用Form呢?不懂怎么想的!
      

  41.   

    To: superljj() 
    高人!真的解决了,效果很少,到少目前未见问题,结贴了!
    我想请问一下,这是为什么呢?为什么直接设它的父不行,Windows.SetParent()这个函数做了什么处理就可以了呢?希望你能回答,大家也想知道吧?
    还有非常感谢大家对这个问题的关心,特别是 四大名捕 的热心参与,
    正是你们造就了 Delphi 版的繁荣。
    谢谢!