现在的位置: 首页 > 综合 > 正文

ClientDataSet控件的应用篇

2017年12月02日 ⁄ 综合 ⁄ 共 1233字 ⁄ 字号 评论关闭

ClientDataSet 结合 DataSetProvider 用DBGridEh显示数据,做出来的效果与Excel有功能上的相同,Excel所不能的是DBGridEh里的数据我还能编程扩展,比如自动分析及填充数据。

 

 

第一篇:ClientDataSet的排序

procedure TForm7.DBGridEh2TitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh); {索引排序}
var
  AFieldName, AOldIndex: string; 
  AIsDesc: bool; 
  ADataSet: TClientDataSet;
begin
  AFieldName := Column.FieldName;
  ADataSet := ClientDataSet1;
  AOldIndex := ADataSet.IndexName;
  if ADataSet.IndexDefs.Count > 0 then
  begin
      AIsDesc := ixDescending in ADataSet.IndexDefs.Find(AOldIndex).Options;
      ADataSet.DeleteIndex(AOldIndex);
  end;
  if AFieldName <> AOldIndex then
      ADataSet.AddIndex(AFieldName, AFieldName, [])
  else if AIsDesc then
      ADataSet.AddIndex(AFieldName, AFieldName, [])
  else
      ADataSet.AddIndex(AFieldName, AFieldName, [], AFieldName);
  ADataSet.IndexName := AFieldName;
  ADataSet.IndexDefs.Update;

end;

 

第二篇:ClientDataSet的多行删除

 

procedure  TForm7.POPDelMulLineClick(Sender: TObject); {删除多行}
var
 dbgEmp: TDBGridEh;
begin
  dbgEmp:=DBGridEh1;
  if dbgEmp.SelectedRows.Count > 0 then
  begin
   if MessageBox(Handle, '您要删除所有选中的记录吗?', '删除记录?', MB_OKCANCEL + MB_ICONWARNING) = IDOK then
    begin
      IF clientDataSet1.RecordCount > 0 then
      begin
        dbgEmp.SelectedRows.Delete;
      end;
    end;
  end else
  begin
    Application.MessageBox('请单击左边的序号选中一条记录或拖选一段记录,' +
      #13#10 +
      '也可以用Ctrl及Shift来进行多选,然后再删除记录。', '提示',
      MB_OK + MB_ICONINFORMATION);
  end;
end;

...

{待续...}

抱歉!评论已关闭.