C++Builder中控件数组的实现
bcb,c++builder里listview例子

void __fastcall TForm1::Display() //ListView显示查询结果{TStringList * Name_row=new TStringList(); //记录集TListColumn *NewColumn1;TListItem *ListItem;String *arr_row;int n=20,i;String strArr[21]={"SORT_CODE", "NAME","REG_NAM","TRADE_NAME","CHARGE_UNIT", "BRANK","STANDARD","PRICE","PRODU","SUPPL","IMPORT_PRICE","INDATE","START_FLAG","BAR_CODE","JOB_NUM","MARK_DATE","MARK_TIME","REMARKS","USE_DATE", "USE_TIME","USE_FLAG"};arr_row=new String[n];ListView1->Clear();CBB1->Items->Clear(); //combobox清空this->ListView1->Columns->Clear();Name_row=ADOQuery1->FieldList; //全部列名读到记录集里for(i=0;i<ADOQuery1->FieldCount;i++){// ADOQuery1=XXX;ADOQuery1->GetFieldName(Name_row);arr_row[i]=Name_row->CommaText;arr_row[i]=Name_row->Strings[i]; //分别将每个列名存放到数组NewColumn1 = this->ListView1->Columns->Add(); //listview添加列for(k=0;k<21;k++) if(arr_row[i]==strArr[k]) break; //找出列名对应在strArr数组的编号switch(k) //根据编号找到对应的中文{case 0:NewColumn1->Caption = "分类编码"; break;case 1:NewColumn1->Caption = "品名";break;case 2:NewColumn1->Caption = "注册号"; break;case 3:NewColumn1->Caption = "商品名";break;case 4:NewColumn1->Caption = "计价单位"; break;case 5:NewColumn1->Caption = "品牌";break;case 6:NewColumn1->Caption = "规格"; break;case 7:NewColumn1->Caption = "零售价"; break;case 8:NewColumn1->Caption = "生产厂家"; break;case 9:NewColumn1->Caption = "供应商"; break;case 10:NewColumn1->Caption = "进货价"; break;case 11:NewColumn1->Caption = "有效期";break;case 12:NewColumn1->Caption = "启用标志"; break;case 13:NewColumn1->Caption = "条码"; break;case 14:NewColumn1->Caption = "录入人工号"; break;case 15:NewColumn1->Caption = "录入日期"; break;case 16:NewColumn1->Caption = "录入时间";break; case 17:NewColumn1->Caption = "备注"; break;case 18:NewColumn1->Caption = "使用日期";break;case 19:NewColumn1->Caption = "使用时间";break; case 20:NewColumn1->Caption = "使用标志";break; default:break;}NewColumn1->Width = (ListView1->Width)/ADOQuery1->FieldCount; //根据列数计算每列的宽度m=i;CBB1->Items->Add(NewColumn1->Caption); //添加分类查询类别}while(!Form1->ADOQuery1->Eof){ListView1->ViewStyle=vsReport; //设置listview的显示格式属性ListItem = ListView1->Items->Add(); //添加行项目ListItem->Caption = Form1->ADOQuery1->FieldByName(arr_row[0])->AsString; //将第i列的第一行的内容读到当前行for(int k=1;k<=m;k++){ListItem->SubItems->Add(Form1->ADOQuery1->FieldByName(arr_row[k])->AsString); //将第i列第K行的内容读到第k行}Form1->ADOQuery1->Next(); //指向下一行}}。
C++Builder中动态数组的使用(转)

C++Builder中动态数组的使⽤(转)和AnsiString类型⼀样,动态数组是为了和DELPHI中的动态数组相兼容⽽定义,在BCB中,动态数组是⽤模板(template)的⽅式使⽤的,动态数组的定义如下:template class DELPHIRETURN DynamicArray;所以我们在使⽤时必须要指定明确的基本数据类型,⽐如说要定义⼀个int类型的动态数组arrayOfInt,其定义格式如下:DynamicArray arrayOfInt;怎么动态改变数组的⼤⼩呢?DynamicArray类有⼀个属性Length,只要简单改变这个值就可以改变数组的⼤⼩,例如要把arrayOfInt的长度设为10:arrayOfInt.Length=10;特别提出的是,如果要释放⼀个动态数组,只要把Length设置为0即可,怎么样?够简单的吧?DynamicArray的属性和⽅法并不多,下⾯我就⼀⼀说明。
High int只读,动态数组的上界,即Length-1。
Low int只读,动态数组的下界,桓为0。
Length int设置/返回动态数组的长度,设为0表⽰释放数组Copy()拷贝⼀个动态数组的内容到另⼀动态数组,⽐如tmp=a_data.Copy();必须两者是相同类型。
CopyRange(int startindex,int count)拷贝⼀个动态数组指定范围的内容到另⼀动态数组,第⼀个参数为起始位置,第⼆个参数为拷贝的个数,=赋值。
只是⽣成指向本数组的⼀个变量名,如果要⽣成⼀个副本,就必须⽤Copy()⽅法。
==⽐较。
[]取下标。
这样,我们就可以在BCB中使⽤动态数组了,在功能强⼤使⽤灵活的BCB中使⽤使⽤灵活的动态数组,不是⼀件让⼈⾼兴的事情吗?。
C++Builder6控件

屏幕组件(CoolBar)屏幕组件位于【Win32】组件页的页面上,是由Windows95引入的,用于在可移动并且可以改变大小的显示栏中显示一个系列的窗口组件。
最典型的例子就是Windows95以及其后续版本98,2000,xP的任务栏。
MaskEdit的EditMask使用方法(转)最近需要一个可控制输入输出格式的编辑框,不过Delphi中却没有满足要求的控件,想自己弄一个吧!结果没想到Delphi一如既往地连正则表达式都没有支持,不考虑自己编写正则表达式Parser的可行性,从头写个正则表达式编辑框时间上也不允许。
没办法,将就下用MaskEdit 吧!顺便也了解下EditMask具体用法下面的内容是网上找的掩码编辑框(MaskEdit)是一种特殊的编辑框。
使用它可以设计出许多复杂的输入格式。
在选用MaskEdit之后,需要为它设计一个输入格式。
方法如下:首先在窗体上将MaskEdit选中,在对象查看器(Object Inspector)中找到EditMask属性,双击它,弹出一个如下图所示的对话框。
对话框左上角的Input Mask编辑框用于输入掩码格式。
掩码格式可以分为三部分,每个部分之间用分号“;”分开,如“!90:90:90:;1;_”。
下面解释各输入格式符的意义:1.输入格式的第一部分是掩码本身,也就是数据输入格式。
在这一部分用一些特殊的格式符来表示应输入的字符类型及格式,如“!l0A9:C>ll<”这样一串输入格式掩码。
常用的MaskEdit 输入格式符有:格式符意义L和l L表示该位置只能填一个字母。
l和L一样,但允许不填。
A和a A表示该位置只能填一个字母或数字。
a和A一样,但允许不填。
C和c C表示该位置可以填任意字符。
c和C一样,但允许不填。
0和90表示该位置只能填一个数字。
9和0一样,但允许不填。
<和><格式符表示随后的字母均以小写的形式显示,直到遇到一个>格式字符或<>格式符。
如何在C++Builder中创建一个控件数组

如何在C++Builder中创建一个控件数组
李艳梅;王春霞
【期刊名称】《智能计算机与应用》
【年(卷),期】2000(000)004
【摘要】@@ 在使用C++Builder时,由于VCL中缺少控件数组,因而使用起来不象Visual Basic中那样方便.但是C++Builder可以利用其它的技术实现控件数组的所有的功能:(1)允许多个控件共享同一事件句柄;(2)提供了在运行期间增加一个控件的机制;(3)提供了一种方便的组合控件的方法.
【总页数】2页(P25-26)
【作者】李艳梅;王春霞
【作者单位】无锡轻工大学,214036;无锡轻工大学,214036
【正文语种】中文
【中图分类】TP3
【相关文献】
1.C++Builder中DLL的创建及调用 [J], 周立;蒋天发
2.Borland C++Builder中动态链接库的创建和调用 [J], 邓斌;盛文;陈玉
3.如何在C++Builder程序中调用VC的DLL文件 [J], dhj
4.C++BUILDER中动态创建在电力电缆系统中的应用 [J], 李军;张振国;孙文兵
5.如何在C++Builder中动态设置系统的显示模式 [J], 彭耶萍
因版权原因,仅展示原文概要,查看原文内容请购买。
第十一讲 C++ Builder中ADO控件的使用

图11-4使用Database DeskTop设计表的结构
11.1.4 BCB的数据库组件
BCB数据库组件分为两大类:非可视的数据访问组件和可视化的数据控制组件。前者提供了取得数据的机制,它们位于组件面板的Data Access、BDE和ADO等页上;而后者主要用于浏览和编辑数据,它们位于Data Controls页上。11.2数据库组件的连接
图11-1 BDE管理器
作为例子我们创建一个基于FOXPRO的BDE别名MYBDE,具体方法如下:
(1)在别名管理器的Database页面上选择主菜单Object→New,或右击树型结构的任意地方,选择弹出菜单的New选项,弹出新别名对话框,如图11-2所示。在下拉列表框中选择“STANDARD”,此时生成一个缺省名为“STANDARD1”的别名。
执行Tools→Database DeskTop菜单命令即可打开Database DeskTop。在Database DeskTop中可以打开子窗口对数据表进行创建、查询、执行SQL语句等操作。Database DeskTop子窗口主要有以下三种。
1.查询窗口
打开或建立新的QBE文件时,Database DeskTop将打开一个查询窗口,可以使用查询窗口检索表中的信息。
ODBC是Microsoft公司Windows开放式体系结构的数据库部件,它是若干Windows API的标准命令或函数组,用户以统一的方式使用这些API来处理不同平台上的数据库信息。ODBC已成为数据库行业的标准,每个数据库管理系统的开发商都为自己的数据库产品编制了相应的ODBC,为数据库的二次开发带来了方便。
(4)回到Table1组件上,将其Active属性设置为true(缺省值为false),这样就打开了数据源,此时ANIMALS.DBF表中的数据立即显示在DBGrid1的栅格中(除BMP字段外)。可调整DBGrid控件的大小以便于浏览。
C++BUILDER6.0中控件数组的探讨

C++BUILDER6.0中控件数组的探讨C++BUILDER 6.0中控件数组的探讨摘要C++Builder作为C++语言的可视化开发工具,具有功能强大,易学易用等优点,其控件数组功能更是极大的方便了开发人员编制出灵活的可扩充的软件,但是几乎没有关于控件数组具体怎样使用的资料。
本文详细阐述了两种控件数组的创建、使用和事件响应的方法,对C++Builder开发者有很好的实用参考价值。
关键词C++Builder 控件数组事件响应1.引言在编制应用程序中,为了编制程序的方便、可扩充性和灵活性,常常要使用控件数组。
Borland C++ Builder作为程序开发工具,具有威力强大的C++语言和快捷便利的可视化编程完美结合的优点,但是在C++Bilder的使用帮助和很多教程中都没有控件数组及其事件响应的详细完整的说明。
通过查阅资料,多次探索试验,了解和掌握了控件数组的创建、使用和事件响应的两种方法:C++Builder本身提供的Tlist对象和同类控件数组。
2.用Tlist对象应用控件数组的方法C++BUILDER中本身提供的有TList类对象来使用控件数组,它不强求控件数组中的控件是同一种类型,可以组合任意类型的控件,这样大大地方便了程序开发者。
其实现原理与方法详见以下的程序代码,实例程序实现了动态创建一个包含3个TEdit类型控件和3个Button类型控件的控件数组,详细论述了控件数组的创建、修改、维护和事件响应的功能。
(1)添加全局的TList声明在工程的头文件头中添加TList*的全局变量声明:TList *MyList;(2)创建一个TList对象在Form1的OnCreate事件中添加以下代码,MyList=new TList;//创建TList对象(3) 产生3个TEdit类型控件和3个Button类型控件的控件:在Form1的OnCreate事件中添加以下代码,for (int i=0;i<3;i++) {TButton *MyBtn= new TButton(this);// 创建TButton对象MyBtn->Parent=Form1; //指定此对象放置的地点MyBtn->Caption=”按钮”+AnsiString(i); //按键显示名称MyBtn->Top=100; //对象的大小和位置MyBtn->Height=24;MyBtn->Width=60;MyBtn->Left=10+i*100;MyBtn->OnClick= BtnClick;//控件响应Click事件的过程MyList->Add(MyBtn); //加入到控件数组中TEdit *MyEdit = new TEdit(this);//创建TEdit对象MyEdit->Parent=Form1; //指定此对象放置的地点MyEdit->Top=150; //对象放置位置MyEdit->Height=24;MyEdit->Width=60;MyEdit->Left=10+i*100;MyList->Add(MyEdit); //加入到控件数组中}(4) 控数组的使用在程序中加入以下语句可以改变创建控件的位置for (int i=0;i<3;++i) {((TButton*)MyList->Items[i*2])->T op=100+i*50;((TButton*)MyList->Items[i*2])->Left=10;((TEdit*)MyList->Items[i*2+1])->T op=100+i*50;((TEdit*)MyList->Items[i*2+1])->Left=150;}(5) 控件数组事件的响应在TForm1类中的__published:中添加按钮的事件响应说明:void __fastcall TForm1::BtnClick(TObject *Sender);在上面第三步骤中的代码内加入指出创建的按钮控件响应何事件(这里用单击Click事件),及指出事件响应的过程MyBtn->OnClick= BtnClick;(6) 在事件响应例程中加入事件响应的代码void __fastcall TForm1::BtnClick(TObject *Sender) {TButton *mybtn=(TButton *)Sender;ShowMessage(mybtn->Caption);}(7) 程序结束时,在Form1的关闭事件中要用delete删除用new 创建的对象,释放这些对象申请的空间。
c++ builder编程指南

C++Builder 编程指南2关键字:C++Builder,编程指南作者:佚名更新:2002-11-01 浏览:5158三、常用控件的使用与编程静态文本是用户无法直接改变(不可编辑)的文本,程序可以在运行时刻来改变它,通常起标注和提示作用,它位于控件板的“Standard”页,其主要属性有:Align:指该控件在窗口中的位置或对齐方式(AlBottom:位于底部;AlClient:充满客户区;AlLeft:位于左方;AlNone:用户自定义;AlRight:位于右方;AlTop:位于顶部)。
Alignment:显示文字在本控件中的位置(taCenter:居中;taLeftJustify:居左;taRightJustify:居右)。
AutoSize:是否自动缩放(当设为true时,则控件的尺寸随控件里面文字的大小而改变)。
Caption:控件中要显示的文字,即标题。
Color:控件的颜色。
Cursor:鼠标移入控件后的形状。
Enabled:设置该控件是否有效。
Font:设置该控件内文字的字体,单击该属性弹出字体设置对话框,可以设置字体风格、字体尺寸、字体颜色等。
Name:控件名称。
标准按钮主要用于响应用户鼠标或键盘按下的操作,它位于控件板的Standard页,其主要属性有:Cancel:当设为true时,此按钮相当于放弃按钮,即当用户按下Esc键时相当于用鼠标单击此按钮。
Default:设置该按钮是否为缺省按钮。
ModalResult:模式结果。
(可选值有mrNone、mrOk、mrCancel、mrAbort、mrRetry、mrIgnore、mrYes、mrNo等)当设为非mrNone时,主要用于按下该按钮时关闭该按钮所属模式窗口。
标准按钮控件可以响应的主要事件有:OnClick:鼠标单击或按下热键时的响应事件。
OnEnter:当按钮获得输入焦点时的响应事件。
OnExit:当按钮失去输入焦点时的响应事件。
C++Builder中控件的动态生成与使用方法

C++Builder中控件的动态生成与使用方法
刘艮;杨玉琴
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】2011(000)018
【摘要】作为一款优秀的快速应用程序开发工具(RAD),C++Builder为用户快速开发应用程序带来了很大的方便.由于C++Builder没有提供控件教组功能,这给应用程序开发者带来了一些不便.鉴于此,给出了动态生成控件的原理、动态生成控件的使用方法以度学习过程中的一点技巧.
【总页数】3页(P39-41)
【作者】刘艮;杨玉琴
【作者单位】中南民族大学计算机科学学院,武汉430074;中南民族大学计算机科学学院,武汉430074
【正文语种】中文
【相关文献】
1.从COM说到Flash与ActiveX——在C++Builder中添加Flash控件 [J], 谢江;任宏德
2.C++Builder控件技术在自助售票机中的应用 [J], 金瓯;樊玮虹
3.为C++Builder新增一个编辑控件及其数组控件 [J], 王兆锐;陈欣;袁琪
4.C++Builder中对ListBox控件的一种改进方法 [J], 周熙;汪红
5.C++Builder中采用DevExpressVCL控件开发浅析 [J], 蒋祝平
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
38
安阳师范学院学报 2003 年
3 控件数组的实现
从 2 中我们知道 ,C ++ Builder 中可以 1) 允许不同类 型的多个控件共享同一个事件句柄 ,2) 提供了动态创建控 件的功能 。我们可以利用以上功能和 Tlist 类对象来实现 控件数组 。
3. 1 在窗体类中创建 Tlist 类的对象和窗体的析构 函数
对于 Button 组件来说 ,单击鼠标事件可以如下处理 : void fastcall TForm1 : :Button1Click(TObject 3 Sender) { / / 此处存放响应在 Button 控件上单击鼠标的处理程 序代码
} 对于 RadioButton 组件来说 ,单击鼠标事件可以如下处 理: void fastcall TForm1 : : RadioButton1Click ( TObject 3 Sender) { / / 此处存放响应在 RadioButton 控件上单击鼠标的处 理程序代码
}
我们称单击为事件 ,称 Button1Click ( TObject 3 Sender) 和 RadioButton1Click(TObject 3 Sender) 为单击鼠标的事件 句柄 。
2. 2 句柄共享
C + + Builder 中 ,不同类型的控件的处理程序一般情 况下是不一样的 ,那么事件句柄也不一样 ,但有时两个控 件的处理程序完全相同或有许多相似之处 ,这时两个控件 需要使用相同的事件句柄 ,对此我们称为句柄共享 ,其方 法位在在相关控件的 EVENT 事件中设置事件句柄为同一 个函数 。如 2. 1 中 Button 组件和 RadioButton 组件使用相 同的事件句柄 Click(TObject 3 Sender) 。
4 结束语
在进行程序设计时使用控件数组 ,实现了将不同类型 控件的统一处理 ,使程序员可以同时控制 Windows 的不同 组件 ,应用程序中合理使用控件数组能够更加灵活地处理 Windows 组件 ,提高程序的编写效率 。
[ 参考文献 ]
[1 ]李幼仪 1C + + Builder 高级应用开发指南 [M]1 清华大 学出版社 ,2002. 111
TEdit 3 EditNumber = new TEdit (this) ;/ / 动态创建控 件
/ / 控件属性定义 MyVcl2 > Add( EditNow) ; / / 加入到控件数组中 TImage 3 ImageOff = new TImage (this) ; / / 动态创建控 件 / / 控件属性定义 MyVcl2 > Add( ImageOff) ; / / 加入到控件数组中 TEdit 3 EditStats = new TEdit (this) ; / / 控件属性定义 MyVcl2 > Add( EditStatus) ; / / 加入到控件数组中 }
CHANG Bao2ping ,LIU Ling2xia
(Computer Center of Anyang Techers’College ,Anyang 455000 ,China)
Abstract :This Paper gives the method that how to process a Componet Array in C + + Builder
[2 ]乔林 1C + + Builder 5 技术内幕[M]1 中国铁道出版社 , 2000. 71
[3 ]梁志刚 1C + + Builder 5 开发人员指南 [ M]1 机械工业 出版社 ,2000. 101
Processing Event by Oneself in C + + Builder
[ 关键词 ]C + + Builder ; 控件数组 ;VCL [ 中图分类号 ]TP31111 [ 文献标识码 ]A [ 文章编号 ]167125330 (2003) 0520037202
1 问题的提出
在 C ++ Builder 中 ,可视组件库 (VCL) 提供了 Windows 中常用部件如“按钮”“、窗体”“、对话框”“、标签”等可视组 件 ,为程序设计人员提供了快捷便利的可视化编程环境 , 但遗憾的是其没有直接提供控件数组的功能 ,需要开发者 自己编程实现 ,因此本文论述了 C + + Builder 中控件数组 实现的原理和方法 。
2 事件 、事件句柄 、动态创建控件
2. 1 事件 、事件句柄
事件是 Windows 系统中发生的事情和处理程序之间 的连接 ,我们称处理程序为响应代码 ,即对所发生事情的 相应 ,事件响应程序我们称其为事件句柄 。
C + + Builder 中的组件继承了 Windows 常见操作的事 件即标准事件 ,如单击鼠标 、键盘按下 、鼠标移动 、键盘弹 起 、窗口建立等分别对应以下事件 : Click、KeyDown、Mouse2 Move 、KeyUp 、FormCreate ,这些事件的捕获和处理均由 C + + Builder 自行处理 ,程序设计人员只需为它们指定事件处理 程序 。
Class TmemoEx :public TMemo
{ }
extern TMemoEx memoex ; Class TForm1 :Class TForm
{
public : TMemoEx 3 MemoEx ; } void fastcall TForm1 : :FormShow(TObject 3 Sender) { MemoEx = new TMemoEx(this) ; MemoEx2 > Parent = this ; }
class TForm1 : public TForm {
published : / / IDE - managed Components private : / / User declarations TList * MyVcl ;/ / 说明 Tlist 类的对象 public : / / User declarations
2003 年 安阳师范学院学报
37
C + + Builder 中控件数组的实现
常保平 ,刘凌霞
(安阳师范学院 计算中心 ,河南 安阳 455000)
[ 摘 要 ]C + + Builder 是目前比较优秀的 C + + 编译器 ,其推出的可视组件库 (VCL) 具有可视件 ,但未提供控件数组功能 ,为此 ,本文给出了 C + + Builder 中控件数组实现的原理和方 法。
3. 3 控件数组元素的使用
for (int i = 0 ;i < 5 ;i + + ) ( (TEdit 3 ) MyVcl2 > Items[ i 3 3 + 0 ])2 > Parent = Paneln ;/ / 改变数组元素的 Parent 属性在这里 [ i 3 3 + 0 ]可以视 为数组元素的下标 ,使用 MyVcl - > Items[ i 3 3 + 0 ]访问数 组元素 。
Key words :C + + Builder ; Componet Array ;VCL
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
[ 收稿日期 ]2003208216 [ 作者简介 ]常保平 (1964 —) ,男 ,河南浚县人 ,安阳师院副教授 ,网络中心主任 ,从事计算机软件和网络技术研究 。
© 1995-2006 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.
2. 3 动态创建控件
C + + Builder 中可以动态地创建控件 ,其创建步骤如 下:
1) extern TMemoEx memoex ; 2) TMemoEx 3 MemoEx ; 3) MemoEx = new TMemoEx(this) ; 4) MemoEx2 > Parent = this ; 以生成一个 TMemo 的派生类及动态地创建该 VCL 控 件为例 。
fastcall TForm1 (TComponent * Owner) ; virtual fastcall ~TForm1 ( ) ; };
fastcall TForm1 : :TForm1() { delete MyVcl ; / / 删除 TList 对象 }
3. 2 创建控件数组 3. 2. 1 在窗体建立时创建 TList 对象
void fastcall TForm1 : :FormCreate(TObject 3 Sender) { MyVcl = new TList ;/ / 创建 TList 对象 }
3. 2. 2 使用 Tlist 类的 Add 方法将控件数组元素添 加到数组中
for (int i = 0 ;i < 5 ;i + + ) {