怎么把行号加在DBGRID网格的每一行??

TrueZq 2003-11-26 08:42:17
高手们,牛人们:怎么把行号加在网格的每一行??

我要在DBGRID的每一行第一列填充序号:从1开始。
以前有人问过,但都没有正确结果。怎么做?

其实就是怎样手动填充指定的单元格。
首先不要告诉我用绑定记录集的办法,我搜索过以前的帖子,绑定肯定是不行的。

我又尝试在DBGrid1DrawDataCell里画出序号,但是遇到问题:无法得到当前的TopRow值
谁能解决??

TADOQuery* m_AdoQuery;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ADOConnection1->ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\\zqWork\\Database\\IsFilterClients.mdb;Persist Security Info=False";

m_AdoQuery = new TADOQuery(NULL);
m_AdoQuery->Connection = ADOConnection1;

AnsiString strSql = "select ' ' as Num,strIp,strHostName from Clients";
m_AdoQuery->SQL->Text = strSql;
m_AdoQuery->Open();
DataSource1->DataSet = m_AdoQuery;
......

void __fastcall TForm1::DBGrid1DrawDataCell(TObject *Sender,
const TRect &Rect, TField *Field, TGridDrawState State)
{
DBGrid1->DefaultDrawDataCell(Rect,Field,State);

if (Rect.left == 0) // 表明是首列
{
HWND hWnd = DBGrid1->Handle;
HDC hDC = ::GetDC(hWnd);
int i;

int nRow;
//nRow = DBGrid1->TopRow; // 如果这样能得到就好了

// 得到DBGRID里的滚动条信息
SCROLLINFO si;
si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_POS;

::GetScrollInfo(hWnd,SB_VERT,&si);
int nPos = si.nPos;


si.fMask = SIF_RANGE;
::GetScrollInfo(hWnd,SB_VERT,&si);
int nMin = si.nMin;
int nMax = si.nMax;

si.fMask = SIF_PAGE;
::GetScrollInfo(hWnd,SB_VERT,&si);
int nPage = si.nPage;


nRow = m_AdoQuery->RecordCount * ((float)nPos/nMax); // 这个公式不对
int nTop = 18;

for(i = 0; i <= nPage; i++)
{
RECT lpRect;
lpRect.left=Rect.left;
lpRect.top=nTop;
lpRect.right=Rect.right;
lpRect.bottom=nTop+Rect.Height();

AnsiString strNum = nRow++;
UINT uFormat;
uFormat=DT_CENTER | DT_VCENTER | DT_SINGLELINE;

::DrawText(hDC,strNum.c_str(),strNum.Length(),&lpRect,uFormat);
nTop += Rect.Height()+1;
}

::ReleaseDC(hWnd,hDC);
}

}
...全文
69 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
TrueZq 2003-11-27
  • 打赏
  • 举报
回复
我已经搞定了,用TStringGrid,非常好用。
以后再也不用TDBGrid了。
lihongxing2002 2003-11-27
  • 打赏
  • 举报
回复
哪就在加一列自动加一的列。不就有行号了吗
BoyMgl 2003-11-26
  • 打赏
  • 举报
回复
加他没有用,如果真要加,自己去算去画,这里不会有人这么做的
耙子 2003-11-26
  • 打赏
  • 举报
回复
为什么要加这东西?

1,178

社区成员

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

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