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

» Использование DevExpress 2

Автор: brookson
Дата сообщения: 12.11.2007 19:07
Еще один есть вопрос. Если у кого есть хороший опыт использования PivotGrid, поделитесь.
Смогу ли я, имея 3 поля всего (дата, фамилия и описание), засунуть это в пивот грид:
дата в строках, фамилия в столбцах, а описания хочу видеть в ячейках.
Но оно символьное, и отображается только если Summary Type поставить Count - в виде количества (естессно=1).

А увидеть там текст не удаётся никак, ни Max, ни Min, как пишет описание.

И что, никаких шансов?
Автор: korobovmax
Дата сообщения: 12.11.2007 22:02
X11, еще надо указать KeyFieldNames или что-то похожее по названию. Тогда будет ок.
Можешь, как сам захотел, вместо DB-аварного компонента ипользовать его аналог (TcxLookupComboBox). Но тогда все ручками
Автор: zarogon
Дата сообщения: 12.11.2007 22:40
Ребят всем доброго времени суток. Я понимаю что вопрос может обсуждался уже много раз, но я пока не нашел как нормально установить DevExpress Bars, что на C++ 2006, что на 2007, у меня вышло токо на Delphi 2006 поставить. Очень прошу помощи в установке на любую из этих версий С++. Заранее огромное спасибо всем.
Автор: Beibut
Дата сообщения: 13.11.2007 06:00
А для установки пакета QuadrumExpress для Delphi 6 требуется установка какого либо дополнительного пакета? Ну чтобы при установке QuadrumExpress, он не ругался на отсутсвие других пакетов.
Автор: Shadi
Дата сообщения: 13.11.2007 06:27
Nikolay11111
zarogon
Beibut

1)
Тынц

См п.6

Далее ищем в форуме инфу по инсталу девчат..

2)
Тынц1

3)Внимательно смотрите шапку..

Автор: zarogon
Дата сообщения: 13.11.2007 07:19
Shadi спасибо большое за ответ
Автор: X11
Дата сообщения: 13.11.2007 08:54
Подскажите, пожалуйста, как в TcxLookupComboBox прокрутить записи программно?

если выполняю Table1.next, то на TcxLookupComboBox это не влияет
Автор: Dronton2
Дата сообщения: 13.11.2007 09:16
X11
Интересно, а в каком случае потребовалась программная прокрутка в TcxLookupComboBox?
Автор: yuish
Дата сообщения: 13.11.2007 09:32
Нашел глюк, которого раньше не было.
кинул на бар DataEdit1 (dxBarDateCombo) - так вот он не понимает ни каких присвоений дат. Раньше делал Dataedit1.Data:=now; - показывал как положено текущую дату. теперь, что бы не присвоил - показывает 1899год.
Стоят августовские девки. Кто нить сталкивался?

PS - Переставил девок на октябрьские - глюк пропал.
Автор: X11
Дата сообщения: 13.11.2007 10:01

Цитата:
Интересно, а в каком случае потребовалась программная прокрутка в TcxLookupComboBox?

Открываю форму, где пользователь вводит данные, нужно из БД прочитать данные и установить эти значения в списки, это раз (если редактирование). Затем, если добавление, то нужно установить в списки значения по умолчанию, или первые записи датасетов. Ну т.е. форму открыли и в зависимости от определённых условий установить нужные значения. То ли конкретные, то ли просто DataSet.First;
Автор: golkanavt
Дата сообщения: 13.11.2007 10:37
X11
Смотри в сторону EditValue
Автор: X11
Дата сообщения: 13.11.2007 14:52
чем отличается DeleteFocused от DeleteSelection у объекта TcxGridDBTableView? В справке не нашёл.

Добавлено:
Когда открываю список программно

то первая строка не выделенна

Код:
procedure TfmAdd.lcbActionEnter(Sender: TObject);
begin
if fIsAddMode then begin
(sender as TcxLookupComboBox).DroppedDown := true;
end;
end;
Автор: korobovmax
Дата сообщения: 13.11.2007 16:19
X11, разница в том, что Focused - только один элемент (в таблица может быть focused запись, focused ячейка в гриде). Он же является часть набора Selection. То есть Selection состоит минимум из focused элемента.
Соответственно, Selection - 1 и более выделенных элементов (например, в комбобоксе на приведенных картинках или те же несколько записей в таблице).
В итоге, при DeleteFocused удалиться "текущая"/"активная" запись, а при DeleteSelection - она же и другие записи (если они выделены).

Для перехода по контролам, ИМХО, учите пользоваться TAB и SHIFT+TAB, а внутри комбобокса - стрелки + ENTER.
Автор: X11
Дата сообщения: 13.11.2007 17:01

Цитата:
Для перехода по контролам, ИМХО, учите пользоваться TAB и SHIFT+TAB, а внутри комбобокса - стрелки + ENTER.

Нет, не согласен, клиент всегда прав, и он хочет так! Вот и всё. Предыдущих три программера провалились с написанием программы. Вот на таких мелочах можно часто выигрывать. Это называется удобность работы, эргономика.

Добавлено:

Цитата:
Для перехода по контролам, ИМХО, учите пользоваться TAB и SHIFT+TAB, а внутри комбобокса - стрелки + ENTER.

Ты хочешь сказать, что Tab автоматом сфокусирует запись, как показано на нижней картинке?

Добавлено:
Знаешь? Проверил. Не хочет . Смысл учить использовать таб?
Автор: korobovmax
Дата сообщения: 13.11.2007 17:17
Объясни подробнее, что значит

Цитата:
Для перехода по контролам использую enter





Цитата:
Нет, не согласен, клиент всегда прав, и он хочет так! Вот и всё. Предыдущих три программера провалились с написанием программы. Вот на таких мелочах можно часто выигрывать. Это называется удобность работы, эргономика.


А еще есть стандарты И, хотя, у MS они не очень четкие (сами иногда дурной пример подают), почему-то, переключаться по контролам любого окна выполняется по TAB и SHIFT+TAB. А по ENTER - нажатие выделенной кнопки по умолчанию.
Прикинь еще, пользователь после определенного времени и опыта работы с программой будет удивляться, почему в одной программе работает по ENTER, а остальном мире работает по TAB? )
В твоих силах сделать так, чтобы заказчик хотел, что правильно )

Добавлено:
Я не понял, ты контролами называешь элементы ComboBox'а? %)

Добавлено:
Получай:

var
ARecordIndex: Integer;
AKey: Variant;
begin
ARecordIndex := 0; // ИНДЕКС_ЭЛЕМЕНТА
AKey := <LookupComboBox>.Properties.DataController.GetRecordId(ARecordIndex);
<LookupComboBox>.EditValue := AKey;
end;

Лучше это делать не по событию OnEnter, а при открытии формы, например. Тогда будет в ComboBox установлено "значение по умолчанию", что есть гуд для любого пользователя.
И задисабли ввод значение (Properties.DropDownListStile := lsFixedList). У тебя фиксированный список, следовательно, ввод данных и быстрый набор не будет производиться.
Автор: Dennica
Дата сообщения: 14.11.2007 06:52
brookson

Цитата:

Нужен контекстный поиск либо по столбцам грида, либо по лукапному комбо, состоящему из нескольких полей. Есть такое - кто знает?
Инкрементный поиск, который IncSearch=True в TableView ищет с начала поля к сожалению.

Для организации контекстного поиска я использую следующие функции

Код:
//------------------------------------------------------------------------------
// Организация контектного поиска в cxLookupComboBox
//------------------------------------------------------------------------------

// Настрока комбобокса для поддержки контекстного поиска по подстроке
procedure TuneUpCxLookupComboBoxForFilteredSearchIn(ACombo: TComponent);
// После выбора значения снимаем фильтр
procedure CloseUpCxLookupComboBoxAfterFilteredSearch(Sender: TObject);
// Процедура выполняющая контекстный поиск в лукапкомбо
procedure FilteredSearchInCxLookupComboBox(Sender: TObject);
Автор: X11
Дата сообщения: 14.11.2007 09:45

Цитата:
Объясни подробнее, что значит

Цитата:
Для перехода по контролам использую enter


Цитата:
Объясни подробнее, что значит

Цитата:
Для перехода по контролам использую enter


неверно выразился, не я использую, а пользователи используют, т.е. enter как tab и, соответственно shift+enter как shift+tab

Добавлено:

Цитата:
В твоих силах сделать так, чтобы заказчик хотел, что правильно

в настройках есть чекбокс, пусть пользователь сам определяет, давай не удаляться от темы?

Добавлено:

Цитата:
Я не понял, ты контролами называешь элементы ComboBox'а? %)

нет, комбобокс - это и есть контрол

Добавлено:

Цитата:
И задисабли ввод значение (Properties.DropDownListStile := lsFixedList). У тебя фиксированный список, следовательно, ввод данных и быстрый набор не будет производиться.

да, так и сделано. Спасибо

Добавлено:
вот так реализовал:


Код:
procedure TfmAdd.lcbActionEnter(Sender: TObject);
var
ARecordIndex: Integer;
AKey: Variant;
begin
if fIsAddMode then begin
if (sender as TcxLookupComboBox).Properties.DataController.RecordCount > 0 then begin
ARecordIndex := 0; // ИНДЕКС_ЭЛЕМЕНТА
AKey := (sender as TcxLookupComboBox).Properties.DataController.GetRecordId(ARecordIndex);
(sender as TcxLookupComboBox).EditValue := AKey;
end;
end;
(sender as TcxLookupComboBox).DroppedDown := true;
end;
Автор: Dronton2
Дата сообщения: 14.11.2007 12:46
X11
ИМХО, всё же удобнее пользоваться TcxGrid или TcxDBVerticalGrid. У них в OptionsBehavior посмотри GotoNextCellOnEnter, FocusCellOn... и ImmediateEditor.
В качестве выпадающего списка - LookupDBCombobox, у которого поставить IncrementalFiltering := true;
ИМХО, это снимет лишнее кодирование.
Автор: Legion
Дата сообщения: 14.11.2007 13:21
Никто не натыкался на "неправильный" выход из cxVerticalGrid?
Например, на форме VerticalGrid и кнопка. После редактирования в гриде тыкаю мышой в кнопку, а результат - ноль. Кнопка нажимается только после второго клика.
Как бороться?
Автор: korobovmax
Дата сообщения: 14.11.2007 16:32
X11, с этого момента разбирайся сам
И не удаляйся от темы...
Автор: NuclearDeath1
Дата сообщения: 15.11.2007 12:55
Возможно, вопрос у меня простой, а возможно, и не очень )

Обыскал весь Яндекс, Гугл, Рамблер и пр., просмотрел всю Базу Знаний на офф-сайте - и почти ничего, кроме "How to set the height of data rows in the ExpressQuantumGrid" (_hxxp://www.devexpress.com/Support/Center/KB/p/A1617.aspx).

Вот стандартный вид таблицы : _hxxp://img405.imageshack.us/img405/1294/normalbz7.jpg

Вот вид таблицы, изменный так, как описано в "How to set the height of data rows in the ExpressQuantumGrid" : _hxxp://img401.imageshack.us/img401/1365/dataheightwy3.jpg

В любом случае, используем мы стандартный вид, или измененный, если изменить высоту заголовка столбца, получим следующий результат : _hxxp://img208.imageshack.us/img208/7941/bigheightvn6.jpg

Ищу решение, которое позволит изменять высоту заголовка столбца, при этом оставляя высоту ячеек в этом столбце неизменной.

Знает ли кто-нибудь решение, или в каком направлении его искать ?
Автор: Marina75
Дата сообщения: 15.11.2007 13:38
[q]Доброе время суток.
Есть такая проблема:
Есть cxGrid, в котором сделана группировка по 2 полям (для примера - группа, подгруппа).
Нужно: если выделение становится на группу, в соседнем гриде открывается список, относящийся к группе, НО если выделение становится на подгруппу - тогда в соседнем гриде должно быть выборка записей относящихся ТОЛЬКО к ПОДГРУППЕ!

Подскажите как это можно реализовать? Как можно определить какя группа в данный момент выделена?
Автор: korobovmax
Дата сообщения: 15.11.2007 13:49
NuclearDeath1, 2 идеи предлагаю:
1. <GridDBTableView>.OptionsView.HeaderHeight := XY, чтобы выставить для всех столбцов желательную высоту;
2. Событие <GridDBTableView>+<ИмяСтолбца>.OnCustomDrawHeader - прямо в нем руками с помощью местного Canvas'а рисовать заголовок столбца. Примеры рисования есть в Demos'ах стандартной поставки.


Добавлено:
Marina75, прочтите справку по TcxCustomDataController.OnGroupingChanged (в особенности, ссылки на "Groups").

Реализовать можно в <GridDBTableView>.OnSelectionChanged
Автор: NuclearDeath1
Дата сообщения: 15.11.2007 14:53

Цитата:
NuclearDeath1, 2 идеи предлагаю:
1. <GridDBTableView>.OptionsView.HeaderHeight := XY, чтобы выставить для всех столбцов желательную высоту;
2. Событие <GridDBTableView>+<ИмяСтолбца>.OnCustomDrawHeader - прямо в нем руками с помощью местного Canvas'а рисовать заголовок столбца. Примеры рисования есть в Demos'ах стандартной поставки.


Спасибо за идеи, но есть пара важных моментов :

У меня GridBandedTableView (на скриншоте "банды" имеют заголовки "Band 1" ... "Band 2"), хотя, возможно, это и не важно.

А изменять мне необходимо не высоту заголовков столбца (OptionsView.HeaderHeight), а высоту строк, которая должна не совпадать с нестандартной высотой столбца (см. неправильный вид : hxxp://img208.imageshack.us/img208/7941/bigheightvn6.jpg - ячейки в столбце "Col 3" должны иметь такую же высоту, как в других столбцах).
Автор: korobovmax
Дата сообщения: 15.11.2007 16:21

Цитата:
Ищу решение, которое позволит изменять высоту заголовка столбца, при этом оставляя высоту ячеек в этом столбце неизменной.


но


Цитата:
А изменять мне необходимо не высоту заголовков столбца (OptionsView.HeaderHeight), а высоту строк


Бр...

Напиши еще что-нибудь, чтобы понять, что тебе нужно.
Автор: NuclearDeath1
Дата сообщения: 16.11.2007 09:04
Плин, посмотрите 3 скрина в первом посте, на словах трудно пояснить.

Порядок действий : создайте Banded-таблицу, добавте несколько Banded и несколько столбцов, перетащите столбцы под Banded.

Все выглядит отлично и хорошо. Теперь увеличте мышкой высоту заголовка, например столбца #3. Что при этом произойдет с ячейками : ячейки, находящиеся в столбце #3, увеличат свою высоту настолько же, насколько увеличился заголовок, результат можно увидеть здесь hxxp://img208.imageshack.us/img208/7941/bigheightvn6.jpg.

А теперь, не трогая высоту заголовка столбца #3, сделайте так, чтобы ячейки в нем стали стандартной высоты (т. е. такой же высоты, как в столбцах #1 и #2).



Если еще проще : есть таблица hxxp://img208.imageshack.us/img208/7941/bigheightvn6.jpg. Как привести ее к виду hxxp://img205.imageshack.us/img205/1246/54900530uj7.jpg (картинка сделана в PhotoShop) ?
Автор: X11
Дата сообщения: 16.11.2007 09:42
это какой-то глюк, а какая версия у тебя?
Автор: Dronton2
Дата сообщения: 16.11.2007 10:01
NuclearDeath1
А для чего нужен такой изощрённый вид заголовка? Не проще ли сделать все заголовки одинаковой высоты, равной высоте максимального заколовка?
Автор: NuclearDeath1
Дата сообщения: 16.11.2007 10:54
Вот примерный вид таблицы, какая она получается сейчас : hxxp://img255.imageshack.us/img255/9168/50747119cv9.jpg

Чтобы заголовки столбцов рисовались вертикально, используется cxGrid1BandedTableViewColmun<N>.OnCustowDrawHeader, где <N> - номер столбца. Больше никаких изменений в коде нет.

На приведенном примере в таблице есть всего 3 строки, планируемое количество от 10 до 50 - при этом общая высота таблицы будет черезмерно большой, с полосами прокрутки и пр.

Еще можно добавить, что в реальном проекте высота заголовков столбцов будет примерно в 2 раза больше, что еще более увеличит высоту таблицы.

Если каким-либо образом сделать высоту ячеек произвольно регулируемой независимо от высоты заголовков столбцов, или хотя бы стандартной высоты, это бы сократило размер таблицы на порядок.

Вот так ...

P.S. Версия DevExpress ExpressQuantumGrid Suite 6.28 for Delphi
Автор: Dronton2
Дата сообщения: 16.11.2007 12:26
NuclearDeath1
Вместо Column.Position.LineCount
используй TableView.OptionsView.HeaderHeight
предварительно нужно вычислить длину текста заголовка в пикселях.

Можно, конечно, пользоваться TableView.OnGetCellHeight, но это может быть более сложным способом.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

Предыдущая тема: Язык программирования на русском языке


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