Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2

Модерирует : ShIvADeSt

ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DevExpress

Обмен опытом, обсуждение нюансов и решение проблем возникающих при использовании библиотеки компонент Developer Express




 
Сами прирученные компоненты частенько приходят на водопой сюда
 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, начало тут
 

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 03:16 29-01-2007 | Исправлено: VitaliM, 15:47 24-11-2008
yuish

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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;
 
.....

Всего записей: 218 | Зарегистр. 10-02-2003 | Отправлено: 10:53 28-05-2007
Bol970



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yuish
 
Спасибо, мысль понял.

Всего записей: 94 | Зарегистр. 05-10-2004 | Отправлено: 11:37 28-05-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
radm1
Бар должен быть установлен ДО грида. Последовательность установки была когда-то описана в ветке, указанной в шапке (прирученные компоненты)
 
Добавлено:
onyxhall
Нужно ещё заполнить список допустимых значений для комбобокса (см. Items). В файле помощи это описано.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 11:43 28-05-2007
saltmi1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Столкнулся с проблемой, которая по-моему может быть интересной и для других...
Бланк для заполнения подготовлен в виде ExpressSpreadSheet. Для юзера оставлены поля в которые он может цифры проставлять. Мне нужно, чтобы эти цифры заносились в отдельную базу данных. Как это лучше сделать? Пока лучшее что придумал - это выделитть в ExpressSpreadSheet один скрытый столбик в который заносится индекс поля (в ячейку соседнюю с цифровой). Думаю что смогу заставить работать, но уж больно некрасивое решение. У кого-нибудь есть предложение как привязать ячейку к полю базы данных?
Второй вопрос - можно ли в ячейку ExpressSpreadSheet всунуть ComboBox или CheckBox?

Всего записей: 36 | Зарегистр. 11-05-2007 | Отправлено: 14:58 28-05-2007
unfreqient



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вся стать заменить SpreadSheet на cxGrid, там и Combo и Check или вообще на набор контролов, а отчёт уже на основе базы данных, если уж это необходимо в SpreadSheet.

Всего записей: 104 | Зарегистр. 20-07-2006 | Отправлено: 15:25 28-05-2007
saltmi1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unfreqient
Проблема в том, что мне обязательно нужны формулы. Из-за них вся эта проблема. Я так понимаю с обычными гридами это не пройдет. Или пройдет?

Всего записей: 36 | Зарегистр. 11-05-2007 | Отправлено: 18:50 28-05-2007
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
saltmi1
 
Могу сказать за 5 версию - там точно нет формул, потому и был создан SpreadSheet, но он сильно ограничен по своим возможностям.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 19:08 28-05-2007
saltmi1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jicoff
Я тоже так понял. Побегал 3-4 дня по сайтам сравнивая все эти DevExpress, TMS Flexcel, XLSReadWriteII, Berg NextGrid. Остановился все же на девках. Солидное исполнение и много хелпов. Не пробовал TMS TAdvSpreadGrid, но так понимаю ничего в нем дополнительного к DevExpress нет.
Ничего видно не поделаешь. Придется извратиться выше приведенныи способом и прятать код в невидимые юзеру ячейки. Некрасиво и наверное тормозить будет.

Всего записей: 36 | Зарегистр. 11-05-2007 | Отправлено: 19:49 28-05-2007
xitsmex



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

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

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

Всего записей: 58 | Зарегистр. 31-08-2005 | Отправлено: 08:53 29-05-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xitsmex
Можно в OnCustomDrawCell нарисовать границу, а затем поменять в параметре AViewInfo какое-нибудь значение, например, уменьшить нужную границу в BorderBounds. И пусть inherited дальше само рисует ячейку в прямоугольнике меньшего размера.
 
PS. Это только идея. Реализовать не пробовал. Если получится - напиши.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 10:22 29-05-2007
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xitsmex
Dronton2 прав. Рисовать можно только границы оставив рисование текста стандартному обработчику. Вот пример рисования границ без текста. Выдрал почти как есть и не упрощал:
Код:
procedure TfrmCm.dbbtvPt_CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
const
  BCOLOR = $00800000;
var
  FOldColor: TColor;
  ARect: TRect;
begin
  ARect := AViewInfo.Bounds;
  ACanvas.FillRect(ARect);
 
  FOldColor := ACanvas.Brush.Color;
  if (AViewInfo.Item as TcxGridDBBandedColumn).Position.RowIndex = 0 then begin
    AViewInfo.Borders := [bLeft, bRight, bBottom];
    ACanvas.DrawComplexFrame(ARect, BCOLOR, BCOLOR, [bTop], 1);
  end else begin
    AViewInfo.Borders := [bLeft, bTop, bRight];
    ACanvas.DrawComplexFrame(ARect, BCOLOR, BCOLOR, [bBottom], 1);
  end;
  ACanvas.Brush.Color := FOldColor;
end;


Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 11:57 29-05-2007
Truncate

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доюрый День.
 
Подскажите пожалуйста ответ на простой вопрос.
 
Как мне узнать по какому столбцу пользователь задает филдьтрацию.
 
Я хочу менять стиль Title столбца.
 
Спасибо.

Всего записей: 8 | Зарегистр. 22-05-2007 | Отправлено: 11:58 29-05-2007
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Truncate
А в каком событии ты пытаешся узнать? Например если из события OnGetHeaderStyle то можно просто проверить AColumn.Filtered...

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 12:14 29-05-2007
Truncate

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dennica
 
 
в событии  DataControllerFilterChanged.  
 
Только я потом не могу найти свойство отвечающее за  колонку по которой кликнул.  
 
Было бы неплохо выбрал, что то и пометил это цветом, чтоб потом можно было не гадать где фильтр, а по цвету увидеть.

Всего записей: 8 | Зарегистр. 22-05-2007 | Отправлено: 12:44 29-05-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Truncate
Цикл по всем колонкам, для каждой колонки проверять, отфильтрована ли она:

Код:
for i := tableView.columncount - 1 downto 0 do
  begin
  if tableview.columns[i].filtered then tableview.columns[i].styles.content := style1;
  end;
 

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 14:04 29-05-2007
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Truncate
Dronton2
тоже самое хотел предложить, т.к. всеравно нужно скидыватьстиль если колонку убрали из фильтра, поэтому нужен полный перебор

Код:
for i := 0 to tView.ColumnCount -1 do
    if tView.Columns[i].Filtered  then
      tView.Columns[i].Styles.Header := Style1
    else
      tView.Columns[i].Styles.Header := nil;


Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 14:24 29-05-2007
Truncate

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
Dennica

 
 
Ребята Большое спасибо так и сделал.

Всего записей: 8 | Зарегистр. 22-05-2007 | Отправлено: 14:45 29-05-2007
xitsmex



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
Dennica
В том то и беда, что это не override, а Event. Поэтому inherited вызвать нельзя. А если не указать ADone - границы перерисуются стандартным отрисовщиком. Копал в сторону TcxDataCellPainter, но ищу способ проще: как разделить определенные колонки горизонтальными и вертикальными линиями?

Всего записей: 58 | Зарегистр. 31-08-2005 | Отправлено: 18:51 29-05-2007
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xitsmex

Цитата:
А если не указать ADone - границы перерисуются стандартным отрисовщиком.

Ну я же дал рабочий пример... Поясню идею немного. Отрисовка ячейки в том числе и ее границ происходин на основание данных хранящихся в AViewInfo. Т.е. если нам например нужно убрать какую-то границу, убираем ее из AViewInfo

Код:
AViewInfo.Borders := [bLeft, bRight, bBottom];

код выше убрал верхнюю границу ячейки.  Дальше если не указывать ADone то произойдет стандартная отрисовка без верхней границы. При необходимости можно самим отрисовать эту верхнюю границу нужным нам цветом:

Код:
ACanvas.DrawComplexFrame(ARect, BCOLOR, BCOLOR, [bTop], 1);

Есл нам нужно эту границу сделать жирнее то после отрисовки нужно уменьшить область отрисовки текста изменив опятьже AViewInfo

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 10:01 30-05-2007
Poopkeen



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если окажется не в топик - сильно не пинайте пожалуйста
неоднократно слышал об инсталляторе для эхотаговых компонентов от Feandy
подскажите пожалуйста - где его можно раздобыть?

Всего записей: 254 | Зарегистр. 12-03-2003 | Отправлено: 10:27 30-05-2007
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress 2
ShIvADeSt (07-02-2009 14:53): Продолжаем тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10123#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru