动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ C/C++教程 ]的信息



本月文章推荐
.C++ 通过WIN32 API 获取逻辑磁盘.
.实例讲解 - C 语.
.不规则窗体组件源代码.
.实现C语言高效编程的四大秘技.
.C++语言学习之从结构到类.
.制作透明窗体.
.C语言中的位域的使用.
.高手讲解:探索C++的秘密之详解e.
.C/C++ 编译器和调试器以及静态库.
.用VisualC++6.0递归查找目录树.
.控制系统菜单.
.第七章 图 题解.
.C++程序设计从零开始之指针.
.《c语言程序设计》第一章: C语言.
.C++之静态联编和动态联编.
.孔明棋,你玩过吗.
.VB利用API函数设定屏幕颜色数.
.PE文件格式详解(5).
.ListBox自画的另一种效果.
.用Delphi 实现自定义颜色对话框及.

C++ Builder 初学问与答(七)

发表日期:2008-3-8 |


  53)问:能介绍一下TTreeNodes与TTreeNode?   答:在BCB中,树状视图的节点是通过TTreeNodes对象来治理的,通过这个对象可以对树状视图进行动态的增加、删除、插入、移动节点等操作。而每一个节点都是一个TTreeNode对象。   TTreeNode的主要属性和函数:
  Count:这个属性用来返回某个节点所拥有的子节点的数目。它不包括其子节点。   Item:其声明为:_property TTreeNode* Item[int Index];这个属性用来访问该节点的某个子节点。其中参数Index为其子节点在所有子节点中的位置。   Index:这个属性用来返回该节点在其父节点的所有子节点中的位置。   Text:这个属性用来设置或者返回节点的标签。   Delete:这个函数用来删除该节点本身。   DeleteChildren:这个函数用来删除该节点的所有子节点。   EditText:这个函数用来对节点进行就地编辑。   IndexOf:其声明为:int _fastcall IndexOf(TTreeNode* Value);这个函数将返回该节点的某个子节点的序号。子节点由参数value指定。假如参数value指定的节点不是该节点的子节点,函数将返回-1。   TTreeNodes的主要属性和函数:   Count:这个属性用来返回树状视图中节点的数目。   Add:其声明为:TTreeNode *_fastcall Add(TTreeNode,const System::AnsiString S);这个函数将在树状视图中增加一个节点,新节点成为参数Node 指定的节点的父节点的最后一个子节点,参数S为新节点的标签。   AddChild:其声明为: TTreeNode *_fastcall AddChild(TTreeNode,const System::AnsiString S);增加的新节点为参数Node指定的节点的最后一个子节点。   AddChildFirst:其声明为: TTreeNode *_fastcall AddChildFirst(TTreeNode,const System::AnsiString S);这个函数与AddChild不同的是新增加的节点为Node节点的第一个子节点。   AddFirst :其声明为:TTreeNode *_fastcall AddFirst(TTreeNode,const System::AnsiString S);这个函数与Add 相似,不同的是新节点成为Node节点的父节点的第一个子节点。   Clear:这个函数将把整个树状视图都清空。   Delete:其声明:void _fastcall Delete(TTreeNode *Node);这个函数将删除参数Node 指定的节点。   Insert:其声明为:TTreeNode _fastcall Insert (TTreeNode* Node,const System::AnsiString S);这个函数用来在参数Node 指定的节点之后插入一个新的节点,新节点的标签由参数S指定。   7.图形列表组件ListView
  54)问:TreeView组件能够实现资源治理器左边显示区的内容,可是它右边显示区能将列表用各种不同的方式显示,例如大图标方式、小图标方式、简单列表方式和具体列表方式。这在C++Builder应该怎样来实现?   答:这可以用ListView组件来实现,ListView组件从功能上讲与列表框相似,但是从组件的属性来看与TreeView相似。ListTiew组件所建立的列表可以用各种不同的方式显示,例如大图标方式、小图标方式、简单列表方式和具体列表方式。   ListView组件中的一部分属性与TreeView组件中的属性是相同的,例如Items,StateImages等。还有一些属性是ListView特有的。   更多文章 更多内容请看C/C++技术专题专题,或   LargeImages属性用来设置存放大图标的图标列表,当列表处于大图标显示方式时,列表使用这个图标列表中的图标显示。   SmallImages属性用来设置存放小图标的图标列表,当列表处于小图标显示方式时,列表使用这个图标列表中的图标显示。
  MultiSelected属性可确定用户是否可以同时选择多个项目。缺省值为false。   属性ViewStyle确定了显示风格,可以取这样一些值。   vsIcon:列表以大图标方式显示,可以进行拖放操作。只显示第一层节点,放置方式由Arrangement决定。   vsSmallIcon:列表以小图标方式显示,可以进行拖放操作。只显示第一层节点,放置方式由Arrangement决定。   vsList:以简单列表的方式显示,不能进行拖放操作。节点是竖向放置的,只显示第一层节点,Arrangement不起作用。   vsReport:以具体列表的方式显示,显示的信息可以分成多列。最左边的列显示图标和文字,其余的列显示具体信息。节点是竖向放置的,每一层均已经展开,只有此时Columns的设置才起作用,Arrangement不起作用。   属性Columns  当属性ViewStyle被设置为vsReport时,列表中的每一项可以分成多列显示,这个属性用于设置列数和列的标题。   在设计时,按下Columns属性Value列中的省略号按钮可以打开一个ListView Columns编辑器,在这个编辑器中可以生成和编辑列及列的标题。   属性ColumnClick的值为True时,列表中的标题可以作为按钮使用, 这个属性最常见的应用是在Windows 95的资源治理器中,单击文件名或者其它几个列标题,列表中的文件就会按照文件名重新排序。   属性Items 包含列表中所有项目的集合。与TreeView组件中的Items属性类似,这个属性也有一个项目编辑器,你可以使用这个编辑器在设计时增加、删除项目,设置项目的图标索引以及标题等。它的使用方法与TreeView组件的Items编辑器基本相同。   IconOptions属性用来设置图标的显示方式。它还包含几个子属性:   (1)Arrangement属性:当该属性等于iaTop时,表示图标从左到右排列在ListView组件的顶部;等于iaLeft时,表示图标从上到下排列在组件的左边。   (2)AutoArrange属性:等于True时,表示增加、删除或移动图标时图标将自动重排。   (3)WrapText属性:等于True时,表示当项目的标题超过图标的宽度时标题将换行。   此外,还有运行时态属性   Selected属性用来返回列表中被选中的项目。   TopItem属性用来返回列表中当前可见的最顶端的项目。   55)问:请您编写一个程序来帮助我理解和记忆ListView控件好吗?   答:好的,选择File菜单的New Application菜单项,打开一个空的工程,在窗体上放置一个ListView控件,两个ImageList控件,一个ListBox控件。   选中ImageList1控件,将它的Height和Width属性设置为32。双击ImageList1控件,打开图像列表编辑框。点击Add按钮,选择一个大图标文件。点击打开按钮。然后点击OK按钮。同样方法给ImageList2控件加上小图标。选择TreeView控件,将它的LargeImages属性修改为ImageList1。   更多文章 更多内容请看C/C++技术专题专题,或
  将它的SmallImages属性修改为ImageList2。在ListView控件上点击鼠标右键,选择Columns Editor选项(当然我们只要点击属性Columns右边的“…”就可以了)。弹出Columns编辑对话框。点击Add New工具按钮加入四个列表,选中它们,将它们的caption属性修改为名称、大小、类型、修改时间。   关闭列表编辑对话框。   在ListView控件上点击鼠标右键(同样我们只要点击 Itmes属性右边的“…”也一样),选择Items Editor选项。弹出Items编辑对话框(与TreeView的Items Editor差不多),输入树型结构文档。在这里,点击“New Item”按钮可以新建一个项,“NewSubItem”按钮用来设置这个项的子项。“Delete”用来删除某个项,包括它的子项。项司性编辑框中,Caption为这个项的标题,另外两个为项的图标。   编写列表框的OnClick事件代码如下:

void __fastcall TForm1::ListBox1Click(TObject *Sender) {  switch(ListBox1->ItemIndex)    {      case 0:    ListView1->ViewStyle=vsIcon;                 break;      case 1:    ListView1->ViewStyle=vsSmallIcon;                 break;      case 2:    ListView1->ViewStyle=vsList;                 break;      case 3:    ListView1->ViewStyle=vsReport;                 break;    } }   //------------------------------
  把ListView中的ViewStyle属性改为vsReport,否则你将得不到上面的那种显示方式。   最后,编译并运行这个程序,选择不同的类型,我们可以看到TreeView控件的效果。   56)问:在TreeView、ListView中的图标治理能再说一下吗?   答:图形列表组件很难理解的,主要问题是不太轻易把握它使用图标的方式。图形列表组件使用一个名为ImageList的组件治理所有的图标,ImageList给每个图标提供一个索引号,这样在TreeView或ListView组件引用时就不必指出图标的名字而直接指定索引号就可以了。用ImageList集中治理图标,用户使用图标索引号的方式的确从某种角度减轻了编程人员的负担,但是也使得他们在编程时必须记住一大堆编号代表的各是哪一种图标,这就在一定程度上削弱了ImageList的优势,也许在C++Builder以后的版本中能有更好的方法。   57)问:如何动态的创建一个列表视图呢?   答:我们举例说明。我先建立如图的界面。   更多文章 更多内容请看C/C++技术专题专题,或
  并编写如下的代码:
//------------------------------
#include <vcl.h> #pragma hdrstop #include "Unit1.h" //------------------------------
#pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)         : TForm(Owner) { } //------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) {  const char Names[6][3][10] =    {{"广东省","广州市","华南"},     {"上海市", "上海市","华东"},     {"北京市", "北京市","华北"},     {"辽宁省", "沈阳市","东北"},     {"湖北省", "武汉市","华中"},     {"云南省", "昆明市","西南"}};//预备各项的文字   TListColumn  *NewColumn;//创建一个栏   TListItem  *ListItem;//创建一个Items   ListView1->ViewStyle = vsReport;//定义显示方式   Button3->Enabled=false;   NewColumn = ListView1->Columns->Add();//增加栏   NewColumn->Caption = "省份";//添置栏的名称   NewColumn = ListView1->Columns->Add();   NewColumn->Caption = "省会";     更多文章 更多内容请看C/C++技术专题专题,或
 

  NewColumn = ListView1->Columns->Add();   NewColumn->Caption = "方位";   for (int i = 0; i < 6; i++)   {     ListItem = ListView1->Items->Add();     ListItem->Caption = Names[i][0];//添置父节点     ListItem->SubItems->Add(Names[i][1]);//添置子节点     ListItem->SubItems->Add(Names[i][2]);   } }/*此处有些朋友总感觉为什么还要创建TListColumn  *NewColumn;     TListItem  *ListItem;其实我们只要这样想就可以了,我们再手功创建时打开Columns、Items时等于又创建了一个项目,他们并不存在,我们却要用,所以只能用这种方法来动态创建了J*/
//------------------------------ void __fastcall TForm1::Button1Click(TObject *Sender) {  TListItem  *temp;  temp=ListView1->Items->Add();  temp->Caption=Edit1->Text;  temp->SubItems->Add(Edit2->Text);  temp->SubItems->Add(Edit3->Text); } //------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender) {  ListView1->Items->Clear();        } //------------------------------
void __fastcall TForm1::RadioButton1Click(TObject *Sender) {  ListView1->ViewStyle = vsReport;  Button3->Enabled=false; }     更多文章 更多内容请看C/C++技术专题专题,或
 
//------------------------------
void __fastcall TForm1::RadioButton2Click(TObject *Sender) {  ListView1->ViewStyle = vsIcon;  Button3->Enabled=true; } //------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender) {  ListView1->AlphaSort(); //这个函数的作用是把列表视图中的项按照它们的标签字母顺序排列,成功返回true。       } //------------------------------
  58)问:我要想对TreeView、ListView里面的项进行操作如何来进行呢?   答:我们一般都是通过OnChange或OnChangeing事件来完成的,我们通过一个例子来看一下他们的应用及区别,我们在窗体中放上一个TreeView和一个Memo组件,并在TreeView的OnChange和OnChangeing分别写如下代码:
//------------------------------
#include <vcl.h> #pragma hdrstop #include "Unit1.h" //------------------------------
#pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)         : TForm(Owner) { } //------------------------------
void __fastcall TForm1::tvwChange(TObject *Sender, TTreeNode *Node) {         if(Node->Text=="辽宁")         Memo1->Lines->Add("I'm change!") ; }

    更多文章 更多内容请看C/C++技术专题专题,或
 
//------------------------------
void __fastcall TForm1::tvwChangeing(TObject *Sender, TTreeNode *Node,       bool &AllowChange) {         AllowChange=false;         if(Node->Text=="辽宁")         Memo1->Lines->Add("I'm changeing!") ; } //------------------------------
   运行效果如下:     只有OnChangeing起了作用,为什么呢?再看下面代码: //------------------------------
#include <vcl.h> #pragma hdrstop #include "Unit1.h"     更多文章 更多内容请看C/C++技术专题专题,或
 
//------------------------------
#pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //------------------------------ __fastcall TForm1::TForm1(TComponent* Owner)         : TForm(Owner) { } //------------------------------ void __fastcall TForm1::tvwChange(TObject *Sender, TTreeNode *Node) {         if(Node->Text=="辽宁")         Memo1->Lines->Add("I'm change!") ; } //------------------------------ void __fastcall TForm1::tvwChangeing(TObject *Sender, TTreeNode *Node,       bool &AllowChange) {         //AllowChange=false;这与把此句写成AllowChange=true是一样的         if(Node->Text=="辽宁")         Memo1->Lines->Add("I'm changeing!") ;      两个事件都起作用了,并且OnChangeing先于Onchange发生,所以原因很显然:这一切都是OnChangeing的参数AllowChange造成的,所以要注重对这个参数的使用。    在ListView中只要把上面的Node->Text改成Item->Caption就可以了。 (待续)

更多文章 更多内容请看C/C++技术专题专题,或
上一篇:C++ Builder 初学问与答(八) 人气:345
下一篇:C++ Builder 初学问与答(六) 人气:341
浏览全部C/C++的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号