Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.038 c
1-1158977686
nsvi
2006-09-23 06:14
2006.11.05
Проблемы с Word.Basic


1-1159172427
Bless
2006-09-25 12:20
2006.11.05
Можно ли из procedure of object получить ссылку на объект


1-1159387946
Servelat
2006-09-28 00:12
2006.11.05
поймать SIGINT


15-1161010468
oldman
2006-10-16 18:54
2006.11.05
Вчера вычитал, откуда пошло слово "спам"...


1-1159262982
gdaujk
2006-09-26 13:29
2006.11.05
Выделяем память в DLL, а освобождаем в главном приложении…





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