亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++ Builder 初學問與答(七)

2019-11-17 05:05:57
字體:
來源:轉載
供稿:網友
  53)問:能介紹一下TTreeNodes與TTreeNode?  答:在BCB中,樹狀視圖的節點是通過TTreeNodes對象來治理的,通過這個對象可以對樹狀視圖進行動態的增加、刪除、插入、移動節點等操作。而每一個節點都是一個TTreeNode對象?! TreeNode的主要屬性和函數:
  Count:這個屬性用來返回某個節點所擁有的子節點的數目。它不包括其子節點。  Item:其聲明為:_PRoperty TTreeNode* Item[int Index];這個屬性用來訪問該節點的某個子節點。其中參數Index為其子節點在所有子節點中的位置。  Index:這個屬性用來返回該節點在其父節點的所有子節點中的位置?! ext:這個屬性用來設置或者返回節點的標簽?! elete:這個函數用來刪除該節點本身?! eleteChildren:這個函數用來刪除該節點的所有子節點。  EditText:這個函數用來對節點進行就地編輯?! ndexOf:其聲明為:int _fastcall IndexOf(TTreeNode* Value);這個函數將返回該節點的某個子節點的序號。子節點由參數value指定。假如參數value指定的節點不是該節點的子節點,函數將返回-1。  TTreeNodes的主要屬性和函數:  Count:這個屬性用來返回樹狀視圖中節點的數目?! dd:其聲明為:TTreeNode *_fastcall Add(TTreeNode,const System::AnsiString S);這個函數將在樹狀視圖中增加一個節點,新節點成為參數Node 指定的節點的父節點的最后一個子節點,參數S為新節點的標簽?! ddChild:其聲明為: TTreeNode *_fastcall AddChild(TTreeNode,const System::AnsiString S);增加的新節點為參數Node指定的節點的最后一個子節點?! ddChildFirst:其聲明為: TTreeNode *_fastcall AddChildFirst(TTreeNode,const System::AnsiString S);這個函數與AddChild不同的是新增加的節點為Node節點的第一個子節點?! ddFirst :其聲明為:TTreeNode *_fastcall AddFirst(TTreeNode,const System::AnsiString S);這個函數與Add 相似,不同的是新節點成為Node節點的父節點的第一個子節點。  Clear:這個函數將把整個樹狀視圖都清空?! elete:其聲明:void _fastcall Delete(TTreeNode *Node);這個函數將刪除參數Node 指定的節點。  Insert:其聲明為:TTreeNode _fastcall Insert (TTreeNode* Node,const System::AnsiString S);這個函數用來在參數Node 指定的節點之后插入一個新的節點,新節點的標簽由參數S指定?! ?.圖形列表組件ListView
  54)問:TreeView組件能夠實現資源治理器左邊顯示區的內容,可是它右邊顯示區能將列表用各種不同的方式顯示,例如大圖標方式、小圖標方式、簡單列表方式和具體列表方式。這在C++Builder應該怎樣來實現?  答:這可以用ListView組件來實現,ListView組件從功能上講與列表框相似,但是從組件的屬性來看與TreeView相似。ListTiew組件所建立的列表可以用各種不同的方式顯示,例如大圖標方式、小圖標方式、簡單列表方式和具體列表方式?! istView組件中的一部分屬性與TreeView組件中的屬性是相同的,例如Items,StateImages等。還有一些屬性是ListView特有的?! ?更多文章 更多內容請看C/C++技術專題專題,或   LargeImages屬性用來設置存放大圖標的圖標列表,當列表處于大圖標顯示方式時,列表使用這個圖標列表中的圖標顯示?! mallImages屬性用來設置存放小圖標的圖標列表,當列表處于小圖標顯示方式時,列表使用這個圖標列表中的圖標顯示。
  MultiSelected屬性可確定用戶是否可以同時選擇多個項目。缺省值為false?! 傩訴iewStyle確定了顯示風格,可以取這樣一些值?! sIcon:列表以大圖標方式顯示,可以進行拖放操作。只顯示第一層節點,放置方式由Arrangement決定?! sSmallIcon:列表以小圖標方式顯示,可以進行拖放操作。只顯示第一層節點,放置方式由Arrangement決定。  vsList:以簡單列表的方式顯示,不能進行拖放操作。節點是豎向放置的,只顯示第一層節點,Arrangement不起作用?! sReport:以具體列表的方式顯示,顯示的信息可以分成多列。最左邊的列顯示圖標和文字,其余的列顯示具體信息。節點是豎向放置的,每一層均已經展開,只有此時Columns的設置才起作用,Arrangement不起作用?! 傩訡olumns  當屬性ViewStyle被設置為vsReport時,列表中的每一項可以分成多列顯示,這個屬性用于設置列數和列的標題?! ≡谠O計時,按下Columns屬性Value列中的省略號按鈕可以打開一個ListView Columns編輯器,在這個編輯器中可以生成和編輯列及列的標題?! 傩訡olumnClick的值為True時,列表中的標題可以作為按鈕使用, 這個屬性最常見的應用是在Windows 95的資源治理器中,單擊文件名或者其它幾個列標題,列表中的文件就會按照文件名重新排序?! 傩訧tems 包含列表中所有項目的集合。與TreeView組件中的Items屬性類似,這個屬性也有一個項目編輯器,你可以使用這個編輯器在設計時增加、刪除項目,設置項目的圖標索引以及標題等。它的使用方法與TreeView組件的Items編輯器基本相同?! conOptions屬性用來設置圖標的顯示方式。它還包含幾個子屬性: ?。?)Arrangement屬性:當該屬性等于iaTop時,表示圖標從左到右排列在ListView組件的頂部;等于iaLeft時,表示圖標從上到下排列在組件的左邊?! 。?)AutoArrange屬性:等于True時,表示增加、刪除或移動圖標時圖標將自動重排?! 。?)WrapText屬性:等于True時,表示當項目的標題超過圖標的寬度時標題將換行?! 〈送?,還有運行時態屬性  Selected屬性用來返回列表中被選中的項目?! opItem屬性用來返回列表中當前可見的最頂端的項目?! ?5)問:請您編寫一個程序來幫助我理解和記憶ListView控件好嗎?  答:好的,選擇File菜單的New application菜單項,打開一個空的工程,在窗體上放置一個ListView控件,兩個ImageList控件,一個ListBox控件?! ∵x中ImageList1控件,將它的Height和Width屬性設置為32。雙擊ImageList1控件,打開圖像列表編輯框。點擊Add按鈕,選擇一個大圖標文件。點擊打開按鈕。然后點擊OK按鈕。同樣方法給ImageList2控件加上小圖標。選擇TreeView控件,將它的LargeImages屬性修改為ImageList1?! ?更多文章 更多內容請看C/C++技術專題專題,或
  將它的SmallImages屬性修改為ImageList2。在ListView控件上點擊鼠標右鍵,選擇Columns Editor選項(當然我們只要點擊屬性Columns右邊的“…”就可以了)。彈出Columns編輯對話框。點擊Add New工具按鈕加入四個列表,選中它們,將它們的caption屬性修改為名稱、大小、類型、修改時間?! £P閉列表編輯對話框?! ≡贚istView控件上點擊鼠標右鍵(同樣我們只要點擊 Itmes屬性右邊的“…”也一樣),選擇Items Editor選項。彈出Items編輯對話框(與TreeView的Items Editor差不多),輸入樹型結構文檔。在這里,點擊“New Item”按鈕可以新建一個項,“NewSubItem”按鈕用來設置這個項的子項?!癉elete”用來刪除某個項,包括它的子項。項司性編輯框中,Caption為這個項的標題,另外兩個為項的圖標?! 【帉懥斜砜虻腛nClick事件代碼如下:

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以后的版本中能有更好的方法?! ?7)問:如何動態的創建一個列表視圖呢?  答:我們舉例說明。我先建立如圖的界面。   更多文章 更多內容請看C/C++技術專題專題,或
  并編寫如下的代碼:
//------------------------------
#include <vcl.h>#pragma hdrstop#include "Unit1.h"http://------------------------------
#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"http://------------------------------
#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++技術專題專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本午夜在线亚洲.国产| 国产亚洲欧美一区| 久久久女女女女999久久| 亚洲精品国产精品久久清纯直播| 成人疯狂猛交xxx| 欧美国产日韩xxxxx| 日本精品免费一区二区三区| 久久婷婷国产麻豆91天堂| 国产精品久久久久久久久久久久久久| 久久视频在线免费观看| 国产精品黄页免费高清在线观看| 欧美成人免费视频| 国产精品久久久久久久久粉嫩av| 亚洲男人的天堂在线| 亚洲乱码国产乱码精品精天堂| 日本欧美一二三区| 久久午夜a级毛片| 国产一区二区三区视频免费| 国产精品普通话| 欧美又大又硬又粗bbbbb| 国产精品r级在线| 欧美日韩成人在线视频| 午夜精品久久久久久久久久久久| 国产精品老牛影院在线观看| 日本a级片电影一区二区| 一区二区日韩精品| 久久人人爽人人爽人人片亚洲| 亚洲最大激情中文字幕| 国产国产精品人在线视| 亚洲男人的天堂在线| 精品人伦一区二区三区蜜桃网站| 国产精品成av人在线视午夜片| 国产精品美女在线| 亚洲女人天堂网| 欧美午夜电影在线| 亚洲成人在线网| 中文字幕精品影院| 日韩免费黄色av| 欧美大尺度在线观看| 性色av一区二区三区红粉影视| 精品欧美激情精品一区| 国产国产精品人在线视| 国产成人avxxxxx在线看| 国产精品伦子伦免费视频| 日韩在线观看电影| 91免费高清视频| 国产精品午夜一区二区欲梦| 国产精品极品在线| 一本一道久久a久久精品逆3p| 欧美日韩国产在线看| 91精品久久久久久久久久另类| 国产精品在线看| 日韩久久精品成人| 欧美色图在线视频| 国产精品网站大全| 成人精品福利视频| 国产成人精品a视频一区www| 福利精品视频在线| 国产精品免费视频xxxx| 日韩欧美黄色动漫| 国产免费一区视频观看免费| 国产亚洲综合久久| 丰满岳妇乱一区二区三区| 全亚洲最色的网站在线观看| 国产999视频| 亚洲视频在线视频| 日韩精品中文字幕在线| 精品人伦一区二区三区蜜桃免费| 欧美怡春院一区二区三区| 亚洲一区二区三区成人在线视频精品| 欧美成人剧情片在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 久久综合色88| 亚洲欧美日韩第一区| 久久精品亚洲一区| 一区二区三区国产在线观看| 久久人人爽国产| 精品视频偷偷看在线观看| 97热在线精品视频在线观看| 久久男人的天堂| 国产精品色视频| 精品亚洲一区二区三区在线观看| 亚洲欧美一区二区精品久久久| 久久九九免费视频| 欧美日韩免费看| 91免费视频国产| 午夜精品久久久久久久白皮肤| 国产999在线观看| 青草热久免费精品视频| 亚洲精品视频网上网址在线观看| 68精品国产免费久久久久久婷婷| 精品偷拍一区二区三区在线看| 日韩电影在线观看永久视频免费网站| 亚洲精品一区久久久久久| 九九综合九九综合| 欧美日韩第一页| 欧美午夜精品久久久久久久| 亚洲精品久久久久久久久| 亚洲精品美女在线观看播放| 欧美亚洲激情视频| 色综合天天狠天天透天天伊人| 日韩中文字幕不卡视频| 亚洲精品免费网站| 亚洲最大av在线| 2025国产精品视频| 亚洲精品videossex少妇| 欧美一级在线播放| 欧美电影院免费观看| 日本中文字幕成人| 国产亚洲aⅴaaaaaa毛片| 日韩中文av在线| 成人a在线观看| 久久大大胆人体| 中文字幕亚洲字幕| 国产日产欧美精品| 久久久99久久精品女同性| 国产精品久久久久久av福利软件| 日韩美女主播视频| 久久九九全国免费精品观看| 精品国产网站地址| 91精品国产91久久久久久不卡| 91成人在线播放| 欧美在线视频a| 久久夜色精品国产欧美乱| 亚洲欧美中文日韩在线| 亚洲国产一区二区三区四区| 欧美有码在线视频| 欧美夫妻性生活视频| 欧美性猛交xxxx免费看久久久| 中文字幕不卡在线视频极品| 亚洲一级免费视频| 亚洲天堂男人天堂女人天堂| 久久久久免费精品国产| 亚洲国模精品一区| 亚洲在线视频福利| 亚洲欧美日韩直播| 欧美日韩免费观看中文| 亚洲精品网址在线观看| www.国产精品一二区| 亚洲网在线观看| 亚洲欧美一区二区三区久久| 国产精品久久一区| 亚洲国产精品资源| 国产日本欧美一区二区三区在线| 中文字幕精品久久| 成人性生交大片免费观看嘿嘿视频| 国产精品久久视频| 热久久这里只有| 日韩有码在线观看| 久久久国产精品免费| 国产精品免费福利| 久久精品一区中文字幕| 91久久精品美女| 日韩精品在线视频美女| 亚洲黄色有码视频| 中文字幕日韩精品在线| 91精品久久久久久久久久入口| 国产视频久久久久| 欧美一级大片在线免费观看| 亚洲国产一区二区三区四区| 欧美一级电影在线| 欧美视频中文字幕在线| 亚洲人线精品午夜| 精品一区二区三区电影|