我是一位菜鸟.哈哈......
问题:
我用如下语句控制DBGRID控件中ENTER键行为,但是每到最后LAST记录时,焦点要在最后一条记录跑2次才循环至第一条记录,如此造成我的程序不够专业,请各位大虾指教,谢谢!
if key=#13 then
if not (ActiveControl is TDBGrid) then
begin
key:=#0;
Perform(WM_NEXTDLGCTL,0,0);
end
else
if ActiveControl is TDBGrid then
With TDBGrid(ActiveControl) do
if SelectedIndex < FieldCount-1 then
SelectedIndex :=SelectedIndex +1
else
begin
SelectedIndex :=0;
if (qyMaster.State=dsEdit)
and (qyDetail.Eof) then
begin
qyDetail.Next;
qyDetail.Append;
end
else
begin
if qyDetail.Eof then
begin
qyDetail.First;
end
else
qyDetail.Next;
end;
end;
问题:
我用如下语句控制DBGRID控件中ENTER键行为,但是每到最后LAST记录时,焦点要在最后一条记录跑2次才循环至第一条记录,如此造成我的程序不够专业,请各位大虾指教,谢谢!
if key=#13 then
if not (ActiveControl is TDBGrid) then
begin
key:=#0;
Perform(WM_NEXTDLGCTL,0,0);
end
else
if ActiveControl is TDBGrid then
With TDBGrid(ActiveControl) do
if SelectedIndex < FieldCount-1 then
SelectedIndex :=SelectedIndex +1
else
begin
SelectedIndex :=0;
if (qyMaster.State=dsEdit)
and (qyDetail.Eof) then
begin
qyDetail.Next;
qyDetail.Append;
end
else
begin
if qyDetail.Eof then
begin
qyDetail.First;
end
else
qyDetail.Next;
end;
end;
if key=#13 then
if DBGrid1.SelectedIndex < 5 Then
DBGrid1.SelectedIndex := DBGrid1.SelectedIndex + 1
else
begin
DBGrid1.SelectedIndex := 0; // 光标到下一条记录第1列位置//
with AdoQuery1 do
begin
Next;
if EOF then Last;
end;
end;说明一下:
if DBGrid1.SelectedIndex < 5 Then //DBGrid显示了6列
回车右移后到了最后一列时,光标移到下一条记录的第1列