DBGrid-> OnColExit () фокус не удался - PullRequest
0 голосов
/ 29 января 2010
void __fastcall TUsers::DBGColExit(TObject *Sender)
{
    Ado->ExecSQL();
    AQ4->Close();AQ4->Open();
}

после изменения содержимого таблицы для AQ4 (Ado Query) и перезагрузки AQ4 DBG (DBGrid) также перезагружает содержимое.

но я все еще на , а не на выходе из моего столбца (столбец) (и строки), а затем, когда я нажимаю на Выбранный + 1 после перезагрузки строки, он выбирает второй ряд Сетка, если я нажму Selected + 2, она выберет третью строку.

Мой выбранный элемент является первым, но не первым одновременно.

пример: DBGrid содержит 1 2 3 4 5 Я выбираю 4 и перезагружаю вещи Затем я нажимаю 5 Выбирает 2 И я просто не могу нажать на 1 2 3 4 После перезагрузки.

как исправить эту ошибку ...

спасибо.

1 Ответ

3 голосов
/ 29 января 2010

Я серьезно думаю, что «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;
...