Форум: "Базы";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
ВнизВизуальные компоненты для работы с данными Найти похожие ветки
← →
SB.John (2002-04-10 08:15) [0]Эти компоненты меняют свое состояние в зависимости от состояния DataSet"а к которому они привязаны. Например, при достижении конца таблицы, становятся недоступными некоторые кнопки DBNavigator"a. Как это реализуется. Просто не хочется писать код на событие в Table1 который делает например if Table1.Eof then TButton1.Enabled:=false. Таблица сама лежит в Датамодуле, а привязаные к ней кнопочки и пр. - в куче разных других форм. И вообще, мне кажется неправильно делать изменение визуальных компонентов в событиях компонента доступа к данным. Спасибо.
← →
Johnmen (2002-04-10 09:18) [1]>...мне кажется неправильно делать изменение визуальных
>компонентов в событиях компонента доступа к данным...
А где же еще их делать, ведь присутствует жесткая логическая связь - изменение параметров и свойств объектов доступа к данным приводит к некоей визуализации этого !
← →
Yuvich (2002-04-10 12:24) [2]>SB.John
Правильно! Не надо делать "изменение визуальных компонентов в событиях компонента доступа к данным."
Надо делать это (изменение визуальных компонентов) в событиях DataSource, привязанного к данному компоненту. При этом лучше всего DataSource положить рядом с компонентом (в форму).
← →
Johnmen (2002-04-10 13:44) [3]>Yuvich © : Позволю себе не согласиться ! Покольку
1. не только события DataSource могут менять некую визуализацию и
2. не всегда удобно держать кучу DataSource на один НД.
← →
Виктор Щербаков (2002-04-10 13:53) [4]Смотри в хэлпе Making a control data-aware в разделе Creating Custom Components.
← →
SB.John (2002-04-10 14:08) [5]Вот код выдранный из исходника TDBNavigator:
procedure TDBNavigator.DataChanged;
var
UpEnable, DnEnable: Boolean;
begin
UpEnable := Enabled and FDataLink.Active and not FDataLink.DataSet.BOF;
DnEnable := Enabled and FDataLink.Active and not FDataLink.DataSet.EOF;
Buttons[nbFirst].Enabled := UpEnable;
Buttons[nbPrior].Enabled := UpEnable;
Buttons[nbNext].Enabled := DnEnable;
Buttons[nbLast].Enabled := DnEnable;
Buttons[nbDelete].Enabled := Enabled and FDataLink.Active and
FDataLink.DataSet.CanModify and
not (FDataLink.DataSet.BOF and FDataLink.DataSet.EOF);
end;
Думаю все понятно. Когда набор данных каким-либо образом меняется навигатор (не DataSet и не DataSource) сам меняет доступность своих кнопок. Вопрос: как он узнает что данные изменились??? Наверняка отлавливает какие-то сообщения. Дальнейшая возня с исходными кодами ничего не дала по причине малой моей компетентости.
← →
SB.John (2002-04-10 14:13) [6]Виктор Щербаков ©
Пока я корябал свой ответ как раз пришел Ваш. Как раз то что нужно. Спасибо. Все, я полез копаться в хелпах.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.05.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c