Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.09.2011, 19:38
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
Вопрос Проблема с TcxDBVerticalGrid LookupComboBox

Здравствуйте!

DevExpress+FIBdataset - возникла дурацкая проблема - таблица TcxDBVerticalGrid к ней относится Dataset1, одно из полей KF указано как LookupComboBox там указан Dataset2 и необходимые поля key и lookup - всё работает отлично! Но нужно из Dataset2 взять два параметра в зависимости от выбранного в данном поле ключевого значения и передать их в Dataset1. Так вот проблема в том, что при попытке это сделать - данные то передаются, но значение поля KF в таблице - обнуляется. Пробовал передавать и из Dataset1 в Dataset2 напрямую через FN, FieldByName и из Dataset2 прямо в нужные TcxDBEditorRow - всё равно значение в поле KF сбрасывается и обнуляется...

Напишите, пожалуйста, как правильно взять несколько значений из Dataset2, чтобы поле KF оставалось с выбранным значением?

Последний раз редактировалось delphicoding, 03.09.2011 в 19:44.
Ответить с цитированием
  #2  
Старый 08.09.2011, 11:26
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

Профи, никаких соображений?
Ответить с цитированием
  #3  
Старый 08.09.2011, 11:57
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Кусочек кода, где вы берете эти значения приведите. Пока не очень понятно, с какого перепуга у вас что-то обнуляется.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #4  
Старый 08.09.2011, 12:27
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

Поле LookupComboBox называется vg_NAME, обращается к qryStaffs с лдючевым полем ID и отображает поле NAME. Кусочек кода банален OnChange:
qryUsers.FN('LOGIN').value:=qryStaffs.FN('NAME').v alue; или
qryUsers.FN('LOGIN').value:=vg_NAME.Properties.Val ue;
После этого данные вроде передаются, но в поле LookupComboBox данные исчезают... если убрать этот код передачи значений - из данного поля LookupComboBox данные перестают исчезать, а нормально остаются.

Дополнительный вопрос - как сделать, чтобы в выпадающем списке LookupComboBox строки были с автопереносом, то есть если текст не влезает в ширину поля, то не весь список расширяется, а конктреная строка становится высотой необходимой для того, чтобы весь текст влез?
Ответить с цитированием
  #5  
Старый 09.09.2011, 21:57
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

Не хватало в свойствах таблички параметра ImmediatePost=True, с ним первая проблема решилась.

Вторая проблема не решилась пока - как сделать, чтобы в TcxGrid/TcxVerticalGrid в выпадающем списке LookupComboBox строки были с автопереносом, то есть если текст не влезает в ширину поля, то не весь список расширяется, а конктреная строка становится высотой необходимой для того, чтобы весь текст влез? Или даже лучше бы заранее указать высоту строки и строки выпадающего списка, но проблема в том, что после этого перестаёт работать автоперенос текста...
Ответить с цитированием
  #6  
Старый 09.09.2011, 22:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

только OwnerDraw. Автоматически не получится.
Ответить с цитированием
  #7  
Старый 11.09.2011, 14:04
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

Напишите подробнее...
Ответить с цитированием
  #8  
Старый 12.09.2011, 13:45
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

2. так и не решён
3. Довольно простой вопрос, но пока не пашет как нужно - а нужно, чтобы при открытии формы с таблицей TcxGrid, вся таблица была ReadOnly, но можно было выделять строки, только по нажатию отдельной кнопки Редактировать - открывалась возможность редактировать таблицу (желательно только для выбранной строки).
Ответить с цитированием
  #9  
Старый 12.09.2011, 16:19
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

3. Прежде всего, давать пользователю прямой доступ к таблице на запись - плохой тон. Что касается только чтения, то можно поступить двояко. Можно сами данные перевести в режим только чтения:
Код:
cxGridDBTableView.Datasource.Dataset.ReadOnly := True;
Или для cxGridDBTableView выставить флаги:
Код:
cxGridDBTableView.OptionsData.Appending := False;
cxGridDBTableView.OptionsData.Editing := False;
cxGridDBTableView.OptionsData.Inserting := False;
cxGridDBTableView.OptionsData.Deleting := False;
А вот что касается редактирования только конкретной записи, то тут можно отслеживать перемещение по набору данных и при совпадении неких условий применять один из выше предложенных методов.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #10  
Старый 12.09.2011, 16:23
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Что касается циферки 2, то я так предполагаю вам надо просто использовать cxExtLookupComboBox, тогда вы сможете для выбора значений использовать уже cxGridDBTableView для которого можно выставить флаг:
Код:
OptionsView.CellAutoHigh := True;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #11  
Старый 13.09.2011, 16:35
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

Спасибо за ответы, всё это потестирую, отпишу.

Ещё остались другие вопросы в этой теме...
1. Так и не полностью пашет - если начать добавлять новую запись, но потом отменить, то пустая строка для новой записи в таблице висит, пока не перейдёшь на новую строку - только тогда пустая строка исчезает. TcxGrid.
4. Ещё стрёмный баг - запускаю окно каталога, редактора, делаю что угодно - всё работает. Затем закрываю окно каталога, открываю это же окно каталога - критическая ошибка... из-за чего?! в свойствах формы Action:=caFree. Возможно из-за Dataset, который в другой юните остался. Как его очистить и отключить? Делаю просто Dataset.Close, может надо ещё как-то? Из-за чего ещё может быть??
Ответить с цитированием
  #12  
Старый 26.09.2011, 12:47
delphicoding delphicoding вне форума
Активный
 
Регистрация: 04.07.2011
Сообщения: 206
Репутация: -461
По умолчанию

.....up.....
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:58.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025