我想在DBGrid1中的indicator中显示table中的数据记录数,如:1、2、3?如何操作?

yuefengzzh 2002-03-25 12:57:09
DBGrid1是通过DataSource2连接到table1上的。当table1取得数据时,如何在DBGrid1中的indicator那一栏中显示数据的编号,如1、2、3、4、5……,请问如何做?
...全文
43 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
王集鹄 2002-04-01
  • 打赏
  • 举报
回复
这并不是一个很好的方法
如果行数太大,处理会很慢,显示也不全
建议你用其他控件把行数放在DBGrid的左边显示
王集鹄 2002-04-01
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
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 }
FBookmark: 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 FBookmark <> TDBGrid(Sender).DataSource.DataSet.Bookmark 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
FBookmark := TDataSource(Sender).DataSet.Bookmark;
Caption := IntToStr(TDataSource(Sender).DataSet.RecNo);
end;

end.
yuefengzzh 2002-03-25
  • 打赏
  • 举报
回复
在哪个事件里做,具体如何做呀?我想知道呀?
谢谢?
wolfAone 2002-03-25
  • 打赏
  • 举报
回复
使用计算字段赋值,RecordCount这样就是记录很多的时候会很慢.

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧