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

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

Автор: BlackVetal
Дата сообщения: 18.03.2013 05:41
vcrank
Я конечно никада не видел девки под делфи, но для C# более чем достаточно возможностей для фильтрации встроенных возможностей - правой кнопкой по заголовку колонки и там можно вызвать конструктор фильтрации. и не только - строка автофильтра, строка поиска, группировки и т.д.
Автор: marser
Дата сообщения: 18.03.2013 06:55
vcrank

Цитата:
Как в фильтре по дефолту сделать условие ИЛИ ?

cxGridTableView.DataController.Filter.Root.BoolOperatorKind := fboOr
Автор: X11
Дата сообщения: 18.03.2013 07:34
посмотри свойства датаконтроллера в инспекторе объектов
Автор: vcrank
Дата сообщения: 18.03.2013 14:58

Цитата:
правой кнопкой по заголовку колонки и там можно вызвать конструктор фильтрации. и не только - строка автофильтра, строка поиска, группировки и т.д.

Под Delphi аналогично. Только гораздо удобнее (в некоторых случаях) делать фильтр программно. Например, есть 4-5 колонок с текстом. Юзер точно не уверен в какой колонке может содержаться нужная информация. Поэтому нужно такое решение - отдельно поле для поиска, которое будет формировать запрос OR по всем колонкам. Это гораздо быстрее, чем настраивать фильтр ручкам по каждой колонке

marser
X11
Благодарю. Обязательно проверю

P.S.: Подозреваю, что мой следующий вопрос будет по DBChartView или какой компонент позволяет строить график по данным из БД?
Автор: X11
Дата сообщения: 18.03.2013 14:59
Tchart, идёт в поставке с Delphi
Автор: vcrank
Дата сообщения: 18.03.2013 18:48

Цитата:
Tchart, идёт в поставке с Delphi

А есть пример работы с ним? Погуглил и сходу не нашёл.
По сути есть запрос, который выводит 2 поля: Дата и Значение (варьируется +/- 10 от среднего показателя). Надо просто вывести график (не параллелепипедами, а ломаной кривой)
Автор: V1s1ter
Дата сообщения: 18.03.2013 19:40
vcrank

Цитата:
А есть пример работы с ним?

http://rghost.ru/44599452

Добавлено:
И это не ветка форума про TeeChart.
Автор: reenoip
Дата сообщения: 20.03.2013 09:53
В "cxDBCheckComboBox" необходимо "вшить" вид типа tree (дерево). Такое вообще реально, нет?
Автор: dimm78
Дата сообщения: 20.03.2013 10:26

Цитата:
В "cxDBCheckComboBox" необходимо "вшить" вид типа tree (дерево). Такое вообще реально, нет?

Можно использовать TcxPopupEdit. В качестве PopupControl присвоить ему TcxTreeList у которого одна из колонок отображается в виде чекбокса.
Автор: X11
Дата сообщения: 20.03.2013 12:22
Поддерживаю dimm78.
Я именно почти и сделал. Только использовал CheckGroups.

Вот, попытался описать
http://www.sql.ru/blogs/x11/1482
Автор: GaryAnikin
Дата сообщения: 20.03.2013 14:19
[more] Здравствуйте, есть 4 таблицы. Страна,регион,район,город.
Как построить дерево с помощью DevExpress? Дерево может быть с пропусками,т.е. город может принадлежать либо району, либо региону, либо стране.
CREATE TABLE country(country_id int PRIMARY KEY IDENTITY,
country_name VARCHAR(30) NOT NULL);
CREATE TABLE region(region_id int PRIMARY KEY IDENTITY,
region_name VARCHAR(30) NOT NULL,
country_id INTEGER NOT NULL,
FOREIGN KEY(country_id) REFERENCES country(country_id));
CREATE TABLE raion(raion_id int PRIMARY KEY IDENTITY,
raion_name VARCHAR(30) NOT NULL,
country_id INTEGER NOT NULL,
region_id INTEGER NULL,
FOREIGN KEY(country_id) REFERENCES country(country_id),
FOREIGN KEY(region_id) REFERENCES region(region_id));
CREATE TABLE city(city_id int PRIMARY KEY IDENTITY,
city_name VARCHAR(30) NOT NULL,
country_id INTEGER NOT NULL,
region_id INTEGER NULL,
raion_id INTEGER NULL,
FOREIGN KEY(country_id) REFERENCES country(country_id),
FOREIGN KEY(region_id) REFERENCES region(region_id),
FOREIGN KEY(raion_id) REFERENCES raion(raion_id)); [/more]
Автор: X11
Дата сообщения: 20.03.2013 15:03
При чем тут DevExpress?
Вам, скорее всего, в раздел по SQL.
Составьте запрос, если получится, с использованием UNION ALL, где будет:
ID
PARENT
NAME

а уж потом думайте про DevExpress.

Добавлено:
Народ DevExpress`у приписывает по истине магические свойства
Автор: reenoip
Дата сообщения: 26.03.2013 13:17

Цитата:
Я именно почти и сделал. Только использовал CheckGroups.
Вот, попытался описать
http://www.sql.ru/blogs/x11/1482


X11
если не затруднит - поделитесь рабочим примером, пожалуйста. А то по Вашей ссылке у меня тоже только "почти" и получается, к сожалению
Автор: X11
Дата сообщения: 26.03.2013 13:54
Отдельно рабочего примера нет. И нет сейчас времени на его реализацию. Нужно создать базу или memory table, перенести код в новое приложение. Может сделать чуть позже.



Цитата:
"почти" и получается

Вы там или здесь напишите, что и как делаете, что не получается, картинки, код покажите.
Автор: sobolenok
Дата сообщения: 27.03.2013 07:31
Добрый день! В cxImage при использовании стандартного popup меню есть возможность получить имя загружаемого файла?
в гугле нашел только такой ответ:

Ответ

переназначать свой popup непозволительно.
Автор: X11
Дата сообщения: 27.03.2013 11:26
Не могу понять, что сломалось в XE3.
Не видит девовские DCU.
Недавно тоже кто-то описывал подобную проблему.
Так вот. Оказалось, что я экспериментировал и в конфиг проекта, в Target platform добавил x64.
И активировал. Но пути в настройках IDE не прописаны, поэтому среда не видела dcu.
Пути для x64 и для x32 разные
Автор: delover
Дата сообщения: 28.03.2013 10:44
Мне DevExpress понравились.
Датасет у меня не дружил только с девикс. Что я только не делал - локейты по таймеру, забирал датасет у датасурса и тд. Оказалось ему нужен DataSet.BookmarkValid. Добавил всего 4 строчки и вообще все глюки исчезли. Гридина как гридина - всё адекватно хоть опции меняй. )
Автор: reenoip
Дата сообщения: 28.03.2013 17:56
В демках (\ExpressQuantumTreeList\Demos\Delphi\CheckGroupsDemo\CheckGroupsDemo.dpr) есть пример с компонентом cxTreeList. Как его можно настроить таким образом, чтобы при клике по любой области одной строки CheckBox текущей строки менял свой статус (checked/unchecked)? Сейчас он меняет статус лишь при клике по нему самому (область примерно 16х16), а у меня очень широкое дерево, и желательно сделать реакцию на клик курсором в любой области строки. Любопытно, что при выделении строки и нажатии пробела на клавиатуре статус CheckBox'а меняется, а вот по клику - нет
Автор: BlackVetal
Дата сообщения: 29.03.2013 05:37
reenoip
посмотрите есть ли такое свойство CheckOnClick - должно true быть в нем. правда это работает только если кликаешь по колонке с checkbox.
ну а другой способ - на событие Click ставить check у focused строки ...
Автор: reenoip
Дата сообщения: 29.03.2013 07:00

Цитата:
посмотрите есть ли такое свойство CheckOnClick - должно true быть в нем. правда это работает только если кликаешь по колонке с checkbox.

именно это сейчас и происходит.




Цитата:
другой способ - на событие Click ставить check у focused строки

вот именно это мне и нужно знать.
Автор: BlackVetal
Дата сообщения: 29.03.2013 07:38
reenoip
для C# на событие Click

Код:
TreeListNode node = ((TreeList)sender).FocusedNode;
node.SetValue(ИмяКолонкиCheckBox,
!(bool)node.GetValue(ИмяКолонкиCheckBox));
Автор: reenoip
Дата сообщения: 29.03.2013 14:08
Спасибо, конечно, но что мне с этим делать теперь - ума не приложу )))


Мне это напомнило историю, когда я, выложив отрывок текста на японском языке на форуме переводчиков, попросил перевести его на русский (там фрагмент-то был всего-ничего, на десяток-полтора строчек). А мне взяли и перевели мой текст на испанский. Мне вроде бы и помогли как смогли, но от этого перевода мне, почему-то, легче не стало








p.s.
Ничего личного, просто настроение подняли

Добавлено:
В смысле, мне бы на Delphi Ваш совет как-то интерпретировать надо. Я и с одним-то языком совладать не могу, а уж с двумя и подавно не справлюсь.
Автор: X11
Дата сообщения: 30.03.2013 20:10
Не могу понять, почему часто вываливается ошибка. Иногда всё ок.

Есть код получения значения ключевого поля дерева TcxDBTreeList.

Код: Var
vNode: TcxDBTreeListNode;
begin
...
...

vNode := TcxDBTreeListNode(tree.Root);//получаем корневой узел
if not Assigned(vNode) then Exit;//не удалось получить корневой узел - выходим их процедуры
...
...
while Assigned(vNode) do//цикл по всем узлам дерева
begin
if not VarIsNull(vNode.KeyValue) then
s := VarToStr(vNode.KeyValue); // ЗДЕСЬ ОШИБКА

...
...
Автор: BlackVetal
Дата сообщения: 01.04.2013 07:12
reenoip
Понимаю тебя ... но делфи забросил очень давно и перешел на студию от мелкософта (в основном c#).
Мене самому очень тяжело что-то советовать людям кто пользуется делфи - Дэвки под студию очень сильно отличаются от Дэвок под делфи.
Например, большинство проблем которые решают здесь парни - уже реализованы с помощью одной замечательной библиотеки - XPO. Более скажу - из-за этой библиотеки я уже стал забывать SQL (селекты, инсерты и тому подобное)... я практически не залазию в базу - например, создание таблицы - я делаю через XPO, поменять тип данных - через ХРО, элементарные команды добавление, удаление и изменение строки - через ХРО. Вообщем, очень много вкусностей ...
Это позволяет больше думать об архитектуре и логике программы.
Поэтому извиняй за мой предыдущий ответ.
Автор: reenoip
Дата сообщения: 01.04.2013 08:10
BlackVetal
да перестань, извинений не нужно, никаких проблем нет, я вообще сам виноват: не указал в своём вопросе платформу. В любом случае - спасибо большое за помощь!
Автор: X11
Дата сообщения: 01.04.2013 13:29
Я не понял, а что DevExpress сделали свой грид бесплатным для одиночных разработчиков?!
devexpress.com/ClientCenter/Default.aspx
Автор: makz
Дата сообщения: 02.04.2013 02:25
X11

Цитата:
Project raised exception class EVariantBadVarTypeError with message 'Invalid variant type'.

А variant ли там на самом деле в KeyValue? Если да, вообще VarToStr ни к чему. Может ему лучше сказать, что он string?

Никто так и не заценил первоапрельский юмор. :-\
Автор: X11
Дата сообщения: 04.04.2013 14:49
Редактирование и добавление записей в cxDBTreeList

Для добавления записи в cxDBTreeList нажимаю Insert или Ctrl+Insert, что-то ввожу и потом нажимаю клавишу вверх или вниз. Курсор перебрасывает фиг знает куда, вообще в другую ветку дерева.
Дерево TcxDBTreeList привязано к TpFibDataset. Все свойства дерева типа KeyField, ParentField прописаны правильно.
В запросе FibDataset`а кляуза order by отсутствует, свойства AutoUpdateOptions заполнены.
Можно ли cxDBTreeList заставить не перемещать курсор после добавления записи?

Далее.
Чтобы завершить редактирование и сохранить данные в базу, я хочу использовать событие OnKeyDown. Я так понимаю, что лучше всего именно его использовать.

Код такой:

Код: if Assigned(TcxDBTreeList(Sender).FocusedNode) and (Key = VK_RETURN) then
if TcxDBTreeList(Sender).FocusedNode.IsEditing then
TcxDBTreeList(Sender).DataController.Post;
Автор: delover
Дата сообщения: 05.04.2013 08:15
Незнаю как настроить виндовую кнопку в гридине, которая вызывает локальное меню - попапину. В Delphi7 вообще не работает, а в 2010 открывает меню в левом верхнем углу, надо чтобы открывало под текущей записью по середине гридины.
Автор: delover
Дата сообщения: 10.04.2013 17:47
Проблемму решил - достаточно легко реализуется. Клавиша локального меню - это VK_APP. FocusedBounds найти сложно но я нашол. Сделал +100 +15 и у меня почти как в Экселе и виндовсе.

ps
Сори как я вытаскиваю FocusedBounds выложу завтра. Есть процедура которая грузит сеттинги Грида, думаю туда повесить.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211

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


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