DBGrid-> OnColExit()焦点失败

时间:2010-01-29 10:34:15

标签: delphi c++builder vcl

void __fastcall TUsers::DBGColExit(TObject *Sender)
{
    Ado->ExecSQL();
    AQ4->Close();AQ4->Open();
}

更改AQ4(Ado Query)表的内容后重新加载AQ4 DBG(DBGrid)也重新加载内容。

但是我仍然在没有从我的Col (列)(和行)退出,然后当我按下重新加载行后选择+ 1 时它选择第二行Grid的一行,如果我按下Selected + 2,它会选择第三行。

我选择的项目是第一个,但不是同一时间。

  

示例:DBGrid包含 1 2 3 4   5 我选择 4 并重新加载内容   然后我点击 5 选择 2   我只是无法点击 1 2 3 4   重装后。

如何修复此错误......

谢谢。

1 个答案:

答案 0 :(得分:3)

我认真地认为“OnColExit”不适合您正在做的事情。

除此之外,您所描述的行为似乎并不是一个错误。通过重新打开您登陆第一条记录的数据集(使用键盘而不是鼠标导航,您将看到我的意思),而网格认为它是已更改的列。

你至少应该尝试使用书签来保持同一行。德尔福等效代码将是......像这样;

var
  Bookmark: TBookmark;
begin
  Bookmark := AQ4.GetBookmark;
  try

    [...] // close, open the query

    if AQ4.BookmarkValid(Bookmark) then
      AQ4.GotoBookmark(Bookmark);
  finally
    AQ4.FreeBookmark(Bookmark);
  end;