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], 蒋祝平
因版权原因,仅展示原文概要,查看原文内容请购买。
cbuilder listview控件的基本用法
cbuilder listview控件的基本用法ListView控件是C++ Builder中常用的列表显示控件之一,它可以用于展示大量数据,并支持多列和多行显示。
ListView控件具有丰富的功能和样式设置,可以满足各种需求。
一、导入ListView控件在使用ListView控件前,首先需要添加Ctrls单元,该单元中定义了ListView控件的相关类和接口。
二、创建ListView控件1. 使用C++ Builder的可视化设计工具拖拽一个ListView控件到窗体上;2. 在代码中使用TListView类创建控件。
三、设置ListView控件的基本属性1. 设置ViewStyle:决定ListView控件的外观样式,可以设置为vsIcon、vsSmallIcon、vsList、vsReport和vsReportStyles;2. 设置ReadOnly属性:决定用户是否可以编辑ListView中的内容;3. 设置Columns属性:可以通过添加TListColumn对象来定义ListView的列;4. 设置ColumnClick属性:决定是否支持点击列标题进行排序;5. 设置GridLines属性:决定是否显示网格线;6. 设置HideSelection属性:决定是否隐藏选中项;7. 设置MultiSelect属性:决定是否可以多选;8. 设置ShowColumnHeaders属性:决定是否显示列标题栏;9. 设置ViewStyle属性:决定ListView的外观样式。
四、添加数据到ListView控件1. 使用Items属性添加行;2. 使用SubItems属性添加行的具体数据;3. 使用Columns属性控制列数和列标题;4. 使用AddItem方法、Add方法、InsertItem方法添加数据。
五、获取和处理ListView控件的事件1. OnClick事件:当用户点击ListView控件时触发;2. OnDblClick事件:当用户双击ListView控件时触发;3. OnEditing事件:当用户开始编辑ListView的某一项时触发;4. OnEdited事件:当用户完成编辑ListView的某一项时触发;5. OnColumnClick事件:当用户点击列标题时触发,可以用于对ListView控件的行进行排序;6. OnSelectItem事件:当选中ListView控件中某一项时触发;7. OnMouseDown事件:当鼠标在ListView控件上按下时触发;8. OnMouseUp事件:当鼠标在ListView控件上弹起时触发。
C++Builder中控件数组的实现
我们称单击为事件 ,称 Button1Click ( TObject 3 Sender) 和 RadioButton1Click(TObject 3 Sender) 为单击鼠标的事件 句柄 。
2. 2 句柄共享
C + + Builder 中 ,不同类型的控件的处理程序一般情 况下是不一样的 ,那么事件句柄也不一样 ,但有时两个控 件的处理程序完全相同或有许多相似之处 ,这时两个控件 需要使用相同的事件句柄 ,对此我们称为句柄共享 ,其方 法位在在相关控件的 EVENT 事件中设置事件句柄为同一 个函数 。如 2. 1 中 Button 组件和 RadioButton 组件使用相 同的事件句柄 Click(TObject 3 Sender) 。
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
4 结束语
在进行程序设计时使用控件数组 ,实现了将不同类型 控件的统一处理 ,使程序员可以同时控制 Windows 的不同 组件 ,应用程序中合理使用控件数组能够更加灵活地处理 Windows 组件 ,提高程序的编写效率 。
[ 参考文献 ]
[1 ]李幼仪 1C + + Builder 高级应用开发指南 [M]1 清华大 学出版社 ,2002. 111
class TForm1 : public TForm {
用C#实现简单的控件数组
做计算器程序,井字棋游戏。
这两个程序有个共同的特点:包含数个具有同类功能的控件(计算器的数字按钮及井字棋的九个落子位)。
如果一个个地创建这些控件,不得不写大量重复的代码,修改起来比较麻烦。
一个更好的选择是建立控件数组。
下面是Button数组的简单实现:Button[] btns = new Button[9];private void ShowButtonArray(){for(int i = 0; i < 9; i++){btns[i] = new Button(); //这一句往往为初学者忽视,须知要创建对象的实例!btns[i].Location = new System.Drawing.Point(100 + 50 * (i % 3),100 + 50 * (i / 3));btns[i].Name = "btnTest";btns[i].Size = new System.Drawing.Size(48, 48);btns[i].Text = i.ToString();btns[i].Click += new System.EventHandler(this.btns_Click); //统一的事件处理this.Controls.Add(btns[i]); //在窗体上呈现控件}}private void btns_Click(object sender, System.EventArgs e){MessageBox.Show(((Button)sender).Text + " was clicked !"); //通过sender判断激发事件的控件}private void Form1_Load(object sender, System.EventArgs e){ShowButtonArray();}事实上,大家只要看一遍“Windows 窗体设计器生成的代码”,就很快能理解.Net创建并呈现控件的过程,从而写出简单的控件数组。
C++BUILDER6.0中控件数组的探讨
一
、
引 言
M Ed1 -> ei h =2 y t H g t 4; My it > d h 60: Ed - Wi t =
M di -> ef =l yE t L t O+i 0 *1 0;
ห้องสมุดไป่ตู้
在编 制应用 程序 中,为 了编 制程序 的方便 、可 扩充 性和 灵活 性 ,常常 要使用 控件 数组 。B ra dC ol n ++B idr作 为程序 开发 u le 工具 ,具 有威 力强 大 的 c ++语 言和 快捷 便利 的可视 化编 程 完美 结合 的优 点 ,但 是在 C + idr的 使用 帮助和 很 多教程 中都 没有 +B le 控 件 数组 及其 事件 响应 的详细 完 整 的说 明。通 过查 阅资料 ,多次 探索 试验 ,了解和 掌握 了控件 数 组 的创建 、使 用和 事件 响应 的两 种 方法 :C +u le +B idr本 身提供 的 T it对象和 同类 控件 数组 。 1s 二、用 T it 象应 用控 件数 组的 方法 ls 对 C +U LE +B IDR中本 身提 供 的有 T it 对象 来使 用控 件数 组 , Ls 类 它不 强求控 件数 组 中的控 件是 同一种类 型 ,可 以组 合任意 类 型的 控 件 ,这 样大 大地方 便 了程序 开 发者 。其 实现 原理 与方法 详 见 以 下 的程序代 码 ,实例 程序 实现 了动 态创 建一 个包含 3个 T dt类 Ei 型控 件和 3 B to 类 型控 件的控 件数 组 , 细论 述 了控件 数组 个 ut n 详 的创 建、修 改 、维护 和事 件 响应 的功 能。
( )添加 全局 的 T i t声 明 ~ Ls
M Ls一 A d(y d t: y i t>d M E i )
在C++Builder5.0中实现ListView的列标头点击排序
列表框控件在C++Builder应用程序中的使用率很高,例如我们经常使用的资源管理器,它有四种常见的式样:显示大图标,小目标,含有图标的多列列表,含有列标头的列表。
我们也经常见到一些扩展功能,例如我们在资源管理器中的文件列表框中,在选用详细资料察看时,用鼠标单击列标头,如大小,则所列文件按大小排序;单机日期,则按文件日期进行排序.这一功能增强了应用程序的可用性,使操作更直观、方便。
在C++Builder中只能根据项目的首列加以排序,不能根据子项目(SubItems)排序。
如果需要根据子项目(SubItems)排序,则必须要自己写代码来实现。
以下描述如何在C++Builder5.0上为列表框添加列标头点击排序功能。
首先新建一个窗体,其名称为Form1,在窗体添加一个列表框控件,其名称为ListView1。
修改ListV iew1属性值,将ViewStyle设置为vsReport。
将SortType 设置为None。
双击ListView1,添加列和子列。
在例子中,我们添加4个列标头,Caption属性分别是:TEST1,TEST2,TEST3,TEST4。
单击ListV iew1的Items属性,通过NEW ITEM, NEW SUBITEM 来添加子列和主列上的内容。
我们可以随意填入一些内容。
以便排序。
分别在ListV iew1ColumnClick,ListView1Compare 事件中添加以下代码:void __fastcall TForm1::ListView1ColumnClick(TObject *Sender,TListColumn *Column){Screen->Cursor=crHourGlass;ColumnToSort = Column->Index;ListView1->CustomSort(NULL,ColumnToSort);Screen->Cursor=crDefault;}void __fastcall TForm1::ListView1Compare(TObject *Sender, TListItem *Item1,TListItem *Item2, int Data, int &Compare){AnsiString a,a1,a2,a3,b,b1,b2,b3;if (ColumnToSort==0)Compare = CompareText(Item1->Caption,Item2->Caption);else{/*点击其它子列时,需要将所点击的列内容从Item1->SubItems[i].Text中抽出,并参照其进行排序。
C#.NET中控件数组的实现
C#.NET中控件数组的实现王娜【摘要】在VB中使用控件数组非常灵活,同样在C#中也可以实现控件数组的功能.从三个方面说明C#如何完成控件数组的功能,即对多个控件赋值,多个控件使用同一个事件处理程序,在运行时动态添加或者删除控件.【期刊名称】《智能计算机与应用》【年(卷),期】2012(002)006【总页数】3页(P73-75)【关键词】C#;控件数组;事件响应;动态添加【作者】王娜【作者单位】华南师范大学增城学院计算机系,广州511363【正文语种】中文【中图分类】TP311.52C#以其强大的功能获得了越来越多的青睐,但是很多学习C#的程序员因为以前熟悉VB的经历,就会时常感觉C#的不方便,因为C#中没有设置控件数组,本文就针对此问题,对于如何在C#中实现数组控件做以探讨。
数组常用于保存一批相关的数据,而后借助循环,就可以很方便地访问数组中的每个元素。
而控件数组则是由一些相同类型的控件组成,控件数组的好处是可以使用相同的名称或索引访问一组控件,这样就不需为每个控件都编写一个事件处理程序,既节省了时间,也利于代码的重用。
下面分别比较VB中的控件数组和C#.NET中的控件数组。
1 VB中的控件数组在VB中,控件数组的生成主要是通过复制的方式,当复制产生一个控件时,VB 就会弹出提示,询问是否要生成控件数组。
如果确定需要使用控件数组,VB就会给这些控件设定相同的名字,控件之间用索引号(Index属性)加以区别。
控件数组中的控件允许有不同的属性设置,但却共享所有的事件。
控件数组的事件比普通控件的事件多配备一个Index参数,该参数用来表明是哪一个控件触发了事件。
下面的VB程序中就使用了控件数组,5个单选钮控件共享同一个Click事件,单选钮通过Index来区分,结果如图1所示,程序代码如下:2 C#中实现控件数组在C#中也可以实现控件数组,下面分别从多个控件赋值、多个控件使用同一个事件处理程序和运行时动态添加或者删除控件三个方面加以说明。
BCB控件数组
C++Builder中实现控件数组的功能Borland C++Builder作为Inprise(原Borland)公司新推出的快速应用程序开发工具(RAD),具有威力强大的C++语言和快捷便利的可视化编程完美结合的优点,遗憾的是其没有直接提供像VB中的控件数组的功能,需要开发者自己编程实现。
VB中的一个控件数组可以允许多个控件共享同一个事件句柄提供了运行期间增加一个控件的机制提供了一种方便的组合控件的方法。
前两项在C++ Builder中早已实现,而且CB更有一个优点。
即不同类型的控件可以使用相同的句柄(只需在相关控件的Object Inspector窗口中的EVENT 事件设置即可)。
C++ Builder中使用了Tlist类对象来组合控件数组,与VB控件数组元素必须为同一类型控件相比较,C++ Builder中的Tlist类对象可以组合任意类型的控件而不必强求同一种类,这样就大大地方便了程序开发者。
例如可以把在不同Panel面板控件上的所有控件组合为一个控件数组。
作者在开发实时监控程序时,应用Tlist类对象创建、维护了多类型的控件数组。
其实现原理与方法详见以下的原程序代码。
实例程序实现了动态创建一个包含8个TEdit类型控件和4个TImage类型控件的控件数组,在程序运行中对所创建的控件进行修改、维护的功能(简单起见,只对TImage控件的Parent属性进行了修改,对控件数组中各个控件的属性修改及事件处理句柄均可依此方法修改)。
1、创建一个新的工程文件(New Application),在Form1上放置两个TPanel 类型的Panel1和Panel2,调整大小合适,再在窗体下方放置四个TButton类型Button1,Button2,Button3,Button4,设置控件属性如下:Button1->Caption=\"新建控件数组\",Button2->Caption=\"改变控件位置\", Button3->Caption=\"还原到原位置\", Button4->Caption=\"退出\";Button2->Enabled=false,Button3->Enabled=false。
C++ Builder中控件数组的实现
C++ Builder中控件数组的实现
常保平;刘凌霞
【期刊名称】《安阳师范学院学报》
【年(卷),期】2003(000)005
【摘要】C++ Builder是目前比较优秀的C++编译器,其推出的可视组件库(VCL)具有可视性好、使用方便的特点,该库包含了windows中常用的部件,但未提供控件数组功能,为此,本文给出了C++ Builder中控件数组实现的原理和方法.
【总页数】2页(P37-38)
【作者】常保平;刘凌霞
【作者单位】安阳师范学院,计算中心,河南,安阳,455000;安阳师范学院,计算中心,河南,安阳,455000
【正文语种】中文
【中图分类】TP311.1
【相关文献】
1.在C++ Builder中实现控件数组 [J], 许天然
2.基于C++ Builder 6.0的IEEE 754中单精度浮点数转换实现 [J], 翟振辉;欧世峰;刘继长;钟全雄;高颖
3.C++ Builder中串口通信的实现 [J], 张捍卫;韦鹏宽
4.C++ Builder中利用坐标空间变换实现旋转类仿真仪表界面设计 [J], 李晓京;胡文东;文治洪;王涛
5.C++ Builder中基于DirectShow的媒体播放器的设计与实现 [J], 王亚荣;顾卫江
因版权原因,仅展示原文概要,查看原文内容请购买。
VC++控件数组的创建
VC++6.0控件数组的创建
在编程中,如果遇到很多的输入框,可以考虑采用控件数组的方式来实现,它省去你很多的麻烦,可以借助于循环方式得到数据的输入。
例如一个矩阵元素的输入。
如果在程序中,一个一个接收,太麻烦了,现在通过控件数组来完成数据的接收。
在其头文件.h中,定义如下
在其.cpp文件中,在函数DoDataExchange()中创建
在定义和创建的过程中一定要注意,不能讲定义部分和创建部分写在
//AFX_DATA里面,原因为:控件数组为自定义代码,VC++不认,所以只能写在外面。
而且,如果写在里面还不支持ClassWizard。
在创建过程中也可以用循环完成。
定义和创建完成后,剩下的就是应用了,很方便,这里不再写出。
- 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 + + ) {