Нахождение текущей строки в TDBGrid Delphi
Есть ли способ узнать, какая строка является текущей в TDBGrid?
3 ответа
Я не уверен, понимаю ли я ваш вопрос, но я попытаюсь ответить, и, возможно, вы сможете уточнить, если это не то, что вы спрашиваете.
Поскольку TDBGrid связан с источником данных, текущая строка совпадает с текущей строкой в источнике данных. Вы можете запросить DataSource, посмотрев на значение первичного ключа или свойство RecNo, чтобы определить, какая запись является текущей.
Вы можете сделать это так:
1 - Определите локальный класс, который является копией TDBGrid (это позволит вам получить доступ к закрытым методам):
type
THackDBGrid = class(TDBGrid);
2 - Затем вы можете привести к своему локально определенному классу и извлечь из приватных методов, как в:
function TfrmMain.GetFieldValue(colnum : integer): string;
begin
Result := THackDBGrid(grdMain).GetFieldValue(colnum);
end;
Или, чтобы получить строку #:
function CurrentRowNumber: integer;
Result := THackDBGrid(grdMain).Row;
end;
Эта техника полезна и в других ситуациях, но я не могу претендовать на кредит. Я получил это отсюда.
Если вы не хотите зависеть от источника данных в предоставлении количества записей и текущей записи (например, потому что вы используете однонаправленный курсор на удаленном сервере), тогда метод доступа к свойствам базового элемента управления grid может использоваться.
Посмотрите этот ответ на аналогичный вопрос Stackru.