Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Использование DevExpress (часть 4)

Автор: vladman
Дата сообщения: 07.12.2010 01:23
X11

Цитата:
подскажите, как сохранить восстановить значения чекбоксов у компоненты TcxCheckCombobox

Попробуйте так:

Код: ...
Properties.Add('States');
....
Автор: RomanDaemon
Дата сообщения: 07.12.2010 04:11
Есть связка мастер-детейл, организованная с помощью cxGrid.
Детейл view может не иметь записей.
Для детейл view сделано свое popup меню (добавить/удалить и т.п.)
Вьюхи привязаны к своим датасетам.
Так вот если вызвать это popup меню на том детейл view, которое не имеет записей, то мы получаем работу с той записью, на которой сейчас стоит dataset.
Как правильно этого избежать?
Пробовал задизейблить меню, при его появлении, в зависимости от фокуса, т.е. если фокус стоит на записи, то значит она есть и с ней работаем, а если не стоит, то disable. Но никак не могу найти свойства, которые бы показывали, что фокус стоит на записи. Может фокус уходит в popupmenu при его вызове? Визуально нет. Смторел и так - cxGrid2DBCardView1.DataController.FocusedRecordIndex>0, и пробовал так - cxGrid2DBCardView1.ViewData.GridView.Focused, не получается. Как правильно решить посталенную задачу?
Автор: tanaseduard
Дата сообщения: 07.12.2010 09:09
RomanDaemon

Проверь в связанной вьюхе Controller.SelectedRecordCount и потом Controller.SelectedRecords[0].IsData.
Должно помочь.
Автор: RomanDaemon
Дата сообщения: 07.12.2010 19:35
tanaseduard
Нет, не получается.
Не могу найти свойство, которое бы говорило - есть фокус на детейл-вьюхе или там нет данных и фокуса нет...
Может я что-то не так делаю?
Автор: X11
Дата сообщения: 07.12.2010 19:36

Цитата:
Properties.Add('States');



я уже так делал, вот из моего сообщения:

Цитата:
with TcxPropertiesStoreComponent(cxPropertiesStore1.Components.Add) do
begin
Component := chcomboboxBaseFilterBySuperType;
Properties.Add('States');
end;//wi



Цитата:
но в файл ничего не сохраняется кроме

[Main]
Version=2

[chcomboboxBaseFilterBySuperType: TcxPropertiesStoreComponent]
=
Автор: RomanDaemon
Дата сообщения: 07.12.2010 20:54
Вроде нашел! Может кому-то поможет.
Вот: cxGrid.FocusedView.ViewData.IsEmpty
Автор: vladman
Дата сообщения: 07.12.2010 21:27
X11

Цитата:
я уже так делал, вот из моего сообщения:

Да, точно, это я скопировал ваш код чтобы исправить на верный, и, отвлекшись, отправил сообщения без исправления. Верный код должен был выглядеть так:

Код: ...
Properties.Add('EditValue');
....
Автор: tanaseduard
Дата сообщения: 08.12.2010 09:15
Проблема с TextEdit в dxBar.
Поставил выполнять действия после нажатия Enter в редакторе.

Код:
OnKeyDown

If Key=VK_RETURN Then
bbtn_SearchClick(Nil);
Автор: catchturbina
Дата сообщения: 08.12.2010 09:19
tanaseduard

В dxBar AllowSaveText:=True;
Автор: tanaseduard
Дата сообщения: 08.12.2010 09:21
catchturbina

Выставлено, но не помогает.
Есть еще идеи?
Автор: RomanDaemon
Дата сообщения: 09.12.2010 13:29
Есть ADO Dataset1 и DataSet2
Связаны мастер/детейл через cxGrid, а в MS SQL через relationship.
DataSet2 - детейл, редактируется средствами грида.
DataSet1 - мастер.

В DataSet2.AfterPost пишу в родительскую запись DataSet1 текущего пользователя.

Вопрос!
Если в DataSet2.AfterPost вызывать DataSet1.Require получаем Access violation.
Причем где-то на этапе отображения, т.е. Post проходит нормально.

Как правильно обновить текущее состояние DataSet1? Так как все туда пишется правильно, а вот обновить dataset1 и соответственно вьюху новыми данными не понятно как.
Автор: f3ka
Дата сообщения: 09.12.2010 13:44
RomanDaemon
DataSet1.Refresh разве нету?
Автор: RomanDaemon
Дата сообщения: 09.12.2010 14:02
DataSet1.Refresh не работает, пишет последовательно:

Exception class EOleException with message 'Источник данных изменил или удалил значение ключа для данной строки в хранилище данных. Теперь удалена и локальная строка'.
Exception class EOleException with message 'Дескриптор строки указывал на удаленную строку или строку, помеченную для удаления'.
Exception class EAccessViolation with message 'Access violation at address 006334E0 in module 'Project.exe'. Read of address 0000000A'.


Добавлено:
Я попробовал - у меня вообще Refresh нигде не работает. Везде пишет 'Источник данных изменил или удалил значение ключа для данной строки в хранилище данных. Теперь удалена и локальная строка'.
Соответсвенно и Resynс то же самое.
Почему это может быть? DataSetы сложные, с несколькими JOIN.
Пока везде пользую Require.

В простой табличке работает Refresh.
В сложном DataSet - нет.

Вопрос такой, как правильно построить запрос, с несколькими JOIN и даже JOIN самого себя, чтобы этот Refresh отработал?
Автор: Yuri2008
Дата сообщения: 09.12.2010 19:24
Добрый день, приходится править проект с DevExpress..((
Собственно вопрос.
Имеется cxgrid в нем tableView и cardView один и тот же датасет
требуется переключиться с табличного вида на просмотр тогоже но в виде карточек,
Такое возможно?
Автор: dimm78
Дата сообщения: 09.12.2010 20:06

Цитата:
Добрый день, приходится править проект с DevExpress..((
Собственно вопрос.
Имеется cxgrid в нем tableView и cardView один и тот же датасет
требуется переключиться с табличного вида на просмотр тогоже но в виде карточек,
Такое возможно?


Можно. Cвойство ActiveLevel у твоего cxGrid. При переключении просто устанавливаешь его равным Level-у твоих tableView и cardView соответственно.
Автор: RomanDaemon
Дата сообщения: 09.12.2010 20:22
У кого-нибудь есть перечень свойств, которые надо сохранять для вьюхи?
Храню в реестре, с помощью cxPropertiesStore. Хочется хранить расположение, сортировку, группировку, футер, ширину колонок. В общем все то, что пользователь может изменить во вьюхе и потом захотеть увидеть эти изменения в следующий раз. Можно все сохранить, но возможно есть уже список?
Автор: vladman
Дата сообщения: 09.12.2010 20:37
RomanDaemon

Цитата:
Можно все сохранить, но возможно есть уже список?

Списка нет, но есть методы TcxCustomGridView.StoreTo... (StoreToRegistry, например) и TcxCustomGridView.RestoreFrom..., которые решат вашу проблему.

Добавлено:
RomanDaemon

Цитата:
Вопрос!
Если в DataSet2.AfterPost вызывать DataSet1.Require получаем Access violation.

Access violation получается, действительно, как вы верно заметили, во время визуализации мастер-дитейл таблиц. Дело в том, что при рефреше мастер записи происходит уничтожение клона дитейл вью (см. Pattern and Clone Views), но он у вас в данный момент развернут. Это, скорее всего, и есть причина Access violation. Решения проблемы обновления значения в мастер записи при изменении значений дитейла уже как-то обсуждалось здесь ранее. Поищите в этой или предыдущей части топика.
Автор: RomanDaemon
Дата сообщения: 09.12.2010 21:00
vladman


Цитата:
Списка нет, но есть методы TcxCustomGridView.StoreTo... (StoreToRegistry, например) и TcxCustomGridView.RestoreFrom..., которые решат вашу проблему.


Ок. Попробую.


Цитата:
Access violation получается, действительно, как вы верно заметили, во время визуализации мастер-дитейл таблиц. Дело в том, что при рефреше мастер записи происходит уничтожение клона дитейл вью (см. Pattern and Clone Views), но он у вас в данный момент развернут. Это, скорее всего, и есть причина Access violation. Решения проблемы обновления значения в мастер записи при изменении значений дитейла уже как-то обсуждалось здесь ранее. Поищите в этой или предыдущей части топика.


Точно. А в результате обсуждения пришли к какому-то выходу? Искать по каким ключевым словам?
Автор: Yuri2008
Дата сообщения: 09.12.2010 21:09
Упс, dimm78 Спасибо помогло


Цитата:
Цитата:Добрый день, приходится править проект с DevExpress..((
Собственно вопрос.
Имеется cxgrid в нем tableView и cardView один и тот же датасет
требуется переключиться с табличного вида на просмотр тогоже но в виде карточек,
Такое возможно?


Можно. Cвойство ActiveLevel у твоего cxGrid. При переключении просто устанавливаешь его равным Level-у твоих tableView и cardView соответственно.

Автор: vladman
Дата сообщения: 09.12.2010 21:40
RomanDaemon

Цитата:
Искать по каким ключевым словам?

Моя дискуссия с AK 666 в октябре прошлого года.
Автор: RomanDaemon
Дата сообщения: 10.12.2010 00:24
vladman
Нашел вашу переписку. Она кончается тем, что AK 666 кинул Вам сырцы и видимо потом вы общались уже в личке =) Результат на форуме нет...
Автор: spasius
Дата сообщения: 10.12.2010 03:32
cxGrid + UniDAC + SQLite = неработают boolean поля. Грид их просто не понимает. Может кто сталкивался?
Автор: rdenk1
Дата сообщения: 10.12.2010 03:52
Как дать возможность пользователю добавлять новые строки в изначально пустую таблицу cxgrid bandedtableview?
Поставил в свойствах NewItemRow visible=true; в OptionsData везде true. И в результате нажимаешь на надпись "Click here to add a new row", выделяются все ячейки строки:

а выделить только одну ячейку и отредактировать ее невозможно.
Автор: Vixoid
Дата сообщения: 10.12.2010 06:47
rdenk1
а в OptionsSelection.CellSelect?
Автор: tanaseduard
Дата сообщения: 10.12.2010 09:08
rdenk1

MultiSelect<>True?
Автор: vladman
Дата сообщения: 10.12.2010 10:33
RomanDaemon

Цитата:
Результат на форуме нет...

Да, точно, посмотрел, так и было. Помню, что обсуждали эту проблему, а что через ПМ, вот, видите, забыл. Ну тогда давайте ваш пример, только в качестве датасетов используйте MemData. Посмотрим что можно сделать.
Автор: Cryogen2003
Дата сообщения: 10.12.2010 10:53
Добрый день.
Как можно в одном из столбцов TcxGridDBTableView выводить еще один view или что-то похожее на табличку?
Автор: X11
Дата сообщения: 10.12.2010 11:10

Цитата:
Как можно в одном из столбцов TcxGridDBTableView выводить еще один view или что-то похожее на табличку?

Тип столбца укажи popup

Затем кинь на форму грид и сделай его невидимым. В настройках столбца выбери этот грид:
Посмотри на снимок, обвёл красным:
http://i13.fastpic.ru/big/2010/1210/0e/7bae782345e6ea9ceebb9467b1b5f90e.png
Автор: tanaseduard
Дата сообщения: 10.12.2010 11:52
Cryogen2003
Или ExtLookupComboBox+GridViewRepository
Автор: Cryogen2003
Дата сообщения: 10.12.2010 12:26
X11
tanaseduard
Если через ExtLookupComboBox, он хочет обязательно, чтоб я выбрал одну из колонок другого вью, а мне нужно показать все пять колонок.
По поводу popupedit в этой колонке я посмотрю, может получиться

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

Предыдущая тема: Помогите пожалуйста с блокировкой клавиатуры и мышки


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.