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

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

ListView的排序

2019-11-17 05:20:23
字體:
來源:轉載
供稿:網友

  ---- 列表框控件在應用程序中的使用率很高,在windows中經常見到,它有四種常見的式樣,分別具有顯示大圖標,小目標,含有圖標的多列列表,含有列標頭的列表。我們也經常見到一些擴展功能,例如我們在資源治理器中的文件列表框中,在選用具體資料察看時,用鼠標單擊列標頭,如大小,則所列文件按大小排序;單機日期,則按文件日期進行排序.這一功能增強了應用程序的可用性,使操作更直觀、方便。筆者在以Borland C++Builder 3.0(以下簡稱BCB)作為開發平臺實現這一功能時發現,僅通過設定列表框控件的屬性值的方法,只能根據項目的首列加以排序,不能根據子項目(SubItems)排序。因此,我們需要編寫自己的代碼以完成這一功能。
---- 以下描述如何在BCB開發平臺上為列表框添加列標頭點擊排序功能,當我們點擊的次數為奇數時,所列內容以降序排列;當我們點擊的次數為偶數時,所列內容以升序排列。
---- 首先將一個列表框控件安放在Form上,并將其名稱設為ListView1。然后在其中添加若干項目作為試驗對象。方法為:用鼠標右鍵單擊控件,在彈出的對話框中選擇Columns Editor用來添加列和子列;再選Items Editor用來添加項目(包含子列和主列上的內容)。
---- 為了顯示出子項目內容,需要在Object Inspector中修改ListView屬性值,將ViewStyle設置為vsReport。另外,還必須將SortType設置為None,以使我們的排序程序起作用。這樣,程序的外觀已經符合需要,下面應該增加排序功能的代碼了。為此需要添加類的方法到源代碼中。添加位置為:

void __fastcall TForm1::ListView1ColumnClick
(TObject *Sender,
TListColumn *Column)
---- 在該方法的傳遞參數中,指向TListColumn類型的指針Column中含有用戶所點擊的列的信息。
---- 下面先定義變量:
int i,m,n,j;
static bool od=true;
od=!od;
---- od代表用戶點擊的次數,奇數時為true,偶數時為false。注重此處od的存儲類型設定為static,可以保證其數值的連續性。用n記錄用戶點擊的列號,m記錄列表框中的總項目數。
n=Column- >Index;
m=ListView1- >Items- >Count;
---- 在列表框中臨時添加一個項目作為排序中交換用的臨時空間。
ListView1- >Items- >Add();
---- 當用戶點擊第一列列標頭時,排序按ListView1- >Items- >Item[i]- >Caption進行,與其它列不同,所以要單獨進行排序。
if (n==0)
{
for(i=0;i< m-1;i++)
for(j=i+1;j< m;j++)
if(od)
{
if(ListView1- >Items- >Item[i]- >Caption >
ListView1- >Items- >Item[j]- >Caption)
{
ListView1- >Items- >Item[m]=
ListView1- >Items- >Item[i];
ListView1- >Items- >Item[i]=
ListView1- >Items- >Item[j];
ListView1- >Items- >Item[j]=
ListView1- >Items- >Item[m];
}
}
else
{
if(ListView1- >Items- >Item[i]- >Caption<
ListView1- >Items- >Item[j]- >Caption)
{
ListView1- >Items- >Item[m]=
ListView1- >Items- >Item[i];
ListView1- >Items- >Item[i]=
ListView1- >Items- >Item[j];
ListView1- >Items- >Item[j]=
ListView1- >Items- >Item[m];
}
}
ListView1- >Items- >Delete(m);
return;
}
---- 點擊其它列時,需要將所點擊的列內容從ListView1- >Items- >Item[i]- > SubItems- >Text中抽出,并參照其進行排序。子項目在存儲中,形式為_子項目1/r/n子項目2/r/n子項目3/r/n...子項目N/r/n_。為抽取其中某一子項目,需編寫如下函數,并將其放于void __fastcall TForm1::ListView1ColumnClick前面即可。
#include < vcl/dstring.h >
AnsiString __stdcall sg(AnsiString str,int n)
{
int l,i;
AnsiString QQ(str);
l=qq.Length();
AnsiString p(str);
char a[]="/r/n";
int j=0,k=0;
for(j=1;j< l;j++)
{
i=1;
while(qq[j]!=a[0] && qq[j+1]!=a[1])
{
p[i++]=qq[j];
j++;
}
k++;
if((k-1)==n)
break;
}
p[i]=NULL;
return (p);
}
---- 有了此函數以后,只需將上面的ListView1- >Items- >Item[i]- >Caption更換為sg(ListView1- >Items- >Item[i]- >SubItems- >Text,n-1)即可完成對此項目的點擊排序功能。
for(i=0;i< m-1;i++)
for(j=i+1;j< m;j++)
if(od)
{
if(sg(ListView1- >Items- >
Item[i]- >SubItems- >Text,n-1) >
sg(ListView1- >Items- >
Item[j]- >SubItems- >Text,n-1))
// ...以下從略
最后,刪除臨時的交換項目。
ListView1- >Items- >Delete(m);
---- 編譯運行程序后,即會看到我們預期的結果。另外,本程序是按照字符串方式進行排序的,假如需要按照數字或其它方式排序,只需進行相應的類型轉換即可。理解本程序后,讀者即把握了對ListView控件編程的一條基本思路,對今后使用BCB以及對windows編程起到良好作用。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲第一网站免费视频| 欧美精品久久一区二区| 亚洲自拍高清视频网站| 九九热这里只有精品免费看| 欧美多人爱爱视频网站| 国产亚洲人成网站在线观看| 国产高清在线不卡| 91久久在线视频| 日韩电影中文字幕在线观看| 日韩av在线免费| 中文字幕亚洲欧美日韩在线不卡| 97不卡在线视频| 精品成人乱色一区二区| 在线电影av不卡网址| 俺去亚洲欧洲欧美日韩| 久久久久www| 懂色av影视一区二区三区| 色悠久久久久综合先锋影音下载| 亚洲尤物视频网| 国产精品wwwwww| 亚洲女在线观看| 在线观看免费高清视频97| 97视频在线观看网址| 亚洲欧美在线看| 国产精品日韩精品| 亚洲精品国产精品久久清纯直播| 国产精品一区久久久| 国产精品jizz在线观看麻豆| 91沈先生作品| 亚洲第一天堂无码专区| 日韩av在线免费看| 成人国产精品久久久久久亚洲| 国产精品久久久久99| 日韩av在线免费看| 日韩成人中文电影| 91精品国产高清久久久久久| 欧美国产亚洲精品久久久8v| 57pao成人永久免费视频| 欧美华人在线视频| 这里只有视频精品| 亚洲欧美综合精品久久成人| 亚洲精品电影久久久| 伊人久久五月天| 国产亚洲一区精品| 中文字幕亚洲图片| 亚洲香蕉伊综合在人在线视看| 国产日韩欧美黄色| 国产精品一区二区三区成人| 精品国产一区av| 国内成人精品一区| 亚洲2020天天堂在线观看| 欧美日韩福利视频| 亚洲精品国精品久久99热一| 国产精品黄色影片导航在线观看| 2019中文字幕免费视频| 国产成人精品av| 亚洲成年人在线播放| 国产亚洲视频中文字幕视频| 国产99久久久欧美黑人| 欧美在线一级视频| 亚洲女同性videos| 国产成人久久久精品一区| 91久久中文字幕| 欧美性极品少妇精品网站| 亚洲自拍高清视频网站| 亚洲成色777777在线观看影院| 日韩在线免费高清视频| 国产99久久精品一区二区永久免费| 国精产品一区一区三区有限在线| 欧美亚洲国产日本| 精品久久久久久久久国产字幕| 国产精品狼人色视频一区| 久久影院资源网| 国产成+人+综合+亚洲欧美丁香花| 九九热这里只有在线精品视| 国产美女久久精品| 日韩精品亚洲精品| 亚洲乱亚洲乱妇无码| 亚洲第一天堂无码专区| 亚洲天堂开心观看| 免费不卡欧美自拍视频| 久久精品视频免费播放| 欧美午夜精品久久久久久久| 欧美大奶子在线| 亚洲人成在线一二| 中文字幕9999| 久久影院资源网| 亚洲欧美综合精品久久成人| 日本韩国在线不卡| 九九九热精品免费视频观看网站| 国产成人精品久久久| 97香蕉超级碰碰久久免费的优势| 欧美专区福利在线| 中文字幕视频在线免费欧美日韩综合在线看| 成人黄色片网站| 亚洲精美色品网站| 一本一本久久a久久精品综合小说| 中文字幕在线视频日韩| 欧美电影免费观看高清完整| 日本免费一区二区三区视频观看| 欧美成人午夜剧场免费观看| 久久全球大尺度高清视频| 91精品久久久久久久久青青| 久久九九全国免费精品观看| 久久久久久com| 成人黄色片网站| 97超碰蝌蚪网人人做人人爽| 久久久久久久国产精品视频| 国产精品r级在线| 国产精品www色诱视频| 2019中文字幕免费视频| 色yeye香蕉凹凸一区二区av| 欧美黄色片免费观看| 国产伦精品免费视频| 正在播放欧美一区| 这里只有精品丝袜| 欧美性生交大片免费| 日韩一中文字幕| 在线丨暗呦小u女国产精品| 国产精品视频一区二区高潮| 亚洲人成人99网站| 亚洲综合色av| 日韩中文综合网| 亚洲激情视频在线| 26uuu日韩精品一区二区| 亚洲最大成人免费视频| 欧美午夜女人视频在线| 欧美日韩视频在线| 91香蕉嫩草神马影院在线观看| 欧美性资源免费| 欧美大码xxxx| 国产精品旅馆在线| 欧美成人在线免费视频| 国内揄拍国内精品少妇国语| 欧美日韩日本国产| 亚洲免费一级电影| 国产综合在线看| 国产美女精彩久久| 久久伊人91精品综合网站| 日韩中文在线不卡| 欧美老女人性视频| 高清欧美性猛交xxxx| 亚洲**2019国产| 欧美精品www在线观看| 日韩电影免费观看中文字幕| 国产精品美女免费视频| 国产裸体写真av一区二区| 色综合天天综合网国产成人网| 亚洲美女福利视频网站| 中文字幕亚洲欧美日韩2019| 性色av一区二区三区在线观看| 亚洲天堂精品在线| 亚洲欧美国产精品| 亚洲999一在线观看www| 欧美午夜精品久久久久久人妖| 成人黄色生活片| 亚洲加勒比久久88色综合| 91久久久久久久久久| 亚洲老头老太hd| 亚洲国产女人aaa毛片在线| 国产91精品不卡视频| 亚洲国产91精品在线观看| 91香蕉亚洲精品| 成人h片在线播放免费网站|