Delphi ClientDataSet + DataSource在 DBGrid 中展示数据

RAD Studio 10.2.3 测试√


在这里插入图片描述

procedure TForm_DBControl.Button_AppendClick(Sender: TObject);
begin
  ClientDataSet_1.Append;
  with ClientDataSet_1.Fields do
  begin
    FieldByName('字段1').AsString := '追加1';
    FieldByName('字段2').AsString := '追加2';
    FieldByName('字段3').AsString := '追加3';
  end;
  ClientDataSet_1.Post;
end;

procedure TForm_DBControl.Button_ClientDataSetClick(Sender: TObject);
begin
  Memo_Log.Lines.Add('这个功能是 把 ClientDataSet_1 里面的数据通过 DataSource 在 DBGrid_1 中展示');

  with ClientDataSet_1 do
  begin
    Close;
    FieldDefs.Clear; // 清空已定义的字段

    // 开始添加字段
    with FieldDefs.AddFieldDef do
    begin
      Name := '字段1';        // 字段名
      DataType := ftString;   // 字段类型
    end;
    with FieldDefs.AddFieldDef do
    begin
      Name := '字段2';        // 字段名
      DataType := ftString;   // 字段类型
    end;
    with FieldDefs.AddFieldDef do
    begin
      Name := '字段3';        // 字段名
      DataType := ftString;   // 字段类型
    end;

    CreateDataSet; // 创建数据集
    Open;          // 激活和打开数据集

    // 这里是设置字段在显示时候所占宽
    with Fields do
    begin
      FieldByName('字段1').DisplayWidth := 10;
      FieldByName('字段2').DisplayWidth := 20;
      FieldByName('字段3').DisplayWidth := 30;
    end;

    // 然后开始给相应的字段追加内容
    Append;
    with Fields do
    begin
      FieldByName('字段1').AsString := '0, 0';
      FieldByName('字段2').AsString := '0, 1';
      FieldByName('字段3').AsString := '0, 2';
    end;
    Append;
    with Fields do
    begin
      FieldByName('字段1').AsString := '1, 0';
      FieldByName('字段2').AsString := '1, 1';
      FieldByName('字段3').AsString := '1, 2';
    end;
    Append;
    with Fields do
    begin
      FieldByName('字段1').AsString := '2, 0';
      FieldByName('字段2').AsString := '2, 1';
      FieldByName('字段3').AsString := '2, 2';
    end;
    Post;
  end;

  // 数据已经有了,然后就需要设置 DataSource 进行数据的分发了
  DataSource_1.DataSet := ClientDataSet_1;

  // 然后就是让 DBGrid_1 绑定 DataSource_1
  DBGrid_1.DataSource := DataSource_1;

end;

procedure TForm_DBControl.Button_DeleteClick(Sender: TObject);
var
  mStr: string;
  mArr: array[0..255] of WideChar;
begin
  mStr := '是否确认删除: ' + ClientDataSet_1.Fields.FieldByName('字段1').AsString;
  if MessageBox(self.Handle, StringToWideChar(mStr, mArr, Length(mStr) + 1), '提示', MB_OKCANCEL or MB_ICONINFORMATION) = IDOK then
    ClientDataSet_1.Delete;
end;

一点点笔记,以便以后翻阅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小印丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值