Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TDataSource.OnDataChange / 17 сообщений из 17, страница 1 из 1
14.11.2003, 15:35
    #32324682
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
Добрый день!

D5sp1+ado patch

TDataChangeEvent = procedure(Sender: TObject; Field: TField)

в хелпе написано:
Data-aware controls notify a data source of a data change because of:

Scrolling to a new record.
Modifications to a field’s data.

но ещё он происходит, когда меняется TDataSet.Fields[].Visible
причём можно было бы ожидать, что Field: TField должно быть в этом случае не nil, всё-таки одно поле меняем. Нет, там nil :-(. Смотрел исходники, но ничего, что могло бы указывать на обход этого не заметил

Что делать?
кроме:
1 сохранять/обнулять/восстанавливать OnDataChange в обработчике
2 TDataSet.OnScroll/TDBGrid.OnCellClick/TDBGrid.OnKeyUp
...
Рейтинг: 0 / 0
14.11.2003, 15:42
    #32324714
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
А в чем проблема то, чего нужно чтобы было и что делается вообще?

-- Tygra's --
...
Рейтинг: 0 / 0
14.11.2003, 15:46
    #32324724
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
есть грид и TEdit
по первому нужно ходить, а во втором отображать текущую запись

TDBEdit не предлагать:-)
...
Рейтинг: 0 / 0
14.11.2003, 15:49
    #32324730
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
Чтобы отображать, и TDBText хватило бы...
...
Рейтинг: 0 / 0
14.11.2003, 15:55
    #32324745
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
А почему не предлагать?

DataSet.OnScroll

-- Tygra's --
...
Рейтинг: 0 / 0
14.11.2003, 15:58
    #32324751
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
//есть грид и TEdit
//по первому нужно ходить, а во втором отображать текущую запись

это упрощённо, просто не используется грид для редактирования, оно всё вынесено на отдельную панель

поэтому нужна возможность ходить по гриду, а показывать в панели
...
Рейтинг: 0 / 0
14.11.2003, 16:02
    #32324757
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
Что-то мне это опять напоминает бодягу про DBAware vs NonDBAware controls.
...
Рейтинг: 0 / 0
14.11.2003, 16:03
    #32324760
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
несколько ошибся-TDataSet.AfterScroll
его не предлагать потому, что это евент датасета

по определённым причинам(слишком много объяснять) датасеты трогаться не должны
...
Рейтинг: 0 / 0
14.11.2003, 16:04
    #32324765
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
2 pkarklin

вопрос конкретный, а "бодяга" призвана убедить в том, что можно сделать совсем по другому

надо заставить заработать это, а не переделывать всё
...
Рейтинг: 0 / 0
14.11.2003, 16:05
    #32324767
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
Интересно, датасеты трогаться не должны, а навигация по связанным контролам выполняться будет? Так не бывает!
...
Рейтинг: 0 / 0
14.11.2003, 16:08
    #32324775
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
Иногда лучше переделать все - читай сделать правильно - чем заставить это (ни это конкретно) работать.
...
Рейтинг: 0 / 0
14.11.2003, 16:49
    #32324894
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
2 Малиновский Владимир

TDataSource.OnDataChange подходит В ДАННОМ СЛУЧАЕ лучше, чем TDataSet.AfterScroll, потому, что есть TDataSet.DisableControls

2 pkarklin

согласен, что иногда лучше переделать всё правильно, хотя это общие слова
а как правильно В ДАННОМ СЛУЧАЕ?
...
Рейтинг: 0 / 0
14.11.2003, 16:53
    #32324901
Малиновский Владимир
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
Что-то ты замутил. Датасет имеет задизабленные контролс, а ты по связанному с ним гриду ректирование выполняешь?
Хоть бы описал задачу поподробнее, вдаваясь, так сказать, в интимные подробности...
...
Рейтинг: 0 / 0
14.11.2003, 16:55
    #32324904
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
А как тут обойти, что генериться компонентами дельфи. Задачу бы по-подробней описал.
...
Рейтинг: 0 / 0
14.11.2003, 17:09
    #32324924
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
задача обычная(для меня)

упрощённо:
1 на форме лежит грид и панель с не дб визуализаторами
2 ходим по гриду, данные из него надо отображать в этой панели
3 редактирования в гриде нет ибо его квери ридонли
4 нажимаем на кнопку добавить/изменить
5 редактируем едиты
6 кнопка ОК записывает всё в базу через хранимку

раньше всё работало на TDBGrid.OnCellClick+OnKeyUp, но это не позволяло ловить передвижение полосой прокрутки, вот я решил переделать

AfterScroll не работает ещё и при .Open квери, только при реальном скролле

остался только OnDataChange, но с ним возникли проблемы из-за возможно глюка/фичи VCL, которая этот евент выдаёт не только на скролл и изменение данных, как в хелпе, но ещё и на изменение поля из FieldList. При смене Query.Fields[].Visibile тоже евентится, при чём ...Field : TField) в евенте=nil, хотя логичнее равенство изменяемому полю.

Спасибо всем, уже решилось за счёт проверки FieldList.Updated, т.е пришлось написать так

with DBG.DataSource.DataSet do
begin
if ( State <> dsBrowse ) or assigned ( Field ) or TFieldList2 ( FieldList ).Updated then exit ;
...
Рейтинг: 0 / 0
14.11.2003, 17:45
    #32324988
tygra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
Сделай квери не readonly и придет счастте

-- Tygra's --
...
Рейтинг: 0 / 0
14.11.2003, 17:59
    #32325008
tunknown
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TDataSource.OnDataChange
2 tygra

оно у меня из хранимки, иначе нельзя
тогда придётся писать ещё кучу евентов по поводу вставки в неживой датасет и т.д.

всякие BeforePost и т.д.

бр-р-р...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TDataSource.OnDataChange / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]