首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> 语言基础 >> 正文
C++ Builder 初学问与答(13)
作者:ch_build…    文章来源:转载    更新时间:2006-7-23 17:28:55


  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;

}


//------------------------------
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!") ;

}


//------------------------------
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"


//------------------------------
#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++ Builder 初学问与答(12)
C++ Builder初学问与答7
实现字节对齐
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号