C++ Bulider之ActiveX控件之TF1Book的使用
2011-09-19 18:19
447 查看
这段时间项目中用到了报表控件TF1Book控件,感觉用起来特别费劲,推荐不要用这个控件。一个原因就是这个控件的帮助文档特别少,在网上找到的例子都是delphi的,还好delphi与C++Bulider的函数大多数都相同,要不然一点帮助信息都难找...用起来也纠结死了。
(1)在【工程选项】中的【组建包】下要把“与运行时组件一起编译”勾选,否则调用ActiveX的方法在运行的时候会报“未知接口”的异常
(2)使用ActiveX控件的软件拷贝到别人的电脑上与运行需要将ocx文件进行注册。具体注册代码如下:
(3)下面是一些对TF1Book控件的相关操作。
<1>设置F1Book某一列只读
在网上搜索找到的方法如下:
F1Book2->EnableProtection=true;
F1Book2->SetSelection(1,1,F1Book2->LastRow,1);
F1Book2->SetProtection(true,true);
但上面方法不能实现这种效果,上面方法是将整个报表保护起来,当试图要更改时就会弹出对话框。
上面方法不可行,那么可采用什么方法呢?F1Book可以设置最左端有几列的固定的,固定就是这和表格中标识列的数字1,2,3等这样,用户不可编辑,选择这个方格会将整行选中,而且当存在水平滚动条时,滚动时固定的列和1,2,3这样的数字一样不随滚动条滚动而被隐藏。
F1Book1->FixedCols=1;//第一列不能编辑了
还原
F1Book1->FixedCols=0;
F1Book1->LeftCol=1;//使得视野中有A1
<2>如果设置F1Book是可编辑的,那么右键双击会弹出类似excel界面的对话框,可以进行编辑(当然原先的表格直接编辑也是可以的),如果想通过编程显示此对话框
F1Book->AllowDesigner=true;
F1Book->LaunchDesigner();
但应该注意的是在弹出的对话框中不能点击保存,所在会报错。
<3>关于单元格内容的更改,如果直接修改,比方说现在在A1单元格输入,如果想使A1的值更新,要将A1的键盘焦点去除,也就是说选中其他单元格,如果不这样,比方说在表格下有个保存按钮,点击按钮A1的值还是原来的值
(4)还有个有趣的现象----对于AnsiString str=“1234”,如果这样进行运算----str[4]='\0';那么str值为"123",但如果str+="5";时,这时候调用ShowMessage,会只显示123.可能的原因在于str[4]='\0';之后,AnsiString不负责检查字符串长度是否更新,当str+="5";时,str的值相当于"123\05"所以显示出来的是123
(1)在【工程选项】中的【组建包】下要把“与运行时组件一起编译”勾选,否则调用ActiveX的方法在运行的时候会报“未知接口”的异常
(2)使用ActiveX控件的软件拷贝到别人的电脑上与运行需要将ocx文件进行注册。具体注册代码如下:
HINSTANCE hLib=LoadLibrary("C:\\a.ocx");//指定要注册的ocx文件的路径及文件名。 if (hLib==NULL) { return false; } //获取注册函数DllRegisterServer地址 FARPROC lpDllEntryPoint; lpDllEntryPoint = GetProcAddress(hLib,"DllRegisterServer"); //调用注册函数DllRegisterServer if(lpDllEntryPoint==NULL) return false; if(FAILED((*lpDllEntryPoint)())) { FreeLibrary(hLib); return false; } FreeLibrary(hLib);
(3)下面是一些对TF1Book控件的相关操作。
<1>设置F1Book某一列只读
在网上搜索找到的方法如下:
F1Book2->EnableProtection=true;
F1Book2->SetSelection(1,1,F1Book2->LastRow,1);
F1Book2->SetProtection(true,true);
但上面方法不能实现这种效果,上面方法是将整个报表保护起来,当试图要更改时就会弹出对话框。
上面方法不可行,那么可采用什么方法呢?F1Book可以设置最左端有几列的固定的,固定就是这和表格中标识列的数字1,2,3等这样,用户不可编辑,选择这个方格会将整行选中,而且当存在水平滚动条时,滚动时固定的列和1,2,3这样的数字一样不随滚动条滚动而被隐藏。
F1Book1->FixedCols=1;//第一列不能编辑了
还原
F1Book1->FixedCols=0;
F1Book1->LeftCol=1;//使得视野中有A1
<2>如果设置F1Book是可编辑的,那么右键双击会弹出类似excel界面的对话框,可以进行编辑(当然原先的表格直接编辑也是可以的),如果想通过编程显示此对话框
F1Book->AllowDesigner=true;
F1Book->LaunchDesigner();
但应该注意的是在弹出的对话框中不能点击保存,所在会报错。
<3>关于单元格内容的更改,如果直接修改,比方说现在在A1单元格输入,如果想使A1的值更新,要将A1的键盘焦点去除,也就是说选中其他单元格,如果不这样,比方说在表格下有个保存按钮,点击按钮A1的值还是原来的值
(4)还有个有趣的现象----对于AnsiString str=“1234”,如果这样进行运算----str[4]='\0';那么str值为"123",但如果str+="5";时,这时候调用ShowMessage,会只显示123.可能的原因在于str[4]='\0';之后,AnsiString不负责检查字符串长度是否更新,当str+="5";时,str的值相当于"123\05"所以显示出来的是123
相关文章推荐
- [C++] 在 C++ Builder 中使用 ActiveX 控件显示 Flash 动画
- 使用VS2010开发ActiveX(MFC)控件(3)——添加接口及WEB调用
- 使用VS2010开发ActiveX(MFC)控件(3)——添加接口及WEB调用
- C++ web brower 控件使用
- 使用VS2010开发ActiveX(MFC)控件(2)——界面显示
- 如何在 ActiveX 控件中使用字体
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目 .
- (9)uniGUI for C++ builder下如何使用UniPageControl控件做成WEB多页面系统界面框架?
- 使用VS2010开发ActiveX(MFC)控件(转载)
- C++ MFC combo box和list control控件的使用
- 点击打印出现IE已经阻止此站点用不安全方式使用 ActiveX 控件解决方法
- 使用VS2010开发ActiveX(MFC)控件(3)——添加接口及WEB调用
- EXCEL2007出错了无法使用文档中的ActiveX 控件
- 如何解决asp.net中使用webbrowser是出现的"无法实例化ActiveX 控件"的异常"
- 简单介绍 VC2003 使用 ATL 开发 ActiveX 控件
- 以编程方式使用 Microsoft Office Visio 2003 ActiveX 控件
- 一步一步学习C++的ActiveX网页控件开发
- C++中MFC Tab Control控件的使用详解
- [译]使用C#的用户控件创建ActiveX
- [入门] 探索FireMonkey的StyleBook皮肤控件的使用(附示例程序)