Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.02;
Скачать: CL | DM;

Вниз

Визуальные компоненты для работы с данными   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
1-2594
Troy
2002-04-19 16:41
2002.05.02
Простой вопрос, на который я не могу найти ответ...


1-2534
PaRL
2002-04-18 18:06
2002.05.02
The Question. Simply Question.


1-2546
anod
2002-04-18 21:22
2002.05.02
В чем ошибка?


1-2623
Ivan Voronov
2002-04-20 11:05
2002.05.02
Шаблоны/регулярные выражения в Delphi


3-2450
Ash
2002-04-09 14:54
2002.05.02
Как в Fox-e физически удалить запись?