| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Значение ячейки поля по стрелочке слева. |
| Автор: Hatigatsu 12.12.2006, 11:50 |
| Здравствуйте. Помогите решить вот такой вопрос: У меня есть DBGrid1 с одним полем, как узнать значение ячейки в этом поле на которую наводится стрелочка чёрная с лева треугольная (родная стрелочка DBGrid'а). Очень нужно. |
| Автор: Insert 12.12.2006, 12:18 |
| обратись к Table или Query, которые связаны с этим гридом через св ва: Table1.FieldByName('Название поля').Asstring - здесь будет лежать текущее значение поля, то же самое для Query. |
| Автор: x77 12.12.2006, 16:21 | ||||
таблицы (TTable) и запросы (TQuery), когда они активны, в любой момент времени "указывают" на одну запись. запись состоит из полей, и получить значения этих полей, как уже было сказано, можно свойством Fields [n].Value, где n - порядковый номер поля в записи (индексация с нуля). также имеют право на жизнь обращения через FieldByName (FieldName).Value, которые позволяют обратиться к полю по его имени. что же касается грида, то у него есть свойство SelectedField, которое возвращает поле, на котором в данный момент находится фокус грида. т.е. для того, чтобы обратиться к выделенному в игрде полю, нужно написать
это общий случай. как правило, можно решить проще: Table1.FieldByName (DbGrid1.SelectedField.FieldName).Value. а вот что касается "треугольной стрелочки", то она указывает не на поле, а на запись. если бы у вас было 100 полей, эта "стрелочка" всё равно бы находилась всегда слева от самого первого поля. поэтому в вашем случае, при таблице из одного поля, обратиться к этому полю текущей записи можно ещё проще:
|
| Автор: Hatigatsu 12.12.2006, 18:20 |
| x77, Insert, Большое Спасибо. Попробую. |
| Автор: Hatigatsu 12.12.2006, 18:35 |
| Всё работает замечательно. Но вот такое дело. Я в событии onChange у Edit ' a использую ADOQuery1.Locate(Fields,Edit.text,[loPartialKey]). Как видно при совпадении первых букв текста с имеющимися в Базе словами, стрелочка в DBGrid наводится на похожее слово. В общем, как мне отследить куда навелась стрелочка (не знаю как это ещё выразить), и взять текст из ячейки. Пробовал с помощью DataSource2DataChange всё прекрасно, о большем и мечтать не стоит, но вот если тышнешь на какую-нибудь ячейку и зажмешь стрелку вниз, при прокручивании, верхние ячейки копируют ячейку на которую нажал. |
| Автор: Insert 12.12.2006, 18:40 |
| если твоя функция ADOQuery1.Locate(Fields,Edit.text,[loPartialKey]) вернет true, то значит что она нашла что то, эта функция сразу делает найденную запись активной и считать из неё значение можно с помощью все тех же процедур, о которых говорилось выше. |
| Автор: Hatigatsu 12.12.2006, 19:58 | ||
| x77, Insert, СпасиБо ещё раз. Получается, как вы и сказали. Отдельное спасибо за
|