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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос следующий: в гриде по умолчанию по-разному раскрашиваются четные-нечетные записи, т.е. ContentEven, ContentOdd имеют разные стили. В этом же гриде необходимо применять различные варианты выделения записей цветом/шрифтом, в зависимости от данных в записи. Пытался сделать таким образом -  в обработчике OnGetContentStyle по-умолчанию назначать стиль соответственно позиции записи, т.е. четная/нечетная, а потом по дополнительным условиям изменять параметры этого стиля, цвет или шрифт. Такой вариант не прокатывает, выдает ошибку, т.е. похоже на ходу менять стиль нельзя. Плодить новый стиль под каждую комбинацию по принципу варианты для четных строк, варианты для нечетных строк - как то коряво, имхо. У кого есть соображения на этот счет, как лучше сделать? Спасибо ответившим.

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 18:53 24-07-2007
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
golkanavt
Ну тут два варианта. Либо плодить стили под все комбинации либо обойтись без стилей и самому задавать цвет фона/шрифта в OnCustomDrawCell
 
Добавлено:
В принципе можно и комбинировать оба эти варианты. Базовые установки задать стилями а в OnCustomDrawCell изменять нужные параметры отображения

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 07:24 25-07-2007
HiTech2003

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

Цитата:
Используй TcxDataSummaryItems.OnSummary

 
Спасибо. Но ведь используя событие OnSummary мы получаем возможность менять только отдельные аргументы для рассчета итоговой Group Summary, но не саму функцию. Как например с помощью данного метода реализовать Group Summary в виде произведения элементов, входящих в эту группу?
 

Всего записей: 2 | Зарегистр. 14-12-2005 | Отправлено: 12:44 25-07-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
HiTech2003
Для этих целей нужно вводить глобальную переменную и произведение накапливать в ней.
Вот пример использования: Ссылка

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 13:59 25-07-2007
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
 
Кривова-то все получается. Надо где-то сохранять для каждого нестандартного случая пересчета суммарного значения накапливаемую переменную. Посмотрел, нельзя ли сделать наследника от стандартного класса для реализации нестандартных случаев пересчета, но увы. А всего-то надо было ребятам добавить в событие текущее значение уже накопленного  результата и проблем не было реализовать любой нестандартный случай.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 13:49 26-07-2007
xRay

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто ни будь подсказать как в cxGrid раскрасить конкретную группу (в сгруппированом Гриде по одной колонке) а не все группы?

Всего записей: 870 | Зарегистр. 10-12-2001 | Отправлено: 13:43 27-07-2007
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xRay
 
Полагаю на CustomDraw, проверять группу и задавать цвета раскраски.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 15:22 27-07-2007
zver

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как напечатать cxGrid через PrintingSystem???
----dxComponentPrinter1->CurrentLink= dxComponentPrinter1->AddLink(cxGrid1);
----dxComponentPrinter1->Preview();
Так не получается.

Всего записей: 66 | Зарегистр. 07-06-2004 | Отправлено: 23:53 30-07-2007
skinash



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пытаюсь обновить старый проект, заменив стандартные компоненты на DevExpress. Столкнулся с такой проблемой: компоненты TComboBox и TcxComboBox по разному отрабатывают события ComboBox.OnChange и cxComboBox.Properties.OnChange. (Оба они FixedList.) А конкретно, если RunTime назначить каждому ItemIndex, то у ComboBox OnChange не возникнет, а у cxComboBox.Properties OnChange возникнет в любом случае. Хотелось бы, чтобы у cxComboBox OnChange срабатывал, когда я сам в нём что-то выбираю (мышью или с клавиатуры).
Как бы вы мне в этом случае посоветовали поступить?

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 00:33 31-07-2007 | Исправлено: skinash, 09:43 31-07-2007
X11



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

Код:
 
PrintToLazer(ActiveControl);
 
 
...
 
procedure TfmMain.PrintToLazer(grid:TObject);
begin
  if not CanPrintToLaser(true) then exit;
 
  if (grid is TDBGridEh) then begin
    prnDBGrid.DBGridEh := (grid as TDBGridEh);
    prnDBGrid.Preview;
    exit;
  end;
 
  if (grid is TcxGridSite) then begin
    dxComponentPrinter1Link1.Component := ((grid as TcxGridSite).Container as TcxGrid);
    dxComponentPrinter1.Preview(true);
    exit;
  end;
 
  ShowMessage('Выберите таблицу(сетку), которую желаете распечатать.');
end;
 
 
 


Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 08:56 31-07-2007
PaulNBir

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

Цитата:
 ... А конкретно, если RunTime назначить каждому ItemIndex, то у ComboBox OnChange не возникнет, а у cxComboBox.Properties OnChange возникнет в любом случае. Хотелось бы, чтобы у cxComboBox OnChange срабатывал, когда я сам в нём что-то выбираю (мышью или с клавиатуры).  
Как бы вы мне в этом случае посоветовали поступить?

 
вот так должно работать:
  cxComboBox1.LockChangeEvents(True,False);
  cxComboBox1.ItemIndex := SomeValues;
  cxComboBox1.LockChangeEvents(False,False);

Всего записей: 61 | Зарегистр. 02-09-2003 | Отправлено: 16:32 31-07-2007
skinash



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PaulNBir
Спасибо, то что надо! Поди ж, догадайся!

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 22:59 31-07-2007
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
golkanavt, в OnGetContentStyle стиль объявлен как "out AStyle: TcxStyle". У него нельзя менять параметры - можно только присваивать.
 
Соответственно, надо сначала собирать стиль, а потом присваивать его AStyle'у. И ошибки не будет. Проверено.

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 14:57 01-08-2007
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korobovmax
 
Конечно у параметра события нельзя менять свойства, т.к. входящее значение NULL, чего и не делает golkanavt, не понятно почему у него выдает ошибку. У меня реализована такая же идея, и все работает.

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 15:21 01-08-2007
skinash



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Снова я со своим TcxComboBox
Рисую на нём "превью стилей" (bsSolid, bsClear, bsHorisontal и т.д.)
Подробнее...
Опять же для стандартного ComboBox'а это работало, а здесь  
во-первых текст может заезжать на кнопку,
во-вторых если нажать на кнопку выпадения списка, когда уже выбран любой пункт, кроме "сплошная"(bsSolid) или "прозрачная"(bsClear), то в выпадающем списке картинки рисует все, а в самом верхнем "Edit'е" только техт, без картинки
Подробнее...
Прошу помочь!

Всего записей: 145 | Зарегистр. 21-09-2006 | Отправлено: 16:25 01-08-2007 | Исправлено: skinash, 11:09 02-08-2007
korobovmax



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
jicoff, golkanavt так делает:

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

 
И получает ошибку. Вы говорите, что он этого не делает и получает ошибку. %)
Какая идея при этом у вас реализована для меня - загадка.
 
 
 
Добавлено:
А, нет, стоп!
 
Он присвоил AStyle свой стиль, а потом изменил в нем что-либо. Да, так будет работать!

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 16:42 01-08-2007
golkanavt



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

Цитата:
Соответственно, надо сначала собирать стиль, а потом присваивать его AStyle'у. И ошибки не будет. Проверено.

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

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 17:48 01-08-2007
korobovmax



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

Цитата:
И так тоже пробовал

 
А чем не понравилось? Довольно удобно, если надо похожие стили создавать.

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 18:06 01-08-2007
golkanavt



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korobovmax
Не понравилось тем, что не работает, особенно при использовании фильтрации грида. Если в гриде только записи одного формата, худо-бедо с тормозами отрабатывает, как только появляется сложно форматированная запись - все, приехали, вылетает с ошибкой.

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 13:30 02-08-2007
jicoff

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korobovmax
 
Идея в следующем, есть два мембера в классе: FUpdateLockCount и stlContent. stlContent - это стиль. Т.к. заранее неизвестны параметры ячейки, вызывается метод GetContentParams для получения значений по умолчанию, а он в свою очередь еще раз вызывает это событие, поэтому для исключения зацикливания используется FUpdateLockCount.
 
void __fastcall TClassName::bvViewStylesGetContentStyle(
      TcxCustomGridTableView *Sender, TcxCustomGridRecord *ARecord,
      TcxCustomGridTableItem *AItem, TcxStyle *&AStyle)
{
  if(FUpdateLockCount)
    return;
 
  ++FUpdateLockCount;
  try
  {
    TcxViewParams AParams;
 
    AItem->Styles->GetContentParams(ARecord, AParams);
    stlContent->Color = AParams.Color;
    stlContent->Font->Assign(AParams.Font);
    stlContent->Font->Style = TFontStyles(stlContent->Font->Style) << fsBold;
    stlContent->TextColor = AParams.TextColor;
    AStyle = stlContent;
  }
  __finally
  {
    --FUpdateLockCount;
  }
}

Всего записей: 289 | Зарегистр. 03-03-2006 | Отправлено: 14:16 02-08-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