【问题标题】:DBGrid->OnColExit() focus failsDBGrid->OnColExit() 焦点失败
【发布时间】:2011-01-10 19:16:01
【问题描述】:
void __fastcall TUsers::DBGColExit(TObject *Sender)
{
    Ado->ExecSQL();
    AQ4->Close();AQ4->Open();
}

在更改 AQ4 表的内容(Ado 查询)并重新加载 AQ4 后 DBG (DBGrid) 也会重新加载内容。

但我仍然在 not Exit from my Col(列)(和行),然后当我按下 Selected+1 重新加载后行时,它会选择第二个Grid 的行,如果我按 Selected+2 它会选择第三行。

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

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

如何修复这个错误...

谢谢。

【问题讨论】:

    标签: delphi c++builder vcl


    【解决方案1】:

    我认真地认为“OnColExit”不是你正在做的事情的地方。

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

    您至少应该尝试保持在同一行,例如使用书签。 Delphi等效代码将是某事。像这样;

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      相关资源
      最近更新 更多