起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 134|回复: 9

【搞定】代码控制TDocViewBar时的问题**

[复制链接]
发表于 2007-12-27 14:54:43 | 显示全部楼层 |阅读模式
现因客户需要,在2个页面切换时,要打印的格式不一样,查找BBS上相关的资料,写如下控制代码:

procedure TMerchantSetForm.PageControlOnChange(Sender:TObject);//gexh 2007-12-25
begin
  case MERCHANTSETINFO.TMerchantInfoFormDoc(docview1.Doc).kyPageControl1.ActivePageIndex of
  0:
  begin
    DocViewBar1.AutoDetect :=True;
    Docview1.SetFocus ;
  end ;
  1:
  begin
    DocViewBar1.AutoDetect :=False;
    DocViewBar1.DocView :=DocView3;
  end;
  end;
end;

在操作过程中,功能刚打开时,与从0切换到1时,再从1切换到0时,结果是正确的,但再从0切换到1时,DocViewBar1变为灰色了,请问这是怎么回事?
回复

使用道具 举报

发表于 2007-12-27 15:24:33 | 显示全部楼层
DocView3没有获得焦点吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-27 15:29:23 | 显示全部楼层
case MERCHANTSETINFO.TMerchantInfoFormDoc(docview1.Doc).kyPageControl1.ActivePageIndex of
  0:
  begin
    DocViewBar1.AutoDetect :=True;
    Docview1.SetFocus ;
  end ;
  1:
  begin
    DocViewBar1.AutoDetect :=False;
    DocViewBar1.DocView :=DocView3;
    DocView3.SetFocus ;
  end;
  end;

改成这样还是不行
回复 支持 反对

使用道具 举报

发表于 2007-12-27 15:38:43 | 显示全部楼层
设置AutoDectect属性后刷新一下
DocViewBar1.AutoDetect :=True;
DocViewBar1.Refresh;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-27 15:46:22 | 显示全部楼层
case MERCHANTSETINFO.TMerchantInfoFormDoc(docview1.Doc).kyPageControl1.ActivePageIndex of
  0:
  begin
    DocViewBar1.AutoDetect :=True;
    Docview1.SetFocus ;
    DocViewBar1.Refresh ;
  end ;
  1:
  begin
    DocViewBar1.AutoDetect :=False;
    DocViewBar1.DocView :=DocView3;
    DocView3.SetFocus ;
    DocViewBar1.Refresh;
  end;
  end;

还是不行
回复 支持 反对

使用道具 举报

发表于 2007-12-27 16:33:09 | 显示全部楼层
case MERCHANTSETINFO.TMerchantInfoFormDoc(docview1.Doc).kyPageControl1.ActivePageIndex of
  0:
  begin
    Docview1.SetFocus ;
    DocViewBar1.AutoDetect :=False;
    DocViewBar1.AutoDetect :=True;
   //  DocViewBar1.Refresh ;
  end ;
  1:
  begin
    DocView3.SetFocus ;
    DocViewBar1.AutoDetect :=False;
    DocViewBar1.AutoDetect :=True;   
//   DocViewBar1.DocView :=DocView3;

    //DocViewBar1.Refresh;
  end;
  end;
这样看看
回复 支持 反对

使用道具 举报

发表于 2007-12-27 16:33:25 | 显示全部楼层
case MERCHANTSETINFO.TMerchantInfoFormDoc(docview1.Doc).kyPageControl1.ActivePageIndex of
  0:
  begin
    DocViewBar1.AutoDetect :=True;
    DocViewBar1.DocView :=nil;  //添加这句
    Docview1.SetFocus ;
    DocViewBar1.Refresh ;
  end ;
  1:
  begin
    DocViewBar1.AutoDetect :=False;
    DocViewBar1.DocView :=DocView3;
    DocView3.SetFocus ;
    DocViewBar1.Refresh;
  end;
  end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-27 16:39:08 | 显示全部楼层
晕,解决了,要这样才行, 能说说为什么要在触发焦点放在前面吗?可以结了,谢谢
case MERCHANTSETINFO.TMerchantInfoFormDoc(docview1.Doc).kyPageControl1.ActivePageIndex of
  0:
  begin
    Docview1.SetFocus ;
    DocViewBar1.AutoDetect :=True;
   // DocViewBar1.Refresh ;
  end ;
  1:
  begin
    DocView3.SetFocus ;
    DocViewBar1.AutoDetect :=False;
    DocViewBar1.DocView :=DocView3;
    //DocViewBar1.Refresh;
  end;
  end;
回复 支持 反对

使用道具 举报

发表于 2007-12-27 16:43:52 | 显示全部楼层
7楼正解。
8楼这样能解决吗?那的确奇怪了。无解。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-27 17:21:37 | 显示全部楼层
呵呵,我用的是2809版本的,因为这个问题,在BBS上找过相关的资料,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-4 06:42 , Processed in 0.043851 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表