Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Доступ к данным ячеек в DBGrid'e |
Автор: FFire 5.5.2006, 22:21 |
Ни как не могу решить проблемку: Как получить доступ к значению в ячейке DBGrid'а... Т.е. имеется номер столбца/строки DBGrid'а, (х,у) а как поиметь данные типа cells(x,y) именно из DBGrid'а а не из DataSource? |
Автор: Fazil6 5.5.2006, 22:30 | ||
никак. Grid данные только отображает, а не владеет ими. Никак кроме как через соответствующий DataSet ты до данных не доберешься. |
Автор: FFire 5.5.2006, 23:09 |
--- Grid данные только отображает.... Ок. Но что делать если очень надо )) У меня зреет такой вариант: при отрисовке ячейки запихивать данные в массив (благо нужна не вся таблица, а только одно поле) и потом обращаться к этому массиву вроде как к ДБГриду. Как на это смотрите? |
Автор: Savek 6.5.2006, 08:14 |
Зачем так извращаться? чем не устраивает DataSet? |
Автор: Dynamic 6.5.2006, 08:20 |
DBGridEh.SelectedField....... Добавлено @ 08:25 про DBGrid не помню, есть ли такое св-во... |
Автор: Fazil6 6.5.2006, 09:09 | ||
не очень понятен смысл такого алгоритма. Какая тебе разница откуда ты для массива будешь брать значения из грида или DataSet ? |
Автор: Vit 7.5.2006, 05:30 |
можно конечно гланды удалять через задницу и автогеном.... но не лучше ли как это принято... Смысл брать что-то прямо из DBGrid до меня плохо доходит... чем не устраивают корреспондентные поля... PS. Новичкам бы вообще запретил пользоваться DBGrid... действует развращающе на неокрепшие знания... Совет будет - забыть вообще о существовании DBGrid на пол года, стереть его и не использовать, через пол года работы с базами данных прийдёт понимание как это всё работает и такие вопросы отпадут сами собой |
Автор: FFire 7.5.2006, 06:52 | ||
А что такое корреспондентные поля? Где можно о них почитать? |
Автор: Dynamic 10.5.2006, 05:36 |
Поля БД, которые отображаются в гриде. Vit имел ввиду, что программно работать с данными надо через набор данных (DataSet, Query), а не через грид. Грид - для конечного пользователя программы, а не для программиста. |
Автор: FFire 10.5.2006, 09:58 |
Ну понятно, естественно я через DataSet, Query работаю, добавление удаление и т.п. Дело в другом. Хорошо поставлю вопрос иначе. Пользователь выбирает в дбГриде запись (записи), мышкой водит по другим записям, а в мемо в это время выводится инфа на основании выбраной записи (или записей) и той записи над которой висит мышка. Так вот, каким образом получить данные над которыми висит мышка (не обязательно из самого дбГрида, но обязательно те данные над которой мышь все еще висит)?? |
Автор: Dynamic 10.5.2006, 13:18 |
что значит при выборе строки в DBGrid мышкой или с клавиатуры или скроллом изменяется текущая запись НД, с нее и читай данные. или или еще перефразируй вопрос, потому как непонятно, чего ты хочешь.. |
Автор: FFire 10.5.2006, 15:09 |
Мышкой водит, ну т.е. пользователь просто мышку перемещает, не выбирая запись. В Мемо же должна ложиться инфа по на основании уже выбранных записей и той над которой висит мышка. Что то на подобе OnHint. Только этот ОнХинт, как бы сказать, динамический и зависит не только от того над чем мышка находится но и какие записи уже выбраны. и проявляется он не как хинт (желтенькое поле) а как текст в Мемо. Да, очень похоже на Хинт, только без задержки. К выбранным записям обратиться не проблема, а вот как обратится к записи которая не выделена, но над которой находится указатель (мышка по нашему)? |
Автор: Alex 10.5.2006, 15:19 |
FFire, мда понимания конечно у вас отсутствует напрочь ![]() |
Автор: FFire 10.5.2006, 15:42 |
Ну не в хинте, но типа того. |
Автор: Alex 10.5.2006, 16:01 |
А где? |
Автор: FFire 10.5.2006, 16:41 |
В мемо, на форме. |
Автор: Alex 10.5.2006, 17:33 |
это что же за издевательство вы хотите делать? |
Автор: Dynamic 11.5.2006, 08:30 |
OnMouseMove + ItemAtPos() (не помню, что там у грида для этого) тебе в руки.... |
Автор: Vit 11.5.2006, 15:26 |
Алекс, если знаешь, помоги человеку... может действительно надо... хотя задача прямо сказать не из стандартных и может не решаться |
Автор: FFire 12.5.2006, 07:46 | ||
К сожалению, метода ItemAtPos, у дбГрида нет. |
Автор: bas 12.5.2006, 09:01 |
Даже очень нестандартная. 1.Надо знать положение курсора на экране. 2.Узнать находиться ли курсор над гридом. 3.Вычислить поле над которым находимся. 4.Вычислить номер записи и вот тут надо повозиться, так как надо узнать какие записи на экране (скажем 10 из 2000). Можно при периресовки грида загонять все данные(и координаты тоже) в массив и оттуда считывать. |
Автор: Dynamic 12.5.2006, 09:27 | ||
показываю направление:
|
Автор: Dynamic 12.5.2006, 12:09 | ||||
а можно мне?
![]() ![]() ![]() Добавлено @ 12:11 а вот еще в тему: "Как вывести Hint для ячейки DBGrid" ЗЫ. Код не даю, ибо
|