![]() |
![]() ![]() ![]() ![]() |
|
Перейти по Enter на следующее поле в TDBGridDelphi , Компоненты и Классы , TDBGridПерейти по Enter на следующее поле в TDBGrid
Оформил: DeeCo
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
if DBGrid1.Columns.Grid.SelectedIndex < DBGrid1.Columns.Count - 1 then
DBGrid1.Columns[DBGrid1.Columns.grid.SelectedIndex + 1].Field.FocusControl
else
begin
Table1.Next;
DBGrid1.Columns[0].field.FocusControl;
end;
end;
end;
Here's the translation of the text into Russian: Это обработчик события для компонента TDBGrid, именуемого DBGrid1. Событие тригерируется при нажатии клавиши, когда grid имеет фокус. Код проверяет, является ли нажатой клавишей Enter (#13). Если это так, он выполняет разные действия в зависимости от того, является ли выбранной колонкой не последней в grid:
Код использует свойство SelectedIndex column grid'а для определения, которая колонка выбрана в данный момент. Он также использует свойство Count для проверки, есть ли более колонок после текущей. Вот альтернативное решение, которое может быть более читаемым и поддерживаемым:
В этом коде я заменил DBGrid1.Columns.Grid.SelectedIndex на DBGrid1.FocusedColumn, что является более прямым способом получения индекса текущей фокусированной колонки. Я также удалил неиспользуемый блок begin...end вокруг заявления о фокусе. Обратите внимание, что я предполагаю, что Table1 - это компонент TTable или эквивалентный источник данных для grid. Если это не так, вам нужно будет адаптировать код соответствующим образом. В статье описывается решение проблемы перехода к следующему полю в TDBGrid при нажатии Enter, включая обработку случаев, когда это последнее поле и необходимо перейти к началу списка. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||