控制DBGrid,挑战高手!

vt 2003-08-24 05:52:47
一:怎么样才能使DBGRID的当前行总是高亮度的,就像设置了DBGRID的Options的dgRowSelect,鼠标点击的行肯定是高亮度的,
我现在用Locate定位的行怎么样才能那样呢?直接给RecNo也可以定位行,但一样是无法让定位的行是高亮度的。
试过DBGreid1->SelectedRows->CurrentRowSelected = true;没用
二:怎么样用程序控制DBGRID的翻页,注意!我在窗体的FORMRESIZE中已经自动调整了DBGRID的宽和高。
...全文
18 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
vt 2003-08-24
  • 打赏
  • 举报
回复
多谢zjqyb和zhusongdong(东),第一个问题解决,
只要同时设置dgrowselect和dgAlwaysShowselection 即可

DBGrid1->Perform(WM_KEYDOWN,VK_DOWN,0); //ok
结帖
zjqyb 2003-08-24
  • 打赏
  • 举报
回复
DBGrid1->Perform(WM_KEYDOWN,VK_DOWN,0);
vt 2003-08-24
  • 打赏
  • 举报
回复
多谢zjqyb,问题稍稍解决,
具体方法如下:
设置DBGrid的Options的dgRowSelect=true;
Table1->RecNo=10;
Dbgrid1->SetFocus();
用此方法一定要保证Dbgrid1是输入焦点,Dbgrid1不是输入焦点就不会高亮度了

控制DBGRID的翻页可以用postmessage发一个Key_PageDown或Key_PageUp 给DBGrid,
我能想到,但不会做,谁能给一些代码,谢谢!!
zjqyb 2003-08-24
  • 打赏
  • 举报
回复
Table1->RecNo=10;
Dbgrid1->SetFocus();
xuby5228 2003-08-24
  • 打赏
  • 举报
回复
1。这个时候你最好采用,DBGrid 的颜色控制:选定的一行为其他颜色,高亮度。
不能能否满足你的要求
void __fastcall TForm1::DBGridEh1DrawDataCell(TObject *Sender,const TRect &Rect, TField *Field, TGridDrawState State)
{
TDBGrid *DBGridEh=(TDBGrid*)Sender;
if(Field->DataSet->RecNo%2 == 0 )
DBGridEh1->Canvas->Brush->Color = clCream;
else
DBGridEh1->Canvas->Brush->Color = clWindow;
if(State.Contains(gdSelected) ¦ ¦ State.Contains(gdFocused))
DBGridEh1->Canvas->Font->Color = clBlue;
else
DBGridEh1->Canvas->Font->Color = clBlack;
DBGridEh1->DefaultDrawDataCell(Rect, Field, State);
}
2。控制DBGRID的翻页,什么意思?
DBGRID的翻页,没有这个吧,好象不能控制翻页。

1,178

社区成员

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

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