天天看點

(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增加按鈕列

繼續閱讀