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

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

Автор: X11
Дата сообщения: 22.04.2011 17:07
Есть DLL в виде плагина.
Форма, на форме cxGrid, cxGridDBTableView.
Странность в том, что при создании формы сразу вываливается исключение, если в гриде есть хоть одна колонка.

Сам грид и собственно колонка никуда и ни к чему не привязаны.

Access violation at address 06FC1F09 in module 'ApartSearch.dll'. Read of address 00000000.

Даже не знаю, в какую сторону копать.
Автор: TechnoDreamer
Дата сообщения: 22.04.2011 17:45
fexmusicmutuz
Такого нет... тем более с каких это пор 1К записей это большая таблица?
Автор: marser
Дата сообщения: 22.04.2011 19:58
NickNNN

Цитата:
Подскажите пожалуйста, какое событие отвечает за нажатие на кнопку выпадающего списка Inplace editor-а при редактировании колонки в CxGrid. Для определенных полей я хочу чтобы выпадал не стандартный список значений, а открывался мой справочник.

А подоходчивей вопрос можно сформулировать, или хотя бы PropertiesClass указать. В общем случае, при нажатии кнопки отрабатывает событие Properties.OnButtonClick. А Вы форум читаете? На предыдущей странице давили совет для fortezza, как заменить лукапный список на окно-диалог.

Автор: fexmusicmutuz
Дата сообщения: 22.04.2011 20:49

Цитата:
Такого нет... тем более с каких это пор 1К записей это большая таблица?

А где я про 1К писал?
Автор: V1s1ter
Дата сообщения: 22.04.2011 23:17
fexmusicmutuz
Еще был один компонент VirtualTreeView. Я ним не работал, но помню там тоже была какая то оптимизация, может Вам водойдет.
Но можно сделать на cxVirtalTree по Вашему же алгоритму обработки собыния OnNodeExpand

Цитата:
1)Пользователь раскрыл ветку
2)Ушел запрос к СУБД за данными (SELECT * FROM tree WHERE parent_id = arent_id)
3)полученные данные добавились в грид/дерево


Автор: TechnoDreamer
Дата сообщения: 22.04.2011 23:31
fexmusicmutuz
KK наверное тысяча тысяч значит :-D

Ну а вообще, DB-aware контролы (то что подразумевается в VCL под этим) так работать не могут, это подразумевает изменение лежащего в основе TQuery. Я так понимаю вам необходимо только отображать дерево, о редактирование речи не идет?

Добавлено:
VirtualTreeView отличный выбор, только без всяких DB-aware. Всё ручками.
Автор: V1s1ter
Дата сообщения: 23.04.2011 00:10
TechnoDreamer
fexmusicmutuz

Цитата:
VirtualTreeView отличный выбор, только без всяких DB-aware. Всё ручками.

Не все к нему куча addonov помоему DynamicTreeView работает как раз с DB-aware.
Автор: Chukotka
Дата сообщения: 23.04.2011 16:17
Каким образом заставить Ribbon реагировать на смену скина на форме в рантайм?
Использование Ribbon.ColorSchemeName := <SkinName>, LookAndFeelController, SkinController ничего не дает: все контролы реагируют на смену скина, а риббон - нет.
Причем на изменение ColorSchemeName в дизайне риббон реагирует.
Devx 55, Delphi 2010.
Автор: marser
Дата сообщения: 24.04.2011 06:30
fexmusicmutuz

Цитата:
Должно выглядеть примерно так:
1)Пользователь раскрыл ветку
2)Ушел запрос к СУБД за данными (SELECT * FROM tree WHERE parent_id = arent_id)
3)полученные данные добавились в грид/дерево

Это чем-то напоминает принцип работы Master-Detail. Предлагаю посмотреть в сторону построения иерархического списка на основе реализации Master-Detail в TcxGrid. В Runtime выяснить количество дочерних уровней и для каждого дочернего уровня динамически создать DataSet и cxGridDBTableView (DataController.DataModeController.DetailInSQLMode := True).
Автор: NickNNN
Дата сообщения: 25.04.2011 11:48
marser, большое спасибо за ответ! Куда копать я уже понял.

Поиск по форуму ничего не дал, так толком не понимаю что искать - все таки Cxgrid далеко ушел от стандартного.
Автор: marser
Дата сообщения: 25.04.2011 13:41
NickNNN

Цитата:
Поиск по форуму ничего не дал, так толком не понимаю что искать

А я толком вопрос не понимаю.

Цитата:
marsen
А подоходчивей вопрос можно сформулировать


Цитата:
Для определенных полей я хочу чтобы выпадал не стандартный список значений, а открывался мой справочник.

И где Вы увидели стандартный список значений?

Цитата:
marsen
или хотя бы PropertiesClass указать

Автор: tatbesidovska
Дата сообщения: 25.04.2011 15:37
ПОдскажите, используя какие компоненты DevExpress можно реализовать такую вещь: Есть форма, на ней TextEdit, DateEdit и т.д. , заполненные данными из базы данных. Нужно перенести эти данные в документ-шаблон Word в определенные места-вроде закладки они называются. Спасибо..
Автор: X11
Дата сообщения: 25.04.2011 19:15
Мдааа... я смотрю, что у народа складывается впечатление, что у DevExpress есть даже такие компоненты, которые переносят данные из TextEdit, DateEdit в шаблон Word`а
Автор: NickNNN
Дата сообщения: 26.04.2011 12:37
marser, мне необходимо было найти событие, аналогичное TDBGrid.OnEditButtonClick

Ваш ответ очень помог, оно находится в TcxGridDBColumn.Properties
Автор: tatbesidovska
Дата сообщения: 26.04.2011 13:27
помогите, пожалуйста, с dateEdit и LookUpEdit. Нужно получить значение из этих контролов. Какие свойства нужно брать. Беру .editValue, если поле пустое возвращается ошибка
Автор: marser
Дата сообщения: 26.04.2011 14:36
tatbesidovska

Цитата:
помогите, пожалуйста, с dateEdit и LookUpEdit. Нужно получить значение из этих контролов. Какие свойства нужно брать. Беру .editValue, если поле пустое возвращается ошибка

Все правильно, EditValue нужно брать. Если поле пустое, то EditValue равно Null. Напишите подробнее или приведите фрагмент кода, чтобы понять где ошибка.
Автор: X11
Дата сообщения: 26.04.2011 15:10
tatbesidovska, научитесь задавать вопросы, здесь телепатов нет. Неужели текст ошибки так тяжело скопировать?
Да и почитать пару книг по программированию не мешало бы.

Моя телепатия подсказывает, что у Вас ошибка из-за того, что Вы присваиваете значение NULL текстовой или целочисленной переменной. Вам нужно проверить значение вначале. Что-то типа:

Код: if VarIsNull(LookUpEdit.properties.value) then
a := -1
else
a := LookUpEdit.properties.value
Автор: tatbesidovska
Дата сообщения: 26.04.2011 15:36
Ошибка при добавлении в базу , поле date_pl_vpl пустое, отсюда: Строка не распознана как действительное значение DateTime.Невозможно сохранить <> в столбце date_pl_vpl. Ожидался тип DateTime.
Автор: vladman
Дата сообщения: 27.04.2011 02:12
tatbesidovska

Цитата:
Ошибка при добавлении в базу , поле date_pl_vpl пустое, отсюда: Строка не распознана как действительное значение DateTime.Невозможно сохранить <> в столбце date_pl_vpl. Ожидался тип DateTime.

Используйте функцию StrToDateDef(...), либо VarToDateTime(...), либо напишите что-то свое в этом же духе, что удовлетворяло бы вашим условиям сохранения в поле date_pl_vpl Null значения.
Автор: BlackVetal
Дата сообщения: 27.04.2011 05:52
tatbesidovska
EditValue возвращает тип Object (для C#) и смею предположить для Delphi - variant, то есть вам нужно преобразовать обязательно в тот тип, который у переменной (или поле в таблице). Уважаемый vladman вам правильно привел примеры для вашего кода.
Автор: Net09
Дата сообщения: 27.04.2011 08:29
Столкнулся с проблемой сортировки в cxGrid (при клике по заголовку столбца).
Есть база firebird и таблица, в которой varchar поле c кодировкой UTF8 и collate UNICODE.
Так вот, данный столбец сортируется следующим образом: сначала идут прописные буквы, потом строчные (бинарная сортировка), а необходимо по алфавиту.
При выборе данных select-ом с сортировкой по этому полю все проходит замечательно и сортируется в соответствии с collate UNICODE (большие/маленькие не различает).
Может есть какие настройки в гриде, или необходимо вмешиваться в процедуру сортировки?
Сервер FB 2.1.3.18185, база диалект 3, utf8. DevExpress x55
Автор: marser
Дата сообщения: 27.04.2011 08:46
Net09
cxGridDBTableView.DataController.Options := cxGridDBTableView.DataController.Options + [dcoCaseInsensitive]
Автор: X11
Дата сообщения: 27.04.2011 08:52
Net09, гриду пофиг на СУБД, т.к. грид сортирует на стороне клиента. Посмотри свойства DataController`а.
<TcxGridDBTableView>.DataController.Options.dcoAnsiSort
<TcxGridDBTableView>.DataController.Options.dcoSortByDisplayText

а также
<TcxGridDBColumn>.Options.SortByDisplayText
Также нужно выбрать правильный тип (свойство Properties) колонки.


Добавлено:

Цитата:
cxGridDBTableView.DataController.Options + [dcoCaseInsensitive]

Разве это не для фильтра?
Автор: Net09
Дата сообщения: 27.04.2011 08:54
marser, X11
Спасибо! опция dcoAnsiSort решила проблему!
Автор: marser
Дата сообщения: 27.04.2011 09:55
X11

Цитата:
Разве это не для фильтра?

Не только для фильтра. Опции только для фильтра в cxGridDBTableView.DataController.Filter.Options. Прежде чем написать я проверил: dcoCaseInsensitive в cxGridDBTableView.DataController.Options также влияет на поcледовательность сортировки.
Автор: vcrank
Дата сообщения: 27.04.2011 10:23
Помогите пожалуйста со следующей проблемой:
Имеется сетка, связанная с базой. Один из столбцов имеет свойство Properites = RichEdit
Данные в базу заносятся запросами. Проблема в том, что я не знаю, как сохранить форматированный текст в базу.
Запрос на добавление данных формируется так:

Код: s := s + Fields.Fields[i].DisplayLabel + ': ' + CheckNull(old, ft) + ' >> ' + CheckNull(new, ft) + #10;
AddDataToDetail(DataSet.FieldByName('MID').AsInteger, 'Изменение', s);
Автор: tatbesidovska
Дата сообщения: 27.04.2011 15:58
можно ли в lookUpEdit не только выбирать из списка но и писать в нем? спасибо
Автор: ab000001
Дата сообщения: 27.04.2011 16:05
Имеется cxGrid, cxGridDBTableView, колонка LookupComboBox

Что-то ввожу, в процессе ввода переключаюсь по Alt+Tab в окно другой программы, возвращаюсь, курсор ввода сбрасывается в первую позицию. Можно ли как-нибудь сохранять позицию курсора?

Спасибо
Автор: X11
Дата сообщения: 27.04.2011 21:16

Цитата:
можно ли в lookUpEdit не только выбирать из списка но и писать в нем?

Можно. Свойство <TcxLookupComboBox>.properites.DropDownListStyle должно иметь значение, отличное от lsFixedList.

И следовало бы изучить вначале компоненты, их свойства, а потом уже начинать с ними работать. Посмотрите примеры, почитатй в справке общую концепцию, почитайте в рунете статьи по DevExpress. Просто Вы забиваете такими простейшими вопросами форум. А ведь на форум подписано очень много людей. Представьте, сколько это трафика из за Вашей лени.

Добавлено:
ab000001, попробуйте поиграть со свойством ImmediatePost.

И вообще не понятно. Вы говорите, что вводите... я так понял печатаете с клавиатуры, не выбираете, а потом оказывается, что выбрана первая запись выпадающего списка? Или как?
Автор: BlackVetal
Дата сообщения: 28.04.2011 05:32
ab000001
а у вас нет загрузки данных после завершения редактирования ? когда вы переключаетесь на другую программу - автоматом происходит завершение редактирования ... ну а если есть после этого загрузка данных (для обновления формы) - курсор перескакивает на первую запись.
ОФТОП. Выход либо юзать BindixContext для обновления (хотя не знаю в delphi есть такое), либо переходить на C# и использовать XPO (есть возможность перезагрузки конкретной одной записи, что в свою очередь не сбивает курсор).

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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