EhLib实现自动编号功能
2006-11-03 17:58
323 查看
先进行以下设置
DBGridEh1.SumList.active := true;
DBGridEh1.SumList.VirtualRecords := true;
然后增加一列,不要关联字段
增加以下代码
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if Column.Index = 0 then
if DBGridEh1.SumList.RecNo <> -1 then
DBGridEh1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 2,
IntToStr(DBGridEh1.SumList.RecNo));
end;
Ok!
Good Luck;
注:这是从网上看来的,我只加了一个判断。不然会出现-1的情况,看起来不好看。
解决打印时没有序号的方法: cs1 是 TClientDataSet
1.右击cs1,添加一个字段 No 是 string(10)
object cs1: TClientDataSet
Aggregates = <>
Params = <>
AfterScroll = cs1AfterScroll
Left = 40
Top = 80
object cs1GoodsName: TStringField
FieldName = 'GoodsName'
end
object cs1GoodsNumber: TIntegerField
FieldName = 'GoodsNumber'
end
object cs1No: TStringField
FieldName = 'No'
Size = 10
end
end
procedure TForm1.cs1AfterScroll(DataSet: TDataSet);
begin
if DBGridEh1.SumList.RecNo <> -1 then
begin
cs1.Edit;
cs1.FieldByName('no').AsString :=IntToStr(DBGridEh1.SumList.RecNo);
end;
end;
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
DBGridRecordSize(Column);
if Column.Index = 0 then
if (DBGridEh1.SumList.RecNo <> -1) then
if (DBGridEh1.SumList.RecNo = 0 ) then
DBGridEh1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 2,
IntToStr(1))
else
DBGridEh1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 2,
IntToStr(DBGridEh1.SumList.RecNo));
end;
//PrintView
procedure TForm1.PrintView1Click(Sender: TObject);
begin
DBGridEh1.Columns[0].FieldName := 'no';
self.PrintDBGridEh1.Preview;
DBGridEh1.Columns[0].FieldName := '';
end;
//导出Excel
uses ComObj;
procedure TForm1.oExcel1Click(Sender: TObject);
var
i,j : Integer;
Excelid,xl: Variant;
s : string;
begin
inherited;
if cs1.RecordCount <= 0 then exit;
try
Excelid:=CreateOleObject('Excel.Application' );
except
on Exception do raise exception.Create('无法创建Xls文件,请确认是否安装EXCEL')
end;
Excelid.Visible := True;
Excelid.WorkBooks.Add;
Excelid.caption := '演示程序';
Excelid.worksheets[1].range['A1:C1'].Merge(True);
Excelid.WorkSheets[1].Cells[1,1].Value := '演示程序';
Excelid.worksheets[1].range['A1:C2'].HorizontalAlignment := $FFFFEFF4;
Excelid.worksheets[1].range['A1:C2'].VerticalAlignment := $FFFFEFF4;
//设置样式
Excelid.worksheets[1].Range['A1:C1'].Font.Name := '宋体';
Excelid.worksheets[1].Range['A1:C1'].Font.Size := 18;
Excelid.worksheets[1].Range['A1:C2'].Font.bold:=true;
//设置列宽
Excelid.worksheets[1].Columns[1].ColumnWidth := 5;
Excelid.worksheets[1].Columns[2].ColumnWidth := 10;
Excelid.worksheets[1].Columns[3].ColumnWidth := 10;
//写标题
i:=2;
Excelid.WorkSheets[1].Cells[i,1].Value := '序号';
Excelid.WorkSheets[1].Cells[i,2].Value := '商品名称';
Excelid.WorkSheets[1].Cells[i,3].Value := '商品数量';
//写值
i := 3;
CS1.First;
while not cs1.eof do
begin
Excelid.WorkSheets[1].Cells[i,1].Value := cs1.FieldByName('no').AsString;
Excelid.WorkSheets[1].Cells[i,2].Value := cs1.FieldByName('GoodsName').AsString;
Excelid.WorkSheets[1].Cells[i,3].Value := cs1.FieldByName('GoodsNumber').AsString;
cs1.Next;
Inc(i);
end;
s := 'A2:C'+IntToStr(i-1);
Excelid.worksheets[1].Range[s].HorizontalAlignment := $FFFFEFF4;
Excelid.worksheets[1].Range[s].VerticalAlignment := $FFFFEFF4;
//显示边框
Excelid.worksheets[1].Range[s].Borders.LineStyle := 1;
end;
例子在盒子上:
http://www.2ccc.com/article.asp?articleid=3764
DBGridEh1.SumList.active := true;
DBGridEh1.SumList.VirtualRecords := true;
然后增加一列,不要关联字段
增加以下代码
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
if Column.Index = 0 then
if DBGridEh1.SumList.RecNo <> -1 then
DBGridEh1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 2,
IntToStr(DBGridEh1.SumList.RecNo));
end;
Ok!
Good Luck;
注:这是从网上看来的,我只加了一个判断。不然会出现-1的情况,看起来不好看。
解决打印时没有序号的方法: cs1 是 TClientDataSet
1.右击cs1,添加一个字段 No 是 string(10)
object cs1: TClientDataSet
Aggregates = <>
Params = <>
AfterScroll = cs1AfterScroll
Left = 40
Top = 80
object cs1GoodsName: TStringField
FieldName = 'GoodsName'
end
object cs1GoodsNumber: TIntegerField
FieldName = 'GoodsNumber'
end
object cs1No: TStringField
FieldName = 'No'
Size = 10
end
end
procedure TForm1.cs1AfterScroll(DataSet: TDataSet);
begin
if DBGridEh1.SumList.RecNo <> -1 then
begin
cs1.Edit;
cs1.FieldByName('no').AsString :=IntToStr(DBGridEh1.SumList.RecNo);
end;
end;
procedure TForm1.DBGridEh1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
DBGridRecordSize(Column);
if Column.Index = 0 then
if (DBGridEh1.SumList.RecNo <> -1) then
if (DBGridEh1.SumList.RecNo = 0 ) then
DBGridEh1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 2,
IntToStr(1))
else
DBGridEh1.Canvas.TextRect(Rect, Rect.Left + 3, Rect.Top + 2,
IntToStr(DBGridEh1.SumList.RecNo));
end;
//PrintView
procedure TForm1.PrintView1Click(Sender: TObject);
begin
DBGridEh1.Columns[0].FieldName := 'no';
self.PrintDBGridEh1.Preview;
DBGridEh1.Columns[0].FieldName := '';
end;
//导出Excel
uses ComObj;
procedure TForm1.oExcel1Click(Sender: TObject);
var
i,j : Integer;
Excelid,xl: Variant;
s : string;
begin
inherited;
if cs1.RecordCount <= 0 then exit;
try
Excelid:=CreateOleObject('Excel.Application' );
except
on Exception do raise exception.Create('无法创建Xls文件,请确认是否安装EXCEL')
end;
Excelid.Visible := True;
Excelid.WorkBooks.Add;
Excelid.caption := '演示程序';
Excelid.worksheets[1].range['A1:C1'].Merge(True);
Excelid.WorkSheets[1].Cells[1,1].Value := '演示程序';
Excelid.worksheets[1].range['A1:C2'].HorizontalAlignment := $FFFFEFF4;
Excelid.worksheets[1].range['A1:C2'].VerticalAlignment := $FFFFEFF4;
//设置样式
Excelid.worksheets[1].Range['A1:C1'].Font.Name := '宋体';
Excelid.worksheets[1].Range['A1:C1'].Font.Size := 18;
Excelid.worksheets[1].Range['A1:C2'].Font.bold:=true;
//设置列宽
Excelid.worksheets[1].Columns[1].ColumnWidth := 5;
Excelid.worksheets[1].Columns[2].ColumnWidth := 10;
Excelid.worksheets[1].Columns[3].ColumnWidth := 10;
//写标题
i:=2;
Excelid.WorkSheets[1].Cells[i,1].Value := '序号';
Excelid.WorkSheets[1].Cells[i,2].Value := '商品名称';
Excelid.WorkSheets[1].Cells[i,3].Value := '商品数量';
//写值
i := 3;
CS1.First;
while not cs1.eof do
begin
Excelid.WorkSheets[1].Cells[i,1].Value := cs1.FieldByName('no').AsString;
Excelid.WorkSheets[1].Cells[i,2].Value := cs1.FieldByName('GoodsName').AsString;
Excelid.WorkSheets[1].Cells[i,3].Value := cs1.FieldByName('GoodsNumber').AsString;
cs1.Next;
Inc(i);
end;
s := 'A2:C'+IntToStr(i-1);
Excelid.worksheets[1].Range[s].HorizontalAlignment := $FFFFEFF4;
Excelid.worksheets[1].Range[s].VerticalAlignment := $FFFFEFF4;
//显示边框
Excelid.worksheets[1].Range[s].Borders.LineStyle := 1;
end;
例子在盒子上:
http://www.2ccc.com/article.asp?articleid=3764
相关文章推荐
- MSCRM二次开发实现自动编号功能
- SQL语句 实现自动编号功能
- 在Oracle Form中,如何实现自动编号(行号)的功能
- 在Oracle Form中,如何实现自动编号(行号)的功能
- MSCRM二次开发实现自动编号功能
- 在Oracle Form中,如何实现自动编号(行号)的功能
- 在Oracle Form中,如何实现自动编号(行号)的功能
- python、ipython的安装以及命令行自动补全功能实现
- GridView实现自动编号
- 为DataGrid添加自动编号功能
- 为DataGrid添加自动编号功能
- 实现input移动端自动获取焦点以及数字键盘搜索功能
- DevExpress.LookUpEdit控件实现自动搜索定位功能 兼使用方法(looUpEdit可编辑)
- Android 软件自动更新功能的实现
- Android 软件自动更新功能实现的方法
- AjaxPro版自动完成(Autocomplete)功能实现
- 在DataGrid中添加自动编号的功能
- 有关采用Filter:实现网站自动登录功能模块
- Android应用自动更新功能的代码实现
- php实现自动获取生成文章主题关键词功能的深入分析