TrueZq 2003年11月26日
怎么把行号加在DBGRID网格的每一行??
高手们,牛人们:怎么把行号加在网格的每一行??

我要在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);
}

}
...全文
12 点赞 收藏 4
写回复
4 条回复

还没有回复,快来抢沙发~

发动态
发帖子
数据库及相关技术
创建于2007-08-02

707

社区成员

1.8w+

社区内容

C++ Builder 数据库及相关技术
社区公告
暂无公告