天天看点

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

(中行雷威2019.12.5)

(同一个世界,同一个梦想,交流学习C++Builder and Delphi XE10,传承c++builder and Delphi的魅力!欢迎各地朋友加入我的QQ群484979943、299497712,860634510,进群密码“BCB”,同时也请将该群号广为宣传,希望能够广集各方高手,共同进步。如需下载开发工具及源代码请加入我的QQ群。)

【阅读倡议】

1、有问题请留言;

2、没问题请点赞;

3、看连载请加群;

4、下源码请加群;

【开发工具】

1、C++Builder and Delphi 10.3.3

2、FMSoft_uniGUI_Complete_Professional_1.70.0.1514(正版)

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 Delphi UniDBGrid增加按钮列

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

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

procedure TMainForm.UniFormActivate(Sender: TObject);

begin

  UniQuery1.Close;

  UniQuery1.SQL.Clear;

  UniQuery1.SQL.Add('select * from custom order by cus_no');

  UniQuery1.Open;

end;

  1. 将UniDBGrid1的Images属性设为UniNativeImageList1,双击UniNativeImageList1,添加几个image子目录下的小图片,用做按钮图片,如下侧左图所示。
  2. (36)uniGUI for Delphi UniDBGrid增加按钮列
    (36)uniGUI for Delphi UniDBGrid增加按钮列
  1. 点中UniQuery1将其SQL属性如上侧右图所示配置查询语句

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

  1. 点击UniDBGrid1控件,在开发环境左上侧Structure区域选择UniDBGrid1的Columns,右键添加六列,分别设置前五列的FieldName属性(关联字段名称)、Title->Caption属性(列标题名称)和Width属性(列宽),如下图所示:
(36)uniGUI for Delphi UniDBGrid增加按钮列
  1. 点中第六列,将其FieldName设为“button”(名字随意,输入时会提示数据库链接错误,多次忽略即可),将其Title->Caption设为“操作”,将其ActionColumn->Enabled属性设置为True,将其ActionColumn->Buttons属性打开,增加三个按钮,分别点击每个TUniGridActionButton-x按钮,设置其ButtonId(按钮编号)、Hint(提示信息)、ImageIndex(关联到UniNativeImageList1的图片编号)属性,如下图所示:
(36)uniGUI for Delphi UniDBGrid增加按钮列
(36)uniGUI for Delphi UniDBGrid增加按钮列
  1. 点击UniDBGrid1,在开发环境左下侧Object Inspector区域选择Events,添加OnColumnActionClick事件,简单示意点击不同按钮调用不同事件:

procedure TMainForm.UniDBGrid1ColumnActionClick(Column: TUniDBGridColumn;

  ButtonId: Integer);

begin

if ButtonId=0 then

begin

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('添加成功!');

end

else if ButtonId=1 then

begin

UniQuery1.Delete;

ShowMessageN('删除成功!');

end

else if ButtonId=2 then

begin

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.ToInteger+1;

UniQuery2.ExecSQL;

UniQuery1.Refresh;

ShowMessageN('修改成功!');

end;

end;

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

继续阅读