Главная страница
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.013 c
1-2525
Коля
2002-04-17 02:26
2002.05.02
GetDir???


6-2635
VS
2002-02-20 07:02
2002.05.02
Помогите !! Програ зависает при разрыве соединения при закачке файла с ФТП


3-2480
KoLega
2002-04-10 18:01
2002.05.02
Нехочу использовать доступ к базе через BDE, а хочу через ADO, но


3-2472
Леонид
2002-04-11 11:09
2002.05.02
Поле просмотра в TDBGrid


3-2486
LVA
2002-04-11 12:24
2002.05.02
---|Ветка была без названия|---