Форум: "Базы";
Текущий архив: 2006.11.05;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c