dbgrid的readonly(50分)

  • 主题发起人 主题发起人 mech
  • 开始时间 开始时间
M

mech

Unregistered / Unconfirmed
GUEST, unregistred user!
如果在设计时,将DBGRID的readonly设为true,
此时,按tab键就会进入下条记录,而不是进入
下一字段。
如果我再在程序中将DBGRID的readonly属性改为
false,此时,按tab键也会进入下一条记录,不
会进入下一个字段。使输入很不方便。
怎样解决这个问题,请各位帮我。
(注:只在程序中将DBGRID的READONLY设为
TRUE,则没有影响)
 
在DBGRID的 ONKEYPRESS 事件里加
if key =VK_tab or key= VK_Return then
//按加车或TAB一样可以 甚至你还可以定义你自己的键盘输入方式
SendMessage(dbgrid.Handle,WM_KEYDOWN,VK_down,0);
就 OK ! Give the mark !!
 
不会吧, 缺省的是进入下一个字段的。
 
也许是Delphi的Bug,跟踪进去你可以发现
procedure Tab(GoForward: Boolean);
var
ACol, Original: Integer;
begin
ACol := Col;
Original := ACol;
BeginUpdate; { Prevent highlight flicker on tab to next/prior row }
try
while True do //无条件循环
begin
if GoForward then
Inc(ACol) else
Dec(ACol);
if ACol >= ColCount then //最后从此退出,移动到下一Row
begin
NextRow(False);
ACol := FIndicatorOffset;
end
else if ACol < FIndicatorOffset then
begin
PriorRow(False);
ACol := ColCount - FIndicatorOffset;
end;
if ACol = Original then Exit;
if TabStops[ACol] then //如果一开始设为ReadOnly=True ,返回总是False,所以没有右移动。
begin
MoveCol(ACol, 0);
Exit;
end;
end;
finally
EndUpdate;
end;
end;
 
多人接受答案了。
 
后退
顶部