看看这样解决怎么样:
当StringGrid变更行、列时,再执行那个发Home及End的动作。
可以考虑在OnDrawCell的时候做这个检查的动作。
我刚刚测试过,应该是可以实现的,还是贴一下代码吧:
var
OldCol, OldRow: Integer;
procedure TForm1.StringGrid1DrawCell(Sender: TObject;
ACol, ARow: Integer;
Rect: TRect;
State: TGridDrawState);
begin
if ((OldCol <> StringGrid1.Col) or (OldRow <> StringGrid1.Row))
and (StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] <> '') then
begin
keybd_event(VK_HOME,0,0,0);
keybd_event(VK_HOME,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_END,0,0,0);
keybd_event(VK_END,0,KEYEVENTF_KEYUP,0);
OldCol := StringGrid1.Col;
OldRow := StringGrid1.Row;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
OldCol := StringGrid1.Col;
OldRow := StringGrid1.Row;
end;