在上一将的基础上, 接下来就可以编写button的响应事件了。
双击“删除”按钮进入响应事件的编写。
整个“删除”按钮的代码如下,水平有限,这里我就不用仔细解释了。
void __fastcall TForm2::Button1Click(TObject *Sender)
{
int row; //记录当前焦点的行号
//获得焦点
ValueListEditor1->EditorMode = true;
ValueListEditor1->SetFocus();
//获得焦点行号
row=ValueListEditor1->Row ;
//删除该行
ValueListEditor1->DeleteRow(row);
//自定义函数,用来将ini文件的对应的数据项的值设置为空即删除该项的数据,并依次将数据前移
update(row);
}
然后我们再编写自定义函数update:
在上面button1响应函数的前面添加update函数如下:
void update(int drow){
AnsiString n1;
int i,j,j1,num;
//下面是对ini文件的操作
TIniFile * regKey;
AnsiString ExePath = ExtractFilePath(ParamStr(0));
regKey = new TIniFile ( ExePath + "MYINI.INI");
//读 "TB" 的"value"值,是用来保存文件有多少数据项的
n1=regKey->ReadString ( "TB", "value","" );
num= StrToInt(n1); //将string转换为int型
//下面的循环是读取ini文件中从第drow个数据项依次付给前一个,drow是所删除的数据项所在的位
置
for(i=drow-1;i<num;i++){
AnsiString j=AnsiString(i);
AnsiString j1=AnsiString(i+1);
regKey->WriteString ( "ComboBox"+j, "datetime" ,regKey->ReadString ( "ComboBox"+j1,
"datetime","" ));
regKey->WriteString ( "ComboBox"+j, "plan" ,regKey->ReadString ( "ComboBox"+j1,
"plan","" ));
}
//数据项个数减1
regKey->WriteString ( "TB", "value" , num-1);
//释放ini文件对象
delete regKey;
}
双击form,编写在构建form时的响应事件,这里主要就是完成从ini文件向ValueListEditor1读入数据的功能。全部代码如下:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
AnsiString date,thing,n1;
int i,n2;
//ini文件的操作
TIniFile * regKey;
AnsiString ExePath = ExtractFilePath(ParamStr(0));
regKey = new TIniFile ( ExePath + "MYINI.INI");
n1=regKey->ReadString ( "TB", "value","" );
n2= StrToInt(n1);
//依次从文件中读入
for(i=0;i<n2;i++){
AnsiString j=AnsiString(i);
date = regKey->ReadString ( "ComboBox"+j, "datetime","" );
thing = regKey->ReadString ( "ComboBox"+j, "plan","" );
ValueListEditor1->Keys[i+1]=date;
ValueListEditor1->Values[date]= thing;
}
delete regKey;
}