Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Вниз

Прямой доступ к ячейкам TDBGid   Найти похожие ветки 

 
Karbo_1 ©   (2006-10-18 13:10) [0]

Возможен ли прямой доступ к произвольным ячейкам TDBGrid - аналогичный TStringGrid.Cells ?


 
Sergey13 ©   (2006-10-18 13:16) [1]

А смысл? К датасету стучись.


 
Desdechado ©   (2006-10-18 13:16) [2]

DBGrid (в отличие от StringGrid) не хранит данные, а только показывает их.
Поэтому обращаться нужно к датасету (позиционировавшись на нужную строку и выбрав нужное поле данных).


 
MsGuns ©   (2006-10-18 13:32) [3]

Возможен. Смотри свойства его дедушки TCustomGrid


 
Karbo_1 ©   (2006-10-18 13:36) [4]

А в TDataSet прямой доступ возможен? Или только через перебор с самого начала через first..next?


 
MsGuns ©   (2006-10-18 13:38) [5]

Вы определитесь, ЧТО Вам нужно: работать с набором данных (записи-поля) или с тем, что в текущий момент отображено в гриде.
Или внятно опишите свою проблему


 
Karbo_1 ©   (2006-10-18 13:42) [6]

Мне нужно в обработке события OnMouseMove получить значение ячейки DBGrid, в данный момент находящейся под курсором мыши.


 
MsGuns ©   (2006-10-18 13:52) [7]

>Karbo_1 ©   (18.10.06 13:42) [6]
>Мне нужно в обработке события OnMouseMove получить значение ячейки DBGrid, в данный момент находящейся под курсором мыши.

TCustomGrid.
В обработчике OnMouseMove вычисляете "ячейку" грида, через нее строку грида относительно верха (все это "через" TCustomGrid), далее получаете ссылку на данные записи НД в буфере..

Это чтобы хинты светить на содержимое текущей "ячейки" ?


 
Karbo_1 ©   (2006-10-18 14:05) [8]

Да, чтобы их светить , хинты эти.


 
MsGuns ©   (2006-10-18 14:14) [9]

Тогда см.7
Я подобную проблему решал отображением содержимого "ячейки" в статусной строке под гридом (как в 1С)


 
ЮЮ ©   (2006-10-19 08:18) [10]

Cм. исходник TDBGrid DrawCell - как грид рисует все строки на экране, не "дергая" DataSet


 
Karbo_1 ©   (2006-10-19 16:37) [11]


> Cм. исходник TDBGrid DrawCell

Посмотрел. Всё y, что нужно, оказалось в  private :-(

А что, у Borland есть реальные причины НЕ создать для TDBGrid свойство TDBGrid.Cell [ACol,ARow : integer]:TField ?


 
Наиль ©   (2006-10-19 17:45) [12]


> А что, у Borland есть реальные причины НЕ создать для TDBGrid
> свойство TDBGrid.Cell [ACol,ARow : integer]:TField ?

Ещё какие! DBGrid изначально - средство отображения.
Представь себе, что в DBGrid действительно появился TField. Естественно, нашлись бы желающие, изменять значения этих полей. Теперь есть, три варианта:
1. Игнорировать изменения. Для этого в TField должна быть заложена дополнительная функциональнасть которая позволяла бы игнорировать данные в зависимости от родителя TField.
2. Производить изменения только в Grid"e. Но это же, полное нарушение логики. Grid обязан быть синхронизирован с БД, иначе небвло бы в нём необходимости. Для таких задач есть StringGrid.
3. Передавать данные из Grid"a в БД. Представляешь себе цепочку DBGrid->DataSource->DataSet->DLL->БД. Это потребовало бы не мало труда от программистов Borland, что бы добавить новый уровень синхронизации. А в этом, действительно, нет ни какой необходимости.


 
Leonid Troyanovsky ©   (2006-10-19 18:33) [13]


> Karbo_1 ©   (18.10.06 14:05) [8]

> Да, чтобы их светить , хинты эти.


http://www.google.com/search?q=cache:xdqWGiiFLgMJ:www.delphimaster.ru/cgi-bin/forum.pl%3Fn%3D0%26id%3D1142283322+lvt+datalink+delphi

--
Regards, LVT.


 
ЮЮ ©   (2006-10-20 03:06) [14]


> Посмотрел. Всё y, что нужно, оказалось в  private :-(


Странным местом ты это смотрел:

     DrawColumn := Columns[ACol];
     Value := "";
     OldActive := FDataLink.ActiveRecord;
     try
       FDataLink.ActiveRecord := ARow;
       if Assigned(DrawColumn.Field) then
         Value := DrawColumn.Field.DisplayText;
     finally
       FDataLink.ActiveRecord := OldActive;
     end;


FDataLink - есть protected св-во DataLink


 
Loginov Dmitry ©   (2006-10-20 07:54) [15]

Karbo_1 ©   (18.10.06 13:42) [6]
Мне нужно в обработке события OnMouseMove получить значение ячейки DBGrid, в данный момент находящейся под курсором мыши.


DBGrid не содержит данных, но ты можешь использовать номер строки.
Заведи отдельный ДатаСет. При наведении мышкой на ячейке грида делай

ДатаСет.НомерЗаписи := ДБГрид.НомерСтроки {-1}

Но в таком случае появляется проблема синхронизации ДатаСетов (нужно обеспечить, чтобы оба ДатаСета хранили одни и теже данные).


 
ЮЮ ©   (2006-10-20 08:28) [16]


Loginov Dmitry ©   (20.10.06 07:54) [15]
> DBGrid не содержит данных, но ты можешь использовать номер
> строки.
> Заведи отдельный ДатаСет.


Однако он содержит DataLink, обеспечивающий доступ к записям, отображаемым в гриде. См.[14]


 
MsGuns ©   (2006-10-20 10:51) [17]

>Loginov Dmitry ©   (20.10.06 07:54) [15]
>Заведи отдельный ДатаСет. При наведении мышкой на ячейке грида делай

Попробуй сначала сам, а потом советуй.


 
Loginov Dmitry ©   (2006-10-20 13:05) [18]

> Попробуй сначала сам, а потом советуй.


А нафиг мне такой геморрой?


 
Игорь Шевченко ©   (2006-10-20 13:16) [19]

Loginov Dmitry ©   (20.10.06 13:05) [18]

А нафига другим геморрой советовать ? Это не та конференция, куда стоит выкладывать неотформатированный поток сознания.


 
Loginov Dmitry ©   (2006-10-20 15:33) [20]

Нормальный поток создания. При использовании TClientDataSet осуществить предложенное в [15] очень даже просто :)


 
Игорь Шевченко ©   (2006-10-20 16:52) [21]

Loginov Dmitry ©   (20.10.06 15:33) [20]

Каким образом указанное в [15] поможет автору в решении его проблемы ?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.064 c
15-1160889398
cyborg
2006-10-15 09:16
2006.11.05
Толи кони не едут


2-1161451266
GunGarry
2006-10-21 21:21
2006.11.05
Эмулировать нажатие заданной клавиши в активном приложении


15-1160782877
ИА
2006-10-14 03:41
2006.11.05
Бесплатный софт


1-1159151423
dreamse
2006-09-25 06:30
2006.11.05
Управление свойством компонента


15-1161074442
ZeroDivide
2006-10-17 12:40
2006.11.05
Мне стыдно за мой универ :(





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский