C++ Builder 中StringDrid简单使用示例
2014-08-11 14:59 fuimaz 阅读(1619) 评论(0) 收藏 举报最近在学校里参加了个项目是在C++ Builder上进行开发的,刚开始我的任务是,利用CBC里的控件搞出一个类似与C#里DataGirdView的表格显示导入数据。我浏览了CBC控
件栏里的关于form的控件,发现了TStringGrid这个控件符合要求,不过外观看起来不如C#里DataGirdView那么美观。然后上网搜索关于这个控件的使用示例,发现真是少的可伶
,几乎为零。算了,我在C#里折腾过DataGridView,这也是个表格控件,用起来不会差很多自己折腾下。顺便说下,本人是刚参加项目的几个月的新人,第一次用C++ Builder,
希望以后有新人要用到StringGrid里看到我的文章可以少走一些弯路。在这里我演示下,利用文件选择对话框选择文件,并将文本格式文件导入到StringGrid的代码。
1 //---------------------------------------------------------------------------
2
3 #include <vcl.h>
4 #include <string> //添加这两个头文件对字符进行处理
5 #include <cctype> //添加这两个头文件对字符进行处理
6 #pragma hdrstop
7
8 #include "Unit1.h"
9 //---------------------------------------------------------------------------
10 #pragma package(smart_init)
11 #pragma resource "*.dfm"
12 TForm1 *Form1;
13 //---------------------------------------------------------------------------
14 __fastcall TForm1::TForm1(TComponent* Owner)
15 : TForm(Owner)
16 {
17 }
18 //---------------------------------------------------------------------------
19 void __fastcall TForm1::btn1Click(TObject *Sender)
20 {
21 char *p ;
22 const char *d = " "; //定义分隔符
23 if(!dlgOpen1->Execute()) return ;
24 TStringList *sl = new TStringList(); //利用StringList加载文件
25 sl->LoadFromFile(dlgOpen1->FileName);
26
27 AnsiString _str;
28 int maxCol = 0, rowix = grid1->RowCount - 1; //从已有行的最后一行开始添加
29 grid1->ColCount = 3;
30 grid1->Cells[0][0] = "Xcoord"; //定义第一行的列名,在属性栏里设置FixedRow为1可以将第一列固定
31 grid1->Cells[1][0] = "Ycoord";
32 grid1->Cells[2][0] = "Zcoord";
33 for(int i = 0; i != sl->Count; i++) //用for循环对文本文件的每一行进行字符分割
34 {
35 int colix = 0;
36 _str = sl->Strings[i].SubString(0,sl->Strings[i].Length()-1);
37 if(_str.IsEmpty()) continue ;
38 p = strtok(_str.c_str(),d); //分割字符数组
39 while(p)
40 {
41 grid1->Cells[colix][rowix] = p; //添加到单元格中
42 p = strtok(NULL,d);
43 colix++;
44 }
45 rowix++; //增加行数
46 grid1->RowCount = rowix;
47 }
48 }
49 //---------------------------------------------------------------------------
浙公网安备 33010602011771号