(36)uniGUI for CBuilder UniDBGrid增加按钮列

时间:2024-04-11 20:27:37

9.16.8 为UniDBGrid增加按钮列

         按钮列就是在表格行首、行尾或其它指定位置放置几个按钮,点击按钮时触发不同动作,UniDBGrid实现这个功能很简单。创建一个新项目,添加一个UniDBGrid、一个UniConnection、一个SQLiteUniProvider、两个UniQuery,一个UniDataSource和一个UniNativeImageList控件,使用SQLite数据库创建一个custom表,五个列分别是cus_no编号、cus_name姓名、cus_sex性别、cus_age年龄、cus_addr地址,按照以往案例分别设置好UniDBGrid和各个数据库控件之间的关联关系,双击UniConnection1控件,指向SQLite数据库文件,链上数据库,让项目运行时表格能够显示SQLite数据库的custom表的数据。

(36)uniGUI for CBuilder UniDBGrid增加按钮列

 

1、按照MainForm窗口添加需要的各个控件,并为窗口添加**事件

(36)uniGUI for CBuilder UniDBGrid增加按钮列

void __fastcall TMainForm::UniFormActivate(TObject *Sender)

{

UniQuery1->Close();

UniQuery1->SQL->Clear();

UniQuery1->SQL->Add("select * from custom order by cus_no");

UniQuery1->Open();

}

  1. 将UniDBGrid1的Images属性设为UniNativeImageList1,双击UniNativeImageList1,添加几个image子目录下的小图片,用做按钮图片,如下侧左图所示。
  2. (36)uniGUI for CBuilder UniDBGrid增加按钮列(36)uniGUI for CBuilder UniDBGrid增加按钮列

  

  1. 点中UniQuery1将其SQL属性如上侧右图所示配置查询语句

select * from custom;//获取UniDBGrid1关联表的各个字段

  1. 点击UniDBGrid1控件,在开发环境左上侧Structure区域选择UniDBGrid1的Columns,右键添加六列,分别设置前五列的FieldName属性(关联字段名称)、Title->Caption属性(列标题名称)和Width属性(列宽),如下图所示:

(36)uniGUI for CBuilder UniDBGrid增加按钮列

  1. 点中第六列,将其FieldName设为“button”(名字随意,输入时会提示数据库链接错误,多次忽略即可),将其Title->Caption设为“操作”,将其ActionColumn->Enabled属性设置为True,将其ActionColumn->Buttons属性打开,增加三个按钮,分别点击每个TUniGridActionButton-x按钮,设置其ButtonId(按钮编号)、Hint(提示信息)、ImageIndex(关联到UniNativeImageList1的图片编号)属性,如下图所示:

   (36)uniGUI for CBuilder UniDBGrid增加按钮列(36)uniGUI for CBuilder UniDBGrid增加按钮列

  1. 点击UniDBGrid1,在开发环境左下侧Object Inspector区域选择Events,添加OnColumnActionClick事件,简单示意点击不同按钮调用不同事件:

void __fastcall TMainForm::UniDBGrid1ColumnActionClick(TUniDBGridColumn *Column, int ButtonId)

{

if(ButtonId==0)

{

UniQuery2->Close();

UniQuery2->SQL->Clear();

UniQuery2->SQL->Add("insert into custom values(:p1,:p2,:p3,:p4,:p5)");

UniQuery2->ParamByName("p1")->Value=FormatDateTime("hhnnss",Now());

UniQuery2->ParamByName("p2")->Value="张三";

UniQuery2->ParamByName("p3")->Value="男";

UniQuery2->ParamByName("p4")->Value="30";

UniQuery2->ParamByName("p5")->Value="武汉市长江东路999号";

UniQuery2->ExecSQL();

 

UniQuery1->Refresh();

ShowMessageN("添加成功!");

}

else if(ButtonId==1)

{

UniQuery1->Delete();

ShowMessageN("删除成功!");

}

else if(ButtonId==2)

{

UniQuery2->Close();

UniQuery2->SQL->Clear();

UniQuery2->SQL->Add("update custom set cus_age=:p2 where cus_no=:p1");

UniQuery2->ParamByName("p1")->Value=UniQuery1->FieldByName("cus_no")->AsString;

UniQuery2->ParamByName("p2")->Value=UniQuery1->FieldByName("cus_age")->AsString.ToInt()+1;

UniQuery2->ExecSQL();

 

UniQuery1->Refresh();

ShowMessageN("修改成功!");

}

}

(36)uniGUI for CBuilder UniDBGrid增加按钮列