DBgrid 自动编序号

tiandijie 2012-08-22 12:16:56
我想设计个主从表,从表在DBGrid中输入,但想输入明细时能自动编序号。
还有如果删除中间一条数据,序号也可以自动重新编,有没高手指点下,我用的是C++ Builder 6.0
...全文
143 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiandijie 2012-08-23
  • 打赏
  • 举报
回复
不好意思,是我搞错了,我用的是这个 TwwDBgrid 控件,它好像没有DBGrid1DrawColumnCell事件!汗!
tiandijie 2012-08-22
  • 打赏
  • 举报
回复
如果不用第三方控件要怎么实现,我现在只能用DBGrid,谢谢!序号存不存数据库倒没什么关系!只是要在Grid里面显示!
缘中人 2012-08-22
  • 打赏
  • 举报
回复
编号要存到数据库里吗
1、用第三方组件dbgridEh,option里有个showRecNo属性,设为true,在左边框就会自动显示行号
2、如果是数据库里要存储,adoquery有个recordNo属性是第几行,可以获取,或自己定义个变量,递增,这都要求遍历数据集。
int i=0;
while(!q->eof)
{
q->Edit();
q->fieldbyname("id")->Value = ++i;
q->Post();
q->Next();
}
缘中人 2012-08-22
  • 打赏
  • 举报
回复
★★ DBgrid 左边显示序号的问题
事先你可能要先按照上面的方法添加一个空白的列,在DBGrid的DBGrid1DrawColumnCell事件中添加如下代码:


void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
const TRect &Rect, int DataCol, TColumn *Column,
TGridDrawState State)
{
int i;
if(Column->Index == 0)
{
TDBGrid *dbgrd = (TDBGrid *)Sender;
dbgrd->Canvas->Brush->Color = clBtnFace;
dbgrd->Canvas->FillRect(Rect);
TRect rct(Rect);
Frame3D(dbgrd->Canvas,rct,clWhite,(TColor)RGB(0x80,0x80,0x80),1);
dbgrd->Canvas->Font->Color=clBlue;
i=dbgrd->DataSource->DataSet->RecNo;
dbgrd->Canvas->TextOut(Rect.Left+2,Rect.Top+2,IntToStr(i));
}
}

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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