新的一夜又开始了,我还得继续我的闲聊。现在的男人真的很累,上班,回家做饭,也许晚上还要和朋友出去喝酒,没办法哪样你不得去做,所以吓得我连婚都不敢结:P:P这些可别让女朋友看到,看到那就完了:)
Items并不只是那几类组件特有的属性,她也许还会是ListBox、CheckListBox、TreeView或ListView等几个组件的属性,而不可能是文本性质组件的属性,在文本属性是用的是Lines,Lines我会在以后说。说白了,就是你用的若不是数据流,那用的就应该是Items了:P
在新建的窗体中放置一个ListBox组件或CheckListBox组件,我们点击Items属性右边的“…”来初始化它们的选项,你会发现到她们是一样的,在编辑器中都没有行号,昨天我说过的话你也许不会马上忘记吧,没有行号,那就是不可能用Items[]来访问每一行的内容,但到是可以用Add之类的来动态调用她们,象下面这样的程序段你就应该明白了:)
void _fastcall TForm1::Button1Click(Tobject *Sender)
{
if(Edit->Text!=””)
{
ListBox1->Items->Add(Edit1->Text);
……
}
在这两个组件中同样具有ItemsIndex,由些看来她们与RadioGroup中组件差不多,事实也是这样的:P
在TreeView和ListViex中也各有一个Items 属性,让我们来看一下她们是如何来工作的。
在TreeView中,我们可以通过Items来建立和访问每一个节点。我们只要点击Items属性右边的“…”或双击窗体上的TreeView组件,就可以进入列表视图编辑器中,在这个编辑器中我们用“New Item”按钮用来新建一个并列的节点。选择某个节点后,点击“New SubItem”按钮来创建这个节点的子节点。“Delete”按钮用来选择某个节点,如果这个节点有子节点,将同时删除。Load按钮用来从文件中读入一个树状视图。在右边Text 属性用来指定所选 节点的标题。Image Index属性用来指定节点左边显示的图标在列表视图中的序号。Select Index属性项用来指定节点被选择时显示的图标在列表视图中的序号。State Index属性用来指定表示节点状态的图标在图象列表中的序号。
在ListView中我们点击Items属性项右边的“…”,会弹出一个列表视图的编辑器,这与TreeView中的差不多,自然她们的用法差不多,但在她们中用Items[int i]->Text语句永远是不对。因为刚才我们没有看到编辑器中有行号,对吧:P
当然我们也可以动态的编辑她们,如何编辑呢?我们在编辑器中就应该看到编辑她的方法 ,这也是我为什么要反复说要查看编辑器状态的原因:)
我们要动态增加就可以用以下的程序段:
void _fastcall TForm1::btnInsertClick(TObject *Sender)
{
TListItem *temp;//定义一个ListView中的Items类型,这里的她是TListItem类
temp=ListView1->Items->Add();//给Temp一个值,这里要增加,所以选择了Add()函数,哈哈,你说现在是不是程序想调用ListView Items Editor编辑器New Item
temp->Caption=Edit1->Text;//动态创建一个节点,即然你增加了一个节点,那这个节点的标题你当然应该写在Caption中了,这个Caption你在编辑器中看到过吧:)
temp->SubItems->Add(Edit2->Text);//动态创建一个子节点,其实是调用了New SubItem ,SubItems出现在编辑器的左侧
……//继续创建子节点
}
当然在ListView中有一个ViewStyle属性,你若没有把她改成vsReport,那你无论如何也不会在你的ViewStyle中显示出你在Columns中编辑的内容,而这个Columns中却有行号,她能不能动态创建呢?(从我们上面的分析你不难得出结论)
同样一个Items,为什么会有不一样的用法,主要因为她们不全是Tstrings的直接对象,象今天说的这个两个就分别属于TreeNodest与ListItems的两个不同的对象,但造成各种不同使用方法的根本原因完全是由虚函数造成的,我们可以在我们的程序中也可大量的使用这样的手段来丰富我们的程序。
写到这里Items算是写完了,我声明我这里不是来写什么技术文章,只是与大家聊一下心得,专业的文章你可以看书籍了,用不着看我的文章,我这篇文章昨天就应该写好,但看到大家的评语,一夜也没有睡好,可能是每个人的写作风格与写作目的不同,我写作的目的只是让那些没迈入到的BCB中的朋友能快速入门,不讲什么技术,只说一些入门(或自学)的方法。
我学BCB时间是不长,我从大二时开始学C,到今天才九年,那时喜爱C,在 DOS系统下用TC来编写音乐、图形、还有扫雷那样的小程序,快乐极了,但用C来编写一个应用程序是有些不易,到是用foxbase编写的程序比较容易,我觉得最能代表我foxbase成果的是一套学生成绩处理软件,但他的原代码竞然有50多页。工作后发现DOS没人用了,变成了WIN,发觉WIN的方便(不方便我也得学,因为没有人用DOS了),没办法,我原来的程序也没有人用了,象上面说的那个软件,不变成WIN下的程序是不行的,我最早是用EXCEL改写成的,学习WIN下的编程,我没有去学VFP,而选择了我喜爱的C,VC与BCB我想了好久,最终选择了那个和TC一个开发公司的BCB,也许这是一种错误,当时买了一些专业性很强的书,看了好久,也没看明白,到是一个好友的开导让我重新开始认识BCB。今天可能用BCB编了一些程序有点自不量力,在这里乱侃,但真的,我没有什么坏意,我也不想丢什么BCB人的脸,我只想说学BCB不一定非从专业性很强的书籍开始,重要的是你要学会用使用,因为我们不一定都想成为理论高手,而只是想成为一名程序员!当年对那些苦涩的语句,我是如何看明白的呢?没有一本专业书上有,那时你去哪了呢?你写我来看呀!我写的不好,你可以写呀,象我这样七十年代初期出生的人为什么会有这样的想法,你清楚吗?不清楚看看我在《榕树下》发表的文章《迷茫都市》(http://www.rongshuxia.com:8033/viewart.rs?aid=1423668)你再说吧:P
有话说男儿不落泪,可我写出这些东西,老编也不给我钱,我为什么要写?至于为什么置于顶,我想编辑认为她还是有点用吧,我真是强打精神来写出这篇文章的,原计划要写很久,现在只能写到这了,等有心情再说吧。至于《幽雅BDE》,我会尽快写完的,那个原计划要写《深入QR》更是过时的文章,写了也不准备在这里发表了,怕你们这样的高手骂:P
今天为什么还要继续写,因为明天我可以不写,但不能话不说完就结束,那有点太对不起自己了:(
好在我文章不是抄的,写的完全是自己的感受。可是我也不明白,我也写过专业性较强的文章象《VCL中的堆与栈》、《在BCB中轻松使用ActiveX》却为什么没人说三到四呢?真想不明白?
总算Items结束了,我可以不写了,高手你们闭口吧,我不写了行吧?
最后感谢编辑对我文章的厚爱!
更要感谢那些骂我的网上朋友,行了,你写吧,我不会骂,我是有点装,应该被骂:(