Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxGrid и LookUpComboBox / 22 сообщений из 22, страница 1 из 1
21.12.2017, 11:20:20
    #39573360
FOGOT-BAstA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
Добрый день всем!

Есть cxGrid и поле типа lookUpComboBox. Оно работает, значения появляются и сохраняются. Теперь надо в соседнем поле по запросу сделать выпадающий список на основе текста в ячейке уже выбранного LookUp поля. Пытаюсь в запросе взять список вот так
Код: pascal
1.
2.
ADOQuery1.SQL.Add('SELECT Naimenovanie FROM Dannie WHERE Tematika=''' +
                  TcxLookupComboBoxProperties(cxGrid2DBTableView1Tematika.Properties.).ListColumns[1].Field.Value+'''');



Но при запуске приложения на этом запросе появляется ошибка "Argument out of range".
Как правильно обратиться к значению в ячейке cxGrid'а. В хелпе инфы не нашел про это, в инете тоже. Интересует именно текст в ячейке, а не в датасете.
Заранее спасибо.
...
Рейтинг: 0 / 0
21.12.2017, 11:24:45
    #39573364
KonstF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
Код: pascal
1.
ADOQuery1.ParamByName( ':prm1' ).asТвойТип  


и заканчивай использовать предыдущую конструкцию.
...
Рейтинг: 0 / 0
21.12.2017, 11:27:06
    #39573367
KonstF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
+ данные все-таки надо брать из дата сета ибо они всегда синхронизированы с вцл.
то бишь
Код: pascal
1.
LDS.Dataset.Fieldbyname( 'твое поле' ).твойтип;
...
Рейтинг: 0 / 0
21.12.2017, 11:33:59
    #39573375
FOGOT-BAstA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
KonstF,
Спасибо за инфу. А все-таки как к значению в ячейке обратиться в cxGrid?
...
Рейтинг: 0 / 0
21.12.2017, 11:43:16
    #39573384
KonstF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
FOGOT-BAstA, если снаружи - то придется гуглить самостоятельно, если с евента OnDrawColumnCell то напрямую ибо там есть Column: TColumnEh и прямо по имени!
...
Рейтинг: 0 / 0
21.12.2017, 12:09:09
    #39573425
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
Можно, но не нужно. Если хочется доступ к ячейкам и списку, то лучше брать LookupComboboxExt -- у него полноценный GridView можно вставить и работать как хочешь.
...
Рейтинг: 0 / 0
21.12.2017, 13:33:58
    #39573550
FOGOT-BAstA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
KonstF,это не EhLib, в cxGrid нет ни таких событий ни таких параметров...в поиске нашел только вариант, который описал - он выдает ошибку.
JaDi, поясни пожалуйста, его в cxGrid как-то запихнуть что-ли надо??Это ведь отдельный компонент
...
Рейтинг: 0 / 0
21.12.2017, 13:44:37
    #39573564
FOGOT-BAstA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
JaDi, по ExtLookUpComboBox понял что в Properties ставиться (просто есть отдельный компонент в этой библиотеке). Ща мануал посмотрю.
...
Рейтинг: 0 / 0
21.12.2017, 14:22:07
    #39573609
FOGOT-BAstA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
JaDi, можешь вкратце написать как с ним работать? Как вьюхи (через GridViewrepository?) создавать и подключить экстлукап поле к ним? Буду очень благодарен!=)
...
Рейтинг: 0 / 0
21.12.2017, 14:24:26
    #39573613
KonstF
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
FOGOT-BAstA , посмотри в этой ветке !

Но как по мне - редактировать прямо в сетке это глупость. Сам не идеально пишу, но это не правильно !



http://www.sql.ru/forum/835386/cxgrid-kak-poluchit-znachenie-yacheyki
...
Рейтинг: 0 / 0
21.12.2017, 16:37:46
    #39573823
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
FOGOT-BAstAJaDi, можешь вкратце написать как с ним работать? Как вьюхи (через GridViewrepository?) создавать и подключить экстлукап поле к ним? Буду очень благодарен!=)
Всё верно, создается репозиторий cxGridViewRepository, в него добавляется вьюха типа db table, после чего у ExtLookupComboBox'а в Properties выставляется эта самая вьюха в поле view и настраиваются колонки: KeyFieldName -- значение поля, которое будет сохраняться в комбобоксе (combo.EditValue) и ListFieldItem -- колонка, которая при выборе будет показываться. А далее уже у самой вьюхи можно всякие события использоваться типа OnGetDisplayText для замены текста или OnCustomDataCellDraw для рисования.
...
Рейтинг: 0 / 0
22.12.2017, 08:15:06
    #39574174
FOGOT-BAstA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
JaDi, спасибо, остался главный вопрос - как значение получить из ячейки. Вариант KonstF ту же ошибку показывает+аксес виолэйшн...
...
Рейтинг: 0 / 0
22.12.2017, 08:57:24
    #39574186
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
FOGOT-BAstA,

хмм... прочитал начало топика. Задача совсем в другом:
- в колонке с тематикой сделать обычное lookup-поле (выбор из списка);
- в колонке с наименованием добавить такое же lookup-поле (выбор из списка);
- на событии OnPopup или т.п. колонки с наименованием фильтровать датасет со списком наименований так, чтобы там оставались записи только по ранее выбранной тематике:
Код: pascal
1.
2.
datasetVseNaimenovania.Filter := 'TEMATIKA_ID = ' + datasetDataSpisokTEMATIKA_ID.AsString;
datasetVseNaimenovania.Filtered := True;


- код примерный, если не заработает, надо смотреть, как корректно фильтровать выпадающих список в гриде devexpress;
...
Рейтинг: 0 / 0
22.12.2017, 09:11:19
    #39574197
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
FOGOT-BAstAJaDi, спасибо, остался главный вопрос - как значение получить из ячейки. Вариант KonstF ту же ошибку показывает+аксес виолэйшн...

Код: pascal
1.
cxGrid2DBTableView1Tematika.Properties.EditProperties.GetDisplayText(cxGrid2DBTableView1Tematika.Properties.Value);
...
Рейтинг: 0 / 0
22.12.2017, 09:50:45
    #39574237
FOGOT-BAstA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
JaDi, относительно Вашего метода
Код: pascal
1.
datasetDataSpisokTEMATIKA_ID.AsString

- опять же откуда брать значение для фильтра, ведь в еще нет значения? Если бы я делал ImmidiatePost, то да, можно было бы взять из датасета (как предлогал KonstF), но задача именно в том, чтобы заполнить все необходимые поля и только потом внести в базу.

Tactical Nuclear Penguin, написал как Вы предложили - заругался на EditProperties - такого нет, удалил и оставил просто
Код: pascal
1.
cxGrid2DBTableView1Tematika.Properties.GetDisplayText(cxGrid2DBTableView1Tematika.Properties.Value



сейчас ругается на Value
...
Рейтинг: 0 / 0
22.12.2017, 10:03:12
    #39574246
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
FOGOT-BAstA,

ImmediatePost у колонки отвечает только за сохранения текущего введенного значения в девовский контрол. И используется, например, для контроля ввода и возможности отмены в случае ошибок, например, при проверке на onvalidate, а так же для немедленного сохранения выбранного значения с целью реакции на OnEditValueChanged (например, какой-нибудь пересчет в соседних колонках). В базу никто эти значения постить не будет, пока фокус с текущей записи не сместится или не будет принудительно пост вызван Post у датасета/датаконтроллера. Более того, когда пользователь нажимает на соседнее поля, то этот самый PostEditValue все-равно вызывается.

В общем, всё там будет, что нужно.
...
Рейтинг: 0 / 0
22.12.2017, 10:13:19
    #39574251
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
FOGOT-BAstATactical Nuclear Penguin, написал как Вы предложили - заругался на EditProperties - такого нет, удалил и оставил просто
Код: pascal
1.
cxGrid2DBTableView1Tematika.Properties.GetDisplayText(cxGrid2DBTableView1Tematika.Properties.Value



сейчас ругается на Value

прям матом ругается?
версия DevExpress какая?
...
Рейтинг: 0 / 0
22.12.2017, 10:24:39
    #39574261
FOGOT-BAstA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
Tactical Nuclear Penguin, сообщением - TcxCustomEditProperties does not contain a member named "Value"
версия 15.2.2.
...
Рейтинг: 0 / 0
22.12.2017, 10:44:01
    #39574280
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
FOGOT-BAstATactical Nuclear Penguin, сообщением - TcxCustomEditProperties does not contain a member named "Value"
версия 15.2.2.

у меня старее
тогда спрашивай на форуме поддержки...
...
Рейтинг: 0 / 0
22.12.2017, 10:57:45
    #39574290
FOGOT-BAstA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
JaDi, спасибо за идею с фильтрацией! Тут ничего сложного.
Код: pascal
1.
2.
3.
ADODataSet1.Filtered := False;
ADODataSet4.Filter := 'Tematika='+QuotedStr(ADODataSet3.FieldByName('Tematika').AsString);
ADODataSet4.Filtered := True;


Для текущего решения моей проблемы подходит хорошо, но если надо определить значение без набора данных - тут уже загвоздка. Случайно только что нашел старую тему, м.б. кому поможет (сам не пробовал ничего из там написанного)
http://www.sql.ru/forum/706235/staroe-i-novoe-znachenie-yacheyki-cxgrid-kak-poluchit
А с ImmediatePost мне не понятно...Справка у меня не полная видимо пытаюсь по ссылке пройти - пишет нет раздела((( Все что написано - If the ImmediatePost property of the editor’s Properties object is set to True, the edit value will be posted immediately after it has been changed. Т.е. оно сразу поститься при изменении вносимого или редактируемого??
...
Рейтинг: 0 / 0
22.12.2017, 10:58:35
    #39574293
FOGOT-BAstA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
Спасибо всем за помощь!
...
Рейтинг: 0 / 0
22.12.2017, 11:05:22
    #39574302
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cxGrid и LookUpComboBox
При ImmediatePost значение из комбобокса (лукап поля) сохраняется сразу при выборе -- т.е. сработает событие oneditvaluechanged контрола. Если оно выключено, то ничего не сохранится до тех пор, пока не переключится фокус на другой контрол, или не будет вызван PostEditValue у контрола.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / cxGrid и LookUpComboBox / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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