Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Значение ячейки поля по стрелочке слева. 
V
    Опции темы
Hatigatsu
Дата 12.12.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 11.10.2006
Где: г. Н.Новгород

Репутация: нет
Всего: нет



Здравствуйте. Помогите решить вот такой вопрос:
У меня есть DBGrid1 с одним полем, как узнать значение ячейки в этом поле на которую наводится стрелочка чёрная с лева треугольная (родная стрелочка DBGrid'а). Очень нужно. smile 
PM MAIL   Вверх
Insert
Дата 12.12.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



обратись к Table или Query, которые связаны с этим гридом через св ва:
Table1.FieldByName('Название поля').Asstring - здесь будет лежать текущее значение поля, то же самое для Query.

Это сообщение отредактировал(а) Insert - 12.12.2006, 12:18
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
x77
Дата 12.12.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



таблицы (TTable) и запросы (TQuery), когда они активны, в любой момент времени "указывают" на одну запись. запись состоит из полей, и получить значения этих полей, как уже было сказано, можно свойством Fields [n].Value, где n - порядковый номер поля в записи (индексация с нуля). также имеют право на жизнь обращения через FieldByName (FieldName).Value, которые позволяют обратиться к полю по его имени. что же касается грида, то у него есть свойство SelectedField, которое возвращает поле, на котором в данный момент находится фокус грида. т.е. для того, чтобы обратиться к выделенному в игрде полю, нужно написать

Код
DbGrid1.DataSource.DataSet.FieldByName (DbGrid1.SelectedField.FieldName).Value
.

это общий случай. как правило, можно решить проще: Table1.FieldByName (DbGrid1.SelectedField.FieldName).Value.

а вот что касается "треугольной стрелочки", то она указывает не на поле, а на запись. если бы у вас было 100 полей, эта "стрелочка" всё равно бы находилась всегда слева от самого первого поля. поэтому в вашем случае, при таблице из одного поля, обратиться к этому полю текущей записи можно ещё проще:

Код
Table1.Fields [0].Value
 - этот код всегда вернёт значение того поля и той записи, на которой стоит курсор в DbGrid, при условии, что поле всего одно smile

Это сообщение отредактировал(а) x77 - 12.12.2006, 16:22


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Hatigatsu
Дата 12.12.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 11.10.2006
Где: г. Н.Новгород

Репутация: нет
Всего: нет



x77, Insert, Большое Спасибо. Попробую.
PM MAIL   Вверх
Hatigatsu
Дата 12.12.2006, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 11.10.2006
Где: г. Н.Новгород

Репутация: нет
Всего: нет



Всё работает замечательно. Но вот такое дело. Я в событии onChange у Edit ' a использую ADOQuery1.Locate(Fields,Edit.text,[loPartialKey]). Как видно при совпадении первых букв текста с имеющимися в Базе словами, стрелочка в DBGrid наводится на похожее слово. В общем, как мне отследить куда навелась стрелочка (не знаю как это ещё выразить), и взять текст из ячейки.
Пробовал с помощью DataSource2DataChange всё прекрасно, о большем и мечтать не стоит, но вот если тышнешь на какую-нибудь ячейку и зажмешь стрелку вниз, при прокручивании, верхние ячейки копируют ячейку на которую нажал.
PM MAIL   Вверх
Insert
Дата 12.12.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 13.4.2006

Репутация: нет
Всего: 1



если твоя функция ADOQuery1.Locate(Fields,Edit.text,[loPartialKey]) вернет true, то значит что она нашла что то, эта функция сразу делает найденную запись активной и считать из неё значение можно с помощью все тех же процедур, о которых говорилось выше.
--------------------
пьяный русский кодер практически непобедим
PM MAIL   Вверх
Hatigatsu
Дата 12.12.2006, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 11.10.2006
Где: г. Н.Новгород

Репутация: нет
Всего: нет



x77, Insert,  СпасиБо ещё раз. Получается, как вы и сказали.
Отдельное спасибо за 
Код

DbGrid1.DataSource.DataSet.FieldByName (DbGrid1.SelectedField.FieldName).Value

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0527 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.