Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2011, 01:04   #1
Хитрец
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 48
По умолчанию как определить что dbgrid получил данные?

Создаю компонент на основе DBGRID. Нужно определить событие когда дбгрид загрузил данные из базы, чтобы открыть ранее сохраненый файл для востановления параметров столбцов. Что то все проковырял событие так и не нашел. Может кто подкинет идейку.
Хитрец вне форума Ответить с цитированием
Старый 01.03.2011, 02:24   #2
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

DBGrid данные не грузит !
Он всего-навсего отображает те данные, которые "загрузил" в себя, а вернее, получил из БД тот датасет (Table, Query и т.п.), к которому он (DBGrid) подключен через DataSource...
asmodey1 вне форума Ответить с цитированием
Старый 01.03.2011, 08:15   #3
alexvav
Форумчанин
 
Регистрация: 23.11.2006
Сообщений: 152
По умолчанию

попробуй через DataSource1DataChange
alexvav вне форума Ответить с цитированием
Старый 01.03.2011, 09:13   #4
Хитрец
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 48
По умолчанию

Понятно что в себя он их не грузит а лишь отображает что ему передает датасоурс. Но как определить событие что данные приняты и отображены.
Действовать через датасоурс не могу, так как создаю новый компонент и еще не известно что к нему подключено.
Хитрец вне форума Ответить с цитированием
Старый 03.03.2011, 13:20   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
Но как определить событие что данные приняты и отображены
Но данных может и не быть... Например, если таблица пустая...
Наверно, так
Код:
if DBGrid1.DataSource.DataSet.Active then...
_SERGEYX_ вне форума Ответить с цитированием
Старый 03.03.2011, 18:30   #6
Хитрец
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 48
По умолчанию

Нет... не условие мне нужно а событие..... EVENT

Код:
type
  TXDBGrid = class(TDBGrid)

  private
    { Private declarations }
     fOnResize: TNotifyEvent;
  protected
    { Protected declarations }
     property OnResize: TNotifyEvent read FOnResize write FOnResize;
  public
Вот для примера как определен ресайз.

Последний раз редактировалось Stilet; 06.03.2011 в 12:03.
Хитрец вне форума Ответить с цитированием
Старый 03.03.2011, 19:25   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Почему бы не использовать OnAfterOpen и OnAfterClose для DBGrid1.DataSource.DataSet
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.03.2011, 19:58   #8
Хитрец
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 48
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Почему бы не использовать OnAfterOpen и OnAfterClose для DBGrid1.DataSource.DataSet
Да хотелось бы его использовать только не знаю как переопределить событие ведь OnAfterOpen событие DataSet а не DBGrid.
Хитрец вне форума Ответить с цитированием
Старый 03.03.2011, 20:19   #9
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

DBGridDrawColumnCell - событие возникает при необходимости отрисовки данных в DBGrid.
Правда, оно реагирует на каждую видимую запись. Если отловить последнее срабатывание, то это и будет момент окончания заполнения DBGrid данными.
А последнее срабатывание - это срабатывание, номер которого равен количеству строк, помещающихся в DBGrid при его текущей высоте.

Последний раз редактировалось asmodey1; 03.03.2011 в 20:22.
asmodey1 вне форума Ответить с цитированием
Старый 06.03.2011, 11:22   #10
Хитрец
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 48
По умолчанию

Разобрался... даже не пришлось переопределять событие...
В КостомГриде есть процедура

procedure LinkActive(Value: Boolean);

которая как раз вызывается после загрузки грида.
Хитрец вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить что ячейка редактируется screenshot Microsoft Office Excel 7 28.05.2010 06:43
Как занести данные в DBGrid bbk_serg БД в Delphi 4 25.02.2009 14:44
Как добавлять данные в таблицу выведенную из ACCESS в DBGrid (Delphi ADO) Ce4kok БД в Delphi 26 26.01.2009 20:35
Как определить, что документ не сохранен? viter.alex Microsoft Office Word 4 17.01.2009 09:23
Как из двух DBGridов, выбрав необходимые данные, поместить в другой DBGrid Самоучка БД в Delphi 19 09.12.2008 23:23