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;
...
{待续...}