1、有一个myFrame:TFrame变量他在不同的条件下分别被TFrame1.create(Self)和TFrame2.Create(Self)赋值;有什么方法可以的到当前的myFrame值是来自哪个TFrame创建的吗。
2、在一个Frame1上有个RadioGroup,他里面的Item的个数是跟据数据库中记录的数据个数动态生成的,但是每次生成时,界面都会不停的闪烁,怎么能让他不闪?

解决方案 »

  1.   

    1.自己加一个变量来判断
    2.用ComboBox算了
      

  2.   

    LockWindowUpdate(self)//锁订窗体
    ......
    LockWindowUpdate(0))//解锁窗体
      

  3.   

    楼上的对MDI有点效,但对于RadioGroup没有必要
    RadioGroup1.Items.BeginUpdate
    完了之后
    RadioGroup1.Items.EndUpdate
    可以解决从数据库中读取闪的问题
      

  4.   

    关于第一个问题
    可以检测myFrame.ClassName
      

  5.   

    self.DoubleBuffered := true;
     建立双缓冲,可以解决一部分问题。
    如果还闪烁,在创建时插入
      application.processmessage;
      或者sleep(100);
      

  6.   

    procedure TFrmMain.CreateChildForm(aFormClass: TFrmMDIChildClass;
      aRunParamStr, aFormCaption: string);
    var
      lMDIChildForm: TForm;
    begin
      lMDIChildForm := FindChildForm(aFormClass);
      if not Assigned(lMDIChildForm) then
      begin
        // 先鎖住屏幕
        Perform(WM_SETREDRAW, 0, 0);
        try
          lMDIChildForm := aFormClass.Create(aRunParamStr, aFormCaption, Application.MainForm);
        finally
          // 解鎖屏幕
          Perform(WM_SETREDRAW, 1, 0);
          RedrawWindow(Handle, nil, 0, RDW_FRAME + RDW_INVALIDATE +
            RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);
        end;
        lMDIChildForm.Caption := aFormCaption;
      end;
      lMDIChildForm.Show;
    end;