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

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

Автор: Garrett
Дата сообщения: 21.05.2007 20:08
saltmi1
Chm-хелпы можно скачать с сайта. Качество очень хорошее.
Автор: Barsakov
Дата сообщения: 22.05.2007 06:42
Великие Гуру нужна Ваша помощь!
Погибаю, уже сил нету (
Как в PivotGride при наводке на определенную ячейку получить её родителей, т.е. получить заголовок колонки и все заголовки по строке.

ПЫ.СЫ. На Devexpress.com вроде смотрел, но ничего похожего не нашел.
Автор: Dronton2
Дата сообщения: 22.05.2007 11:26
Barsakov
На devexpress.com есть пример:

Код: procedure TForm1.DBPivotGridClick(Sender: TObject);
var
ACrossCell: TcxPivotGridCrossCell;
begin
with DBPivotGrid.HitTest do
if HitAtDataCell then
Caption := TcxPivotGridDataCellViewInfo(HitObject).DataField.Name;
end;
Автор: Z_E_T
Дата сообщения: 22.05.2007 12:41
Привет всем!!!!
У меня вопрос по компоненту cxGrid. Есть табл в нём обно поле типа DateTime, в cxGrid в Properties ставлю значение DateEdit, при редактировании этого поля возникает ошибка:
Overflow while converting varian of type(integer) into type(Data). Я не пойму почему она возникает, как от неё избавится?
Автор: ArtemiyUO
Дата сообщения: 22.05.2007 16:39
Поле БД (датасета) наверно integer, сделайте его datetime.
Автор: Z_E_T
Дата сообщения: 23.05.2007 07:12
ArtemiyUO

Добавлено:
Пардон, в том то дело что в БД тоже datetime
Автор: Truncate
Дата сообщения: 23.05.2007 08:20
Если Вас незатруднит ответить на вот такой вопрос.

Как всетаки заставить при фильтрации первого поля списка, во втором, поле в списке, были данные только те которые уже отфильтрованы и присуще первому значению ???????

типа distinct where


И тут смотрел
Переписываещь событие OnGetFilterValues и в список AValueList, заносищь только те значения которые видны на данный момент.


И тут


onGetFilterValues(Sender: TcxCustomGridTableItem; AValueList: TcxDataFilterValueList);

if Sender.Index=MyColumn.Index then
... заполняем для колонки MyColumn
else
... заполняем для других колонок

И демки смотрел немогу я найти примера OnGetFilterValues так бы не спрашивал и хелп смотрел толком нет ничего, конечно можно говорить что не достаточно развит но ведь всему же можно научится.

ПЛЗ научите !!!!! Покажите.

В дальнейшем обещаю выложить далее чтоб все такие как я могли воспользоваться вашим советом.


СПАСИБО.
Автор: Z_E_T
Дата сообщения: 23.05.2007 09:51
Truncate
Попробуй на уровне SQL запроса сделать
Автор: Truncate
Дата сообщения: 23.05.2007 10:36
Z_E_T

Нашел пример в демках cxGrid1DBTableView1DataControllerFilterGetValueList


Код: var
AColumn: TcxGridDBColumn;
ADataSet: TDataSet;
AProperties: TcxLookupComboBoxProperties;
AValue: Variant;
AIsLookupColumn: Boolean;
begin
ADataSet := TcxGridDBTableView(Grid.FocusedView).DataController.DataSet;
AColumn := TcxGridDBTableView(Grid.FocusedView).Columns[AItemIndex];
AIsLookupColumn := AColumn.PropertiesClass = TcxLookupComboBoxProperties;
with GridModeDemoDataDM do
try
Screen.Cursor := crHourGlass;
qryHelper.SQL.Clear;
qryHelper.SQL.Add(
'Select DISTINCT ' + AColumn.DataBinding.FieldName + ' From ' +
GetTableNameByDataSet(ADataSet));
qryHelper.SQL.Add(
GetSQLCondition(TcxGridDBTableView(Grid.FocusedView), False));
qryHelper.Open;
qryHelper.First;
while not qryHelper.Eof do
begin
AValue := qryHelper.Fields[0].Value;
if AIsLookupColumn then
begin
AProperties := TcxLookupComboBoxProperties(AColumn.GetProperties);
ADataSet := AProperties.ListSource.DataSet;
AValue := ADataSet.Lookup(
AProperties.KeyFieldNames,AValue, AProperties.ListFieldNames);
end;
if VarIsNull(AValue) then Exit;
AValueList.Add(fviValue, qryHelper.Fields[0].Value, AValue, False);
qryHelper.Next;
end;
qryHelper.Close;
finally
Screen.Cursor := crDefault;
end;
end;
Автор: Dronton2
Дата сообщения: 23.05.2007 11:27
Truncate

Цитата:
у меня вылетает ошибка что выхожу за пределы памяти

На какой строке кода вылетает ошибка? Какие значения переменных, участвующих в этой строке? Дебагером пользуешься?
Автор: Truncate
Дата сообщения: 23.05.2007 15:11
Dronton2[\b]
У меня ошибка на выходе из процедуры после end; непойму почему

Я поспрашивал у Друзей значит у меня стоит 5я версия



[b]Добавлено:

Упс прастите нажал Enter


Dronton2


У меня ошибка на выходе из процедуры после end; не пойму почему

Я поспрашивал у Друзей значит у меня стоит 5я версия

У них шестая

Так вот чтоб добиться грамотной фильтрации необходимо проста в свойстве


Код: cxGridDBTableView. Filtering.ColumnFilterefItemsList:=True;
Автор: onyxhall
Дата сообщения: 26.05.2007 13:25
Подскажите пожалуйста:
при создании базы данных в Access в таблице в одном из полей использовался мастер подстановок и там задан фиксированный набор значений. При работе c этой таблицей в Access (например заполнении ее данными) это поле видно как ComboBox с этими заданными значениями.
Как сделать так, чтобы это поле выглядело так же при просмотре этой таблицы в QuantumGrid(в cxGridDBTableView) и в DBVerticalGrid?
Автор: xitsmex
Дата сообщения: 27.05.2007 15:23

Цитата:
Подскажите пожалуйста:
при создании базы данных в Access в таблице в одном из полей использовался мастер подстановок и там задан фиксированный набор значений. При работе c этой таблицей в Access (например заполнении ее данными) это поле видно как ComboBox с этими заданными значениями.
Как сделать так, чтобы это поле выглядело так же при просмотре этой таблицы в QuantumGrid(в cxGridDBTableView) и в DBVerticalGrid?

Использовать для этой колонки ImageComboBox.
Автор: onyxhall
Дата сообщения: 27.05.2007 18:35
xitsmex
Мог бы ты немного подробнее объяснить? И почему именно IMAGEComboBox, данные то - текст?


После соединения с БД (ConnectionString формируется динамически)
попробовал вот так

Код: cxGridDBTableView1.DataController.CreateAllItems(false);
cxGridDBTableView1.GetColumnByFieldName('ВидВалюты').PropertiesClass := TcxComboBoxProperties;
TcxComboBoxProperties(cxGridDBTableView1.GetColumnByFieldName('ВидВалюты').Properties).DropDownListStyle := lsEditList;
Автор: radm1
Дата сообщения: 28.05.2007 00:05
Что то я так и не смог найти ответ - как подружить грид с баром?
Скачал у китайцев грид 6.25 - встал нормально всё Ок
Скачал там -же бар 6.25 - не встаёт зараза ни в какую !
ошибка при попытке установки модуля бара -
The procedure entry point @Dxuxtheme@..... и Т.Д.
Короче не находит точки входа в своей же библиотеке GDIplus.
Кто знает что делать ?
Автор: Bol970
Дата сообщения: 28.05.2007 07:11
Здравия желаю All.

Трабла постигла меня, второй день немогу найти решенья.
Вроде все просто Grid с данными, сортировка по одной колонке и событие
OnGetContentStyle.

Так вот вся проблема заключается в том, что OnGetContentStyle раскрашивает строки не учитывая сортировки, словно ни какой сортировки и нет.

Помогите, ткните носом куда копать, пожалуйста.
Автор: Dennica
Дата сообщения: 28.05.2007 08:07
Bol970
покажи содержимое OnGetContentStyle
Автор: Bol970
Дата сообщения: 28.05.2007 08:25
Dennica

Приблизительно вот так.


Код:
procedure TForm.TableViewStylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
if (ColumnType.Index = AItem.Index) and
(Sender.DataController.GetDisplayText(ARecord.Index, AItem.Index) = 'Type1')
then
AStyle := StyleType1
else
AStyle := StyleType2;
end;
Автор: Dennica
Дата сообщения: 28.05.2007 09:13
Bol970
Замени строчку

Код: (Sender.DataController.GetDisplayText(ARecord.Index, AItem.Index) = 'Type1')
Автор: Bol970
Дата сообщения: 28.05.2007 09:29
Dennica

ОГРОМНОЕ СПАСИБО!

Вот так, все сработало как надо.


Код:
procedure TForm.TableViewStylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
if ARecord.Values[ColumnType.Index] = 'Type1' then
AStyle := StyleType1
else
AStyle := StyleType2;
end;
Автор: yuish
Дата сообщения: 28.05.2007 09:53
Bol970

Я что бы избежать всяких вылетаний из за неверных значений и что бы можно было не по одному полю значений стили менять делаю так:

...
var
AColumn: TcxCustomGridTableItem;
AValue: Variant;
begin
try
AColumn := Sender.FindItemByName('поле из грида');
AValue := ARecord.Values[AColumn.Index];
AStyle := dm.cxStyle по умолчанию ;
if AValue =1 then
AStyle := dm.greenStyle;
if AValue =2 then
AStyle := dm.redStyle;
except
end;

.....
Автор: Bol970
Дата сообщения: 28.05.2007 10:37
yuish

Спасибо, мысль понял.
Автор: Dronton2
Дата сообщения: 28.05.2007 10:43
radm1
Бар должен быть установлен ДО грида. Последовательность установки была когда-то описана в ветке, указанной в шапке (прирученные компоненты)

Добавлено:
onyxhall
Нужно ещё заполнить список допустимых значений для комбобокса (см. Items). В файле помощи это описано.
Автор: saltmi1
Дата сообщения: 28.05.2007 13:58
Столкнулся с проблемой, которая по-моему может быть интересной и для других...
Бланк для заполнения подготовлен в виде ExpressSpreadSheet. Для юзера оставлены поля в которые он может цифры проставлять. Мне нужно, чтобы эти цифры заносились в отдельную базу данных. Как это лучше сделать? Пока лучшее что придумал - это выделитть в ExpressSpreadSheet один скрытый столбик в который заносится индекс поля (в ячейку соседнюю с цифровой). Думаю что смогу заставить работать, но уж больно некрасивое решение. У кого-нибудь есть предложение как привязать ячейку к полю базы данных?
Второй вопрос - можно ли в ячейку ExpressSpreadSheet всунуть ComboBox или CheckBox?
Автор: unfreqient
Дата сообщения: 28.05.2007 14:25
Вся стать заменить SpreadSheet на cxGrid, там и Combo и Check или вообще на набор контролов, а отчёт уже на основе базы данных, если уж это необходимо в SpreadSheet.
Автор: saltmi1
Дата сообщения: 28.05.2007 17:50
unfreqient
Проблема в том, что мне обязательно нужны формулы. Из-за них вся эта проблема. Я так понимаю с обычными гридами это не пройдет. Или пройдет?
Автор: jicoff
Дата сообщения: 28.05.2007 18:08
saltmi1

Могу сказать за 5 версию - там точно нет формул, потому и был создан SpreadSheet, но он сильно ограничен по своим возможностям.
Автор: saltmi1
Дата сообщения: 28.05.2007 18:49
jicoff
Я тоже так понял. Побегал 3-4 дня по сайтам сравнивая все эти DevExpress, TMS Flexcel, XLSReadWriteII, Berg NextGrid. Остановился все же на девках. Солидное исполнение и много хелпов. Не пробовал TMS TAdvSpreadGrid, но так понимаю ничего в нем дополнительного к DevExpress нет.
Ничего видно не поделаешь. Придется извратиться выше приведенныи способом и прятать код в невидимые юзеру ячейки. Некрасиво и наверное тормозить будет.
Автор: xitsmex
Дата сообщения: 29.05.2007 07:53

Цитата:
xitsmex
Мог бы ты немного подробнее объяснить? И почему именно IMAGEComboBox, данные то - текст?

В принципе, ты прав. Не обязательно ImageComboBox. Но это зависит от того, как данные хранятся в базе. А с ComboBox - просто необходимо заполнить Properties (Например, сделай EditRepository, туда засунь элемент нужный, заполни свойства, а у колонки нужной на OnGetProprties возвращай пропертиз этого элемента). В ImageComboBox плюс в том, что значения могут быть не текстовые, например, а числовые, а отображаться в числа. Это нужно, если список, например, фиксированный. То есть, есть поле "ПОЛ", например, byte, а отображать надо Муж., Жен., НЕОПР. В этом поможет ImageComboBox. Рисунки там, кстати, совсем не обязательны.

P.S. Дурацкий у меня вопрос,но понять немогу... Как сделать границы у ячейки толще? Например, только левую границу, только у одной ячейки? OnCustomDrawCell не нравится тем, что содержимое тоже самому рисовать, а хочется только границу.
Автор: Dronton2
Дата сообщения: 29.05.2007 09:22
xitsmex
Можно в OnCustomDrawCell нарисовать границу, а затем поменять в параметре AViewInfo какое-нибудь значение, например, уменьшить нужную границу в BorderBounds. И пусть inherited дальше само рисует ячейку в прямоугольнике меньшего размера.

PS. Это только идея. Реализовать не пробовал. Если получится - напиши.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182

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


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