使用计算字段赋值,RecordCount这样就是记录很多的时候会很慢.
解决方案 »
- 我用delphi写个监控程序,用MyKm4Process.dll隐藏进程,调试时进程可以隐藏,但是加入自启动,重启机器后进程仍然在
- ----> 图片处理问题:拖动鼠标选择裁切区域时,让区域外的图像变暗,怎么实现?<----
- 如何在服务程序里查询窗口句柄?
- DELPHI6编译出的界面怎么随WINDOWS改变而改变?
- 如何把MEMO类型的数据读出,然后写入一个新表中?求救!急!
- 菜的问题,我的DELPHI怎么用ExpressQuantumGrid 4?我安装后怎么做?
- 如何实现一个连接表的对应关系的批量修改?
- 数据库备份和恢复
- 求教:联结oracle世,用错误的用户名和密码登录数据库,为什么不按照例外中的错误提示进行显示,而显示英文的"invalid username/password
- HELLOW!!!GOOD
- 谁能告诉我WinISO5.3的注册码?
- 一个websnap中DatasetAdapter的问题
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, Grids, DBGrids;type
TForm1 = class(TForm)
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
private
{ Private declarations }
FBook: string;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}uses
Registry;procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
vRect: TRect;
I, J, R: Integer;
begin
if FBook <> TDBGrid(Sender).DataSource.DataSet.Book then Exit;
J := TDBGrid(Sender).DataSource.DataSet.RecNo;
if J < 0 then Exit;
R := TDrawGrid(Sender).Row;
vRect := TDrawGrid(Sender).CellRect(0, R);
TDrawGrid(Sender).Canvas.Brush.Color := clBlue;
TDrawGrid(Sender).Canvas.Font.Color := clWhite;
TDrawGrid(Sender).Canvas.TextOut(vRect.Left + 1, vRect.Top + 1, Format('%.2d', [J]));
for I := R - 1 downto 1 do begin
Dec(J);
vRect := TDrawGrid(Sender).CellRect(0, I);
TDrawGrid(Sender).Canvas.Brush.Color := TDrawGrid(Sender).FixedColor;
TDrawGrid(Sender).Canvas.TextOut(vRect.Left, vRect.Top + 1, Format('%.2d', [J]));
end;
J := TDBGrid(Sender).DataSource.DataSet.RecNo;
for I := R + 1 to TDrawGrid(Sender).RowCount - 1 do begin
Inc(J);
vRect := TDrawGrid(Sender).CellRect(0, I);
TDrawGrid(Sender).Canvas.Brush.Color := TDrawGrid(Sender).FixedColor;
TDrawGrid(Sender).Canvas.TextOut(vRect.Left, vRect.Top + 1, Format('%.2d', [J]));
end;
end;procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
FBook := TDataSource(Sender).DataSet.Book;
Caption := IntToStr(TDataSource(Sender).DataSet.RecNo);
end;end.
如果行数太大,处理会很慢,显示也不全
建议你用其他控件把行数放在DBGrid的左边显示