已经有很多朋友给出帮助,但是答案都不尽人意;http://www.delphibbs.com/delphibbs/DispQ.asp?LID=2960059希望大家提供经验
解决方案 »
- 模拟鼠标键盘动作用哪个函数好
- 求算法怎么得到排列组合的具体数组
- 一个关于打印的问题,打印高手请进来,送110分
- 一个界面要求高,布局合理商业软件如何布局耳目一新的主窗口和子窗口,请给出建议,来者有分??
- 在 delphi中使用 ARP
- 有关在query中新添一个lookup字段的问题 急!!!
- 编译时老是出现错误:[fataL error] internal error:L470,不知是为什么?请指教!
- 迷惑!
- 如何在dbgrid中动态的显示不同的字段??数据集为adoquery.
- 关于"请问delphi中,可不可以把一些类封装在包中",请进??
- 我买了个新机子,装win2000复制文件时,不定时得死机,这是什么原因? 散分!
- Delphi2005是否与Delphi7兼容
怎样在DbGrid的左边,实现像EXCEL那样的自动编号?这些编号与表无关
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, StdCtrls, Buttons, Db, DBTables, ExtCtrls, jpeg;
const ROWCNT=20;type
tmygrid=class(tdbgrid)
protected
procedure Paint;override;
procedure DrawCell(ACol:Integer;ARow:Integer;ARect:TRect;AState:TGridDrawState);override;
public
constructor create(AOwner:TComponent);override;
destructor destroy;override;
end; TForm1 = class(TForm)
BitBtn1: TBitBtn;
DataSource1: TDataSource;
Table1: TTable;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
mygrid:tmygrid;
implementation{$R *.DFM} {tmygrid}
constructor tmygrid.create(AOwner:TComponent);
begin
inherited create(Owner);
RowCount:=ROWCNT;
end; destructor tmygrid.destroy;
begin
inherited;
end; procedure tmygrid.Paint;
begin
RowCount:=ROWCNT;
if dgIndicator in options then
ColWidths[0]:=30;
inherited;
end; procedure tmygrid.DrawCell(ACol:Integer;ARow:Integer;ARect:TRect;AState:TGridDrawState);
begin
inherited;
if (ARow>=1) and (ACol=0) then
Canvas.TextRect(ARect,ARect.Left,ARect.Top,IntToSTr(ARow));
end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin
mygrid:=tmygrid.create(Self);
mygrid.parent:=self;
mygrid.left:=0;
mygrid.top:=0;
mygrid.Height:=300;
mygrid.DataSource:=DataSource1;
end;end.
var i,iCount:Integer;begin
if FixedCols<1 then Exit;//如果没有序号区则不用显示行号
iCount:=1;
for i:=FixedRows to RowCount-1 do
begin
Cells[0,i]:=IntToStr(iCount);
iCount:=iCount+1;
end;
end;
在DBGrid的OnDrawColumnCell事件中if Column.Index = 0 then
with DBGrid1.Canvas do
begin
FillRect(Rect);
TextOut(Rect.Left+2, Rect.Top+2, IntToStr(DBGrid1.DataSource.DataSet.RecNo));
end;
这个可行