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

Вниз

OnSetText на Lookup поле - возникают проблемы   Найти похожие ветки 

 
DelphiLexx ©   (2006-09-06 12:07) [0]

Возникла следующая ситуация.
Состояние DBGridEh"a такое же как в вопросе http://delphimaster.net/view/2-1157366364/ , а именно:

Есть FibDataSet1 (типа ТFibDataSet) который подключен через TDataSource к TDBGridEh"у. Одно из полей ТFibDataSet1 является Lookup поле и связано через LookupDataSet со вторым FibDataSet2 (типа ТFibDataSet). Это приводит к тому что в одной из колонок моего DBGridEh"a при нажатии в этой колонке на любой записи выскакивает раскрывающийся список из которого и выбирается нужное значение для текущей записи.
cписка.

На Lookup поле в FibDataSet1 стоит обработчик OnSetText:

procedure TForm1.FIBDataSet1LookupSetText(Sender: TField; const Text: String);
begin
 Sender.AsString := Text;
 FibDataSet1.First;
{хочу обратить внимание, что здесь FibDataSet1.State =  dsBrowse, но прикол в том, что после выхода из этой процедуры первая запись DBGridEh находится в режиме редактирования,
хотя не должна быть в режиме редактирования. Как с этим бороться?}
end


 
Рустем ©   (2006-09-06 12:27) [1]

А для чего ты перемещаешься на первую запись?
Может лучше строку FibDataSet1.First заменить на FibDataSet1.Post?


 
DelphiLexx ©   (2006-09-06 12:53) [2]


> Может лучше строку FibDataSet1.First заменить на FibDataSet1.
> Post?

На самом деле ниже моего комментария в приведенном коде следует продолжение т.е.

procedure TForm1.FIBDataSet1LookupSetText(Sender: TField; const Text: String);
begin
Sender.AsString := Text;
FibDataSet1.First;
{здесь идет обработка в зависимости от выбранного значения Text, меняются другие поля}
end.


 
Sergey13 ©   (2006-09-06 13:02) [3]

> [0] DelphiLexx ©   (06.09.06 12:07)

Я что-то не понял, а зачем вообще этот обработчик?


 
DelphiLexx ©   (2006-09-06 13:10) [4]


> Я что-то не понял, а зачем вообще этот обработчик?

Ну как зачем? Как только изменяется значение Lookup поле в зависимости от его значение меняются значения записей других полей (колонок).


 
Sergey13 ©   (2006-09-06 13:16) [5]

> [4] DelphiLexx ©   (06.09.06 13:10)

Почему другие должны меняться, как и где они меняются? Ты бы описал задачу то.


 
DelphiLexx ©   (2006-09-06 13:42) [6]


> Почему другие должны меняться, как и где они меняются? Ты
> бы описал задачу то.

Ну так надо, чтобы в зависимости от значания Lookup поля изменялись значения записей рядом стоящего поля, в котором у меня хранятся числа.
(Я думую, что развжевывать предметную область под которую я пишу программу не важна, важно решить вопрос, чтобы запись не оставалась в режиме редактирования).


 
Sergey13 ©   (2006-09-06 14:07) [7]

> [6] DelphiLexx ©   (06.09.06 13:42)
> Ну так надо, чтобы в зависимости от значания Lookup поля
> изменялись значения записей рядом стоящего поля, в котором
> у меня хранятся числа.
А ты думаешь без твоей помощи не изменится?


 
DelphiLexx ©   (2006-09-06 14:32) [8]


> А ты думаешь без твоей помощи не изменится?

Объясняю для особо одаренных. Например, из раскрывающегося списка Lookup поля выбираю занчение "Пшеница", становлюсь на первую запись, если выбранное значение "Пшеница" и первая запись Кукуруза,  то в рядостоящее поле "общий показатель" присваевается значение 2, "Пшеница" и первая запись Рожь,  о в рядостоящее поле "общий показатель" присваевается значение 43 и так для всех записей, там вообщем сложный алгоритм, но поверь мне нужно сделать так, чтобы запись не оставалась редактируемой после выполнения процедуры.


 
Sergey13 ©   (2006-09-06 14:42) [9]

> [8] DelphiLexx ©   (06.09.06 14:32)

Наверное я не особоодаренный - ничего не понял. Злаковые какие то рядомстоящие. Уборочная началась?


 
DelphiLexx ©   (2006-09-06 15:21) [10]


>
> Наверное я не особоодаренный - ничего не понял. Злаковые
> какие то рядомстоящие. Уборочная началась?

Если не понял, то дай понять другим.


 
Sergey13 ©   (2006-09-06 15:30) [11]

> [10] DelphiLexx ©   (06.09.06 15:21)
> Если не понял, то дай понять другим.
А я что, я пожалста. А ты пока про лукап поля почитай что нибудь. И про вычисляемые заодно.


 
evvcom ©   (2006-09-06 15:35) [12]

> [10] DelphiLexx ©   (06.09.06 15:21)
> то дай понять другим

Даже не хочется в эту галиматью вникать. Меняешь поле, тут же в обработчике осуществляешь навигацию, которая опять воздействует на LookupDataSet, он теперь при некоторых условиях опять может воздействовать на первичный НД, опять обработчик, ... Бред какой-то. Да еще и кукуруза с пшеницей...


 
DelphiLexx ©   (2006-09-06 15:48) [13]


> Даже не хочется в эту галиматью вникать. Меняешь поле, тут
> же в обработчике осуществляешь навигацию, которая опять
> воздействует на LookupDataSet,

Да фиг c ним, что он воздействует, если dataset находится в режиме dsBrowse, то следовательно и грид не должен быть в режиме редактирования вот, в чем вся фишка.


 
evvcom ©   (2006-09-06 16:24) [14]

> [13] DelphiLexx ©   (06.09.06 15:48)
> грид не должен быть

Видимо, разработчику грида не пришло в голову потестировать такое извращение, не находишь? Если не нравится, напиши свой грид.


 
DelphiLexx ©   (2006-09-06 17:10) [15]


Помоему нашел
Вручную переводим грид из состояния редактирования
DBGridEh1.EditorMode := true



Страницы: 1 вся ветка

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.049 c
1-1159414736
apic
2006-09-28 07:38
2006.11.05
Работа с Edit


11-1137864238
Boguslaw
2006-01-21 20:23
2006.11.05
KOL Unicode


15-1161088099
Курдль
2006-10-17 16:28
2006.11.05
Посоветуйте хорошую книгу по ASP.NET


2-1161099536
wewill
2006-10-17 19:38
2006.11.05
Проверка числового значения


15-1160607272
Бабай
2006-10-12 02:54
2006.11.05
Google Code Search не ищет по Паскалю !