Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.46 MB
Время: 0.005 c
3-2455
Roman_Tutov
2002-04-10 17:33
2002.05.02
dBase & cp1251


1-2539
ymin
2002-04-18 17:10
2002.05.02
form1.print


1-2525
Коля
2002-04-17 02:26
2002.05.02
GetDir???


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


1-2505
dfdfd
2002-04-20 19:53
2002.05.02
Как скопировать файл??





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский