请问那一个GRID控件能设置某行变色并使这行只读?(100分)

  • 主题发起人 主题发起人 jfsoft
  • 开始时间 开始时间
J

jfsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
请问那一个GRID控件能设置某列变色并使这列只读?

我现在想做一个GRID,这个控件中将显示主表中对应的记录(也就是一对多表的子表)
在这个GRID中我想使未满足条件的行只读并变成灰色,如果能使用户不能访问那最好
(这里指无法使这行得到焦点).而满足条件的行显示为白色并且能被修改.

各位有何解决办法,用编程或控件都行,万分感谢!
 
对于设置GRID中的颜色问题,可以在GRID的OnDrawColumnCell中编写相应的代码,
对于记录的修改可以在DataSet的OnBeforeEdit之前检查记录是否符合条件来控制.
 
DBGrid 也可以的,自己去研究他的属性吧!
 
使某行无法得到焦点只怕不可能,因为 Grid 是一个整控件,只能使它只读。
试试别的 Grid ,这个话题也许对你有帮助:
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=393511
 
(dbgrid)
刚好手头的客户管理模块做到这里,顺便给你贴过来。客户信誉度=极差时用红色。
{ Fixed the record with red color where Cust_Grade is very bad }
procedure TCustmanaFrm.dbgCustmanaBrowseDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Vartostr(Qry_Dbgrid['Cust_Grade'])='极差' then
dbgCustmanaBrowse.Canvas.Font.Color := clRed;
dbgCustmanaBrowse.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
不让修改某行(客户信誉度=极差时不让其修改):
procedure TCustmanaFrm.dbgCustmanaBrowseColEnter(Sender: TObject);
begin
if Vartostr(Qry_Dbgrid['Cust_Grade'])='极差' then
{only remove dgediting from the (dbgrid)options }
dbgCustmanaBrowse.Options:=[dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgConfirmDelete,dgCancelOnExit]
else
dbgCustmanaBrowse.Options:=[dgediting,dgTitles,dgIndicator,dgColumnResize,dgColLines,dgRowLines,dgTabs,dgRowSelect,dgConfirmDelete,dgCancelOnExit];
{only add dgediting to the options }
end;
 
这样也可以在onkeypress中
if ... then
key:=#0;
 
谢谢各位,大富翁真让我感到温暖,我是从vb转到DELPHI的
希望今后能得到大家更多的帮助!

另外我已用TOPGRID 控件解决这个问题,TOPGRID这个控件好COOL!!!
请稍候,就给分!




 
多人接受答案了。
 
后退
顶部