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

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

Автор: vladman
Дата сообщения: 06.02.2011 23:20
RomanDaemon

Цитата:
Вот была бы просто кнопка "ресет" на форме, было бы понятнее. Может кто-то делал так?

Идея реализации очень проста - помимо пользовательских настроек храните настройками по умолчанию для ваших гридов, которые автоматически создаются если таковых еще нет при старте приложения. При нажатии на кнопку "ресет" выполняйте RestoreFrom* из этих настроек по умолчанию. Вот, собственно и все.
Автор: RomanDaemon
Дата сообщения: 07.02.2011 11:15
vladman
Где хранить? Пользовательские настройки я храню в реестре, а дефолтные было бы лучше в каком-нибудь компоненте. Есть такой?
Автор: JohnSilver182
Дата сообщения: 07.02.2011 11:43
Hi
а) Я поставил в ...DataController.Options +doCaseInsensive , а при фильтрации все равно регистр учитываетса !
б) А не подскажите как указать cxGrid что бы редактирование включал по DoubleClick ??
Автор: marser
Дата сообщения: 07.02.2011 11:55
JohnSilver182

Цитата:
Я поставил в ...DataController.Options +doCaseInsensive , а при фильтрации все равно регистр учитываетса !

DataController.Filter.Options := DataController.Filter.Options + [fcoCaseInsensitive];
Автор: neznayka3
Дата сообщения: 07.02.2011 12:08
как выровнять кнопки по правому краю в LayoutCotrole? Horizontal Alignment = right
Автор: JohnSilver182
Дата сообщения: 07.02.2011 12:39
marser - Спасибо ! Помог дауну !!

А по второму вопросу неподскажеш ??
Автор: marser
Дата сообщения: 07.02.2011 13:10
JohnSilver182

Цитата:
А не подскажите как указать cxGrid что бы редактирование включал по DoubleClick

В обработчике события грида OnCellDblClick написать ACellViewInfo.Item.Editing := True
Автор: JohnSilver182
Дата сообщения: 07.02.2011 13:29
marser А запрет по одиночному клику так непроходит
Точнее как разрешить ТОЛЬКо по двойному клику .
Автор: marser
Дата сообщения: 07.02.2011 13:52
JohnSilver182
В обработчике события грида OnCellClick написать AHandled := True
В обработчике события грида OnCellDblClick написать ACellViewInfo.Item.Editing := True

Добавлено:
Ну и разумеется
OptionsBehavior.AlwaysShowEditor := False
OptionsBehavior.ImmediateEditor := False
Автор: vladman
Дата сообщения: 08.02.2011 02:23
RomanDaemon

Цитата:
Где хранить? Пользовательские настройки я храню в реестре, а дефолтные было бы лучше в каком-нибудь компоненте. Есть такой?

Храните также в реестре. Т.е, до того как вызываете ResoreFrom* делайте вызов StoreTo*, но в "дефолтную" ветку реестра. Таким образом, вы сохраните дефолтные настройки ваших гридов, т.е. те, которые вы установили в дизайнтайме. При "ресете" же, делайте ResoreFrom* из дефолтной ветки реестра.
Автор: X11
Дата сообщения: 08.02.2011 12:50
Подскажите относительно cxButton.
Как изображение с текстом сместить влево, как на верней кнопке?

Автор: marser
Дата сообщения: 08.02.2011 13:26
X11
cxButton.Margin := 1
Автор: X11
Дата сообщения: 08.02.2011 16:28
marser, спасибо.



Вопрос по cxGridDBTableView, событие OnGetContentStyle.

Есть два компьютера, на обоих всё одинаковое: BDS 2007, Dev54.

Почему появляется такое сообщение?

Цитата:
The dbgMedStylesGetContentStyle method referenced by dbgMed.TcxGridTableViewStyles->OnGetContentStyle has an incompatible parameter list. Remove the reference?


Проект компилируется нормально.
Но...
Открываю форму, пытаюсь сохранить и тут вылазит это сообщение.
Удаляю код из события. Потом дважды щёлкаю в диспетчере события по событию OnGetContentStyle и вставляю назад тот же код, всё прекрасно после этого сохраняется.

Переношу проект на другой комп и всё заново. Пересохранил. Возвращаю проект на првый комп и опять это сообщение.

До Dev54 такого не было.
Автор: tanaseduard
Дата сообщения: 08.02.2011 16:40
X11

Там точно у тебя одинаковые сборки девок и Delphi?

У меня такая фигня была когда на домашнем другая сборка стояла, лечил тем что килял Dcu.
Автор: X11
Дата сообщения: 08.02.2011 16:52
Да, точно. Уже на домашнем три раза переустанавливал. Без толку.
Тоже полностью удалял папку девок из program files
Автор: tanaseduard
Дата сообщения: 08.02.2011 16:57
X11

Хм... Кильни все bpl от девок в системных папках дельфи и посмотри может гдето она смотрит на еще 1 папку с сорсами девок.

У меня синхроняться все папки(ключая BPL,Dcu,Pas....) через LiveSync и такое проблемы нету, хотя dcu и bpl компиляться на одной тачке а потом открываются на другой, полет нормальный уже не первый год...
Автор: X11
Дата сообщения: 09.02.2011 13:01
Несколько лет назад я задавал этот вопрос. Ещё раз задам. Он относится к очень широким колонкам девовского грида. Взять, например, грид стандартный или EhLib. Если колонка очень широкая, то её правая граница выходит за область видимости грида. И просто так изменить ширину колнки нельзя, без прокрутки вправо. Если подвести курсор мышки к правой границе грида, то курсор по идее должен сменить свой облик и пользователь смог бы изменять ширину колонки, не прокручивая грид по горизонтали, чтобы увидеть правый край колонки.



А в девовском гриде такого нет. Или быть может уже есть?

Надеюсь, объяснил понятно.

Добавлено:
Если кто использует Firebird + IBExpert, то там такая фича реализована.
Автор: volliriks
Дата сообщения: 09.02.2011 13:11
Помогите)) как синхронизировать работу двух XtraScheduler на одной форме, то есть при изменении вида отображения и перемещения по дням, вид представления времени менялся на обоих?
Автор: sldaac
Дата сообщения: 09.02.2011 13:45
X11
так а в чем проблема, ставиш автоширина=true и все помещается двигай как тебе удобно, скролинг тогда вообще ненужен
Автор: X11
Дата сообщения: 09.02.2011 14:07
Мне не нужна АВТОширина. Мне хотелось бы так, чтобы менять ширину колонки, не прокручивая грид по горизонтали.
Автор: golkanavt
Дата сообщения: 09.02.2011 14:50
Всем привет. Сейчас пытаюсь перескачить с Дев-07 на крайний релиз 5.4 под D6. В связи с этим вопрос - кто нибудь адаптировал компоненты, без поддержки D6 под сабж, например, Express Scheduler/TreeList?
Автор: vladman
Дата сообщения: 09.02.2011 15:25
X11

Цитата:
относится к очень широким колонкам девовского грида.
Firebird + IBExpert, то там такая фича реализована.


Поддерживаю, хорошая фича. Нужно как-то придумать как такого добиться.
Автор: tanaseduard
Дата сообщения: 09.02.2011 15:35
X11

Тоже за. Только что попробовал таки да, в IBExpert такое можно, хотя раньше и не замечал.
Run-time Object Inspector посмотрел на компонент, уж больно он мне напомнил DevGrid, вот только ранних версий.
Классы похоже, сами смотрите, но есть масса свойств которых уже нету ну и смущает класс самого компонента.
Автор: golkanavt
Дата сообщения: 09.02.2011 15:49

Цитата:
Тоже за. Только что попробовал таки да, в IBExpert такое можно, хотя раньше и не замечал.
Run-time Object Inspector посмотрел на компонент, уж больно он мне напомнил DevGrid, вот только ранних версий.
Классы похоже, сами смотрите, но есть масса свойств которых уже нету ну и смущает класс самого компонента.

У Хвастунова в IBExpert'е довольно старые девы и используются. TdxDBGrid оттуда родом.
Автор: Graach
Дата сообщения: 09.02.2011 22:52
Доброго времени суток. Такой вот вопрос:

Есть TcxDBVerticalGrid, в котором несколько строк (2 текстовых и 3 TcxLookupComboBox). При этом на каждой строке висит OnEditValueChanged. Также имеется три датасета/датасорса для лукапных полей. Запрос для первого лукапа - простой селект без параметров. Запрос для второго - параметризован и его параметрами являются значения 2-х текстовых полей и первого лукапа. Запрос третьего - тоже параметризован и зависит от того, что выбрано во втором лукапе. Текущие значения лукапных полей беру из свойства EditValue.

Таким образом, пользователь заполняет поля сверху вниз: первый лукап, оба текстовый поля (при изменении значений каждого из этих трех полей выполняется параметризованный запрос к БД для заполнения датасета второго лукапа), второй и третий лукапы. При этом первый лукап отрабатывает без проблем - на событие OnEditValueChanged выполняется запрос к БД и все отлично. Оба edit'а также отрабатывают без проблем. Но когда сделан выбор значения из второго лукапа, отрабатывает OnEditValueChanged дважды, причем второй раз EditValue - пустое. И когда дважды сделан запрос к БД, значение в гриде пропадает. Соответственно в третьем лукапе данных нет.

Пробовала вместо OnEditValueChanged ставить OnChange и OnValidate - результат тот же. Пробовала ставить на OnExit и OnFocusLost (на потерю фокуса) - вообще туда не заходит. Но если сделать те же самые поля с теми же запросами в отдельных компонентах (не в гриде), то все работает отлично.

Собственно говоря вопрос, как сделать так, чтобы OnEditValueChanged (или какое-нибудь другое событие) отрабатывало только один раз (теоретически если это так и будет, то выбранное значение лукапного поля пропадать не будет).
Автор: marser
Дата сообщения: 10.02.2011 07:57
Graach

Цитата:
Собственно говоря вопрос, как сделать так, чтобы OnEditValueChanged (или какое-нибудь другое событие) отрабатывало только один раз

А с чего Вы взяли что событие отрабатывает несколько раз? Сколько раз изменилось значение, столько же раз и отработает событие. Если срабатывает дважды, значит два раза изменилось значение. Чудес не бывает!
Автор: Graach
Дата сообщения: 10.02.2011 09:32
marser

Цитата:
А с чего Вы взяли что событие отрабатывает несколько раз? Сколько раз изменилось значение, столько же раз и отработает событие. Если срабатывает дважды, значит два раза изменилось значение. Чудес не бывает!

Я прошла по коду дебагером и зашла в обработчик OnEditValueChanged дважды. Причем в пользовательском интерфейсе меняется значение лукапного поля только один раз.

Добавлено:
Если вдруг кто еще наткнется на такую же проблему, прикол был в том, что я получала значение лукапа через editvalue. Судя по всему при обращении к этому свойству компонент еще раз вызывал OnEditValueChanged, при этом очищал значение этого свойства и соответственно ничего не работало. Заменила на TcxLookupComboBoxProperties(TcxLookupComboBox(Sender).Properties).ListSource.DataSet.FieldByName(TcxLookupComboBoxProperties(TcxLookupComboBox(Sender).Properties).KeyFieldNames).AsString и все пошло как по маслу.
Автор: marser
Дата сообщения: 10.02.2011 11:29
Graach

Цитата:
Я прошла по коду дебагером и зашла в обработчик OnEditValueChanged дважды. Причем в пользовательском интерфейсе меняется значение лукапного поля только один раз.

Причем тут пользовательский интерфейс? Напишите в обработчике, например,
TcxLookupComboBox(Sender).EditValue := ???, и получите ещё один вызов обработчика события.

Цитата:
прикол был в том, что я получала значение лукапа через editvalue. Судя по всему при обращении к этому свойству компонент еще раз вызывал OnEditValueChanged

Бред! Чтение значения TcxLookupComboBox(Sender).EditValue никогда не вызовет срабатывание OnEditValueChanged
Автор: ThunderES
Дата сообщения: 10.02.2011 16:21
Подскажите, где найти файлы руссификации для DevExpress (Russian.ini, DevExRus100Proc.ini) для b. 54?
Автор: vladman
Дата сообщения: 11.02.2011 02:50
tanaseduard

Цитата:
Run-time Object Inspector посмотрел на компонент

А что это за такой Run-time Object Inspector?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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