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

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

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

ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

golkanavt



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

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




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

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 10:31 07-02-2009 | Исправлено: vladman, 14:36 24-10-2009
vladman

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

Цитата:
Как в PivotGrid раскрасить ячейки в засисимости от значения другого поля?  

Попробуйте так

Код:
var
  vValue: Variant;
  vRow: Integer;
....
procedure <YourForm>.<YourcxDBPivotGrid>CustomDrawCell(Sender:TcxCustomPivotGrid; ACanvas: TcxCanvas;
  AViewInfo: TcxPivotGridDataCellViewInfo; var ADone: Boolean);
begin
  if AViewInfo.DataField = <YourAnalised>cxDBPivotGridField then
    begin
      vValue := AViewInfo.Value;
      vRow := AViewInfo.RowIndex;
    end;
 
  if (AViewInfo.DataField = <YourVisualised>cxDBPivotGridField) and
     (AViewInfo.RowIndex = vRow) and
     (vValue > 1000)
  then
    begin
      ACanvas.Canvas.Brush.Color := clRed;
      ACanvas.Canvas.FillRect(AViewInfo.Bounds);
      ADone:=False;
    end;
end;

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 19:37 01-06-2009
zzz78



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

Всего записей: 27 | Зарегистр. 29-08-2007 | Отправлено: 08:58 02-06-2009
vladman

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

Цитата:
работает это только когда столбец-признак видим и стоит перед столбцом со значением

Да, у такого подхода есть такое ограничение

Цитата:
А мне нужно чтоб столбец-признак был невидим

Но вы же раньше об этом ничего не говорили.

Цитата:
Может есть связь между ячейкой и записью в датасете хотя бы?

Датасет здесь не помощник, так как отдает значения только одной записи, а для кастомдро всех ячеек PivotGrid вам придется выполнять множественный scroll по датасету при каждой перерисовке PivotGrid, что не есть очень хорошо. Сходу решения пока нет, думаю, нужно смотреть в сторону DataController.
 
Добавлено:
zzz78
Так если этот столбец не видимый, он скорее всего не попадает ни под какие группировки (агрегирования), а раскрашивать вы хотите сгруппированный столбец. Какое именно значение вы хотите анализировать из этого невидимого столбца? Ведь их (значений невидимого столбца), в общем случаем, может быть достаточно много для одного значения раскрашиваемого столбца.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 10:53 02-06-2009
zzz78



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Значений там немного (всего три: 0,1,2). В обычном гриде такие фишки легко делаются. А вот с ПивотГридом впервые работаю.  
А в сторону DataController как смотреть? Пока я не въехал в суть его. Вообще возможно ли в ПивотГриде достать значение неотображаемое на экране...
 
Вот сижу думаю: обратиться к старому доброму Гриду, придется конечно возиться с генерацией запроса и созданием колонок в рантайме, но чтож делать ежели никак в Пивот Гриде не получатса.
 
Чтоб было понятнее поясню задачу: нужно вывести календарь работы вентиляторов. Столбцы - дни месяца, строки - название вентилятора, данные - часы работы (и вот тут признак как раз бывает работа а бывает ремонт, часы все равно ставятся, но уже надо выделить цветом, что агрегат на ремонте был)...

Всего записей: 27 | Зарегистр. 29-08-2007 | Отправлено: 14:46 02-06-2009 | Исправлено: zzz78, 14:52 02-06-2009
vladman

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

Цитата:
Значений там немного (всего три: 0,1,2)

если значение для отображаемого столбца агрегировано (сумма), а для невидимого столбца нет, то для одного агрегированного значения могут быть разные значения невидимого столбца. Например, если вентилятор работал и ремонтировался в один и тот же день, а мы группируете по дням, то какое в этом случае нужно брать значение для выделения цветом?
Что мешает сделать этот невидимый столбец видимым и 0,1,2 заменить описанием (работал/ремонтировался/..) и включать этот столбец в группировку. В таком случае у вас в случае ремонта и работы вентилятора в один и тот же день будет два значения - количество часов работы и количество часов ремонта.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 15:49 02-06-2009
ZalivkoDenis



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброго времени суток всем!
Может кто-нить наведёт на мысль (не срочно, но интересно):
Как бы так сделать на базе девов штуку аля MDI-интерфейса (точнее, MDI-интерфейс) чтобы выглядело как-будто PageControl вкладками, но, со всеми преимуществами MDIChild...
Может кто-нибудь что-нибудь предложит в этом направлени?
Спасибо!

Всего записей: 537 | Зарегистр. 06-10-2005 | Отправлено: 16:52 02-06-2009
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
А если такой столбец сделать нулевой ширины, работать будет?

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 17:26 02-06-2009
vladman

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

Цитата:
со всеми преимуществами MDIChild...  

А какие это преимущества, если не секрет? Тем более если все будет как вкладки PageControl.
afiget

Цитата:
А если такой столбец сделать нулевой ширины, работать будет?

Хорошая идея, но не будет . У cxDBPivotGridField при значении свойство Width=0 ширина поля приравнивается к cxPivotGridDefaultFieldWidth = 105.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 18:31 02-06-2009
Meister Floh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не обращаюсь ни к кому конкретно, а обращаюсь ко всем!
Задача: Выполняется запрос к базе, что в зависимости от размера последней занимает от 0.5 до 120 сек, как в это время заставить работать TcxProgressBar с установленным Marquee. Уточняю где и откуда посылать Application->ProcessMessages();
 
На всякий случай добавлю сам запрос:

Код:
 
select O2.'OrgName' as 'Наименование', Q1.'Cnt' as 'Количество'
 from (select O1.'IDNodeParent', count(O1.'IDNodeParent') as 'Cnt'
        from 'OrgTree' O1
        group by O1.'IDNodeParent') Q1, 'OrgTree' O2
 where (Q1.'IDNodeParent' = O2.'IDOrg' and Q1.'IDNodeParent' > 1)
 

На базе в миллион записей вреия 45 сек. Но База может быть и больше...

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 22:31 02-06-2009 | Исправлено: Meister Floh, 22:57 02-06-2009
jonikDk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZalivkoDenis
можно сделать да наверное и нужно через базовые формы и BarManager, Каждое открытое MDI окно, это кнопка на Bar

Всего записей: 1626 | Зарегистр. 01-03-2004 | Отправлено: 22:49 02-06-2009
dimm78

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZalivkoDenis
реализовывал такую штуку на базе стороннего фришного компонента... только вид не как у PageControla, а в виде кнопок на панели... если интересует могу закинуть...

Всего записей: 163 | Зарегистр. 07-12-2005 | Отправлено: 22:56 02-06-2009
ZalivkoDenis



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

Цитата:
А какие это преимущества, если не секрет?

Окна пашут как отдельные потоки (может немного не так выразился, но смысл такой)

Цитата:
Тем более если все будет как вкладки PageControl

Имелось ввиду не как, а как в смысле, наподобие. Естественно, не PageControl. Брал табсы, да вот только не дотягивают они до задуманного (в девковских пейджах менюшка есть, в мультилайн красиво выстраиваются), а вот с табсами чего-то не задалось у меня.
 
dimm78

Цитата:
реализовывал такую штуку на базе стороннего фришного компонента

Там, я так понимаю, вся фишка в том, чтобы развернуть MDIChild по-умолчанию на всю область (типа, maximized), а дальше уже не сложно отследить активирование и т.д.

Цитата:
только вид не как у PageControla, а в виде кнопок на панели...

С кнопками-то оно попроще...

Цитата:
если интересует могу закинуть

Ага, буду благодарен. Может почерпну для себя чего полезного. Спасибо. (мыло в ПМ)

Всего записей: 537 | Зарегистр. 06-10-2005 | Отправлено: 23:37 02-06-2009 | Исправлено: ZalivkoDenis, 23:40 02-06-2009
jonikDk



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Meister Floh
нафига сдался тебе этот прогресс бар. Если уж не устраивают часики, сделай Splash форму и показывай ее и все.

Всего записей: 1626 | Зарегистр. 01-03-2004 | Отправлено: 00:18 03-06-2009
vladman

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

Цитата:
Окна пашут как отдельные потоки

А где можно почитать о том что MDIChild реализованы в отдельных потоках? Как-то раньше не обращал на это внимание.

Цитата:
Может кто-нибудь что-нибудь предложит в этом направлени?

Предложит. Думаю авторитета Developer Express будет достаточно .
Когда-то, на старом сайте Developer Express в разделе Best Practices была отличная статья о подходе к построению пользовательского интерфейса в целом, и использование при этом компонентов Developer Express, в частности.
Думаю вам она поможет определиться с интерфейсом. Правда вы хотите что-то аля PageControl, а они предлагают NavBar. Но, думаю, это не суть важно. Важен сам подход, а там, переключение режимов хоть с помощью табов Ribbon'a организовывай.
 
На новом сайте этой статьи нет, наверное затерялась при переезде. Но, покопавшись в закромах, статью обнаружил.
FS к статье брать здесь
 
ЗЫ. Интересно ответил сапорт на вопрос
>>
Are the methods described in the article still your recommended framework for VCL applications?
<<
Yes, this is one of the preferred ways of implementing an application frameworks in VCL applications.  
 
 

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 03:29 03-06-2009
VadimLou



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

Цитата:
Окна пашут как отдельные потоки

PageControl (да и весь DevEx) - тоже VCL.
Так что про потоки лучше забыть.
 
Meister Floh
Или запрос выполнять в паралельном потоке или форму рисовать как ресурс в VisualStudio (пример есть в EurekaLog). Такую форму-ресурс можно создавать в отдельном потоке...

Всего записей: 707 | Зарегистр. 22-07-2004 | Отправлено: 08:54 03-06-2009 | Исправлено: VadimLou, 08:55 03-06-2009
Meister Floh



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

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

Всего записей: 393 | Зарегистр. 04-08-2003 | Отправлено: 10:35 03-06-2009
ZalivkoDenis



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

Цитата:
А где можно почитать о том что MDIChild реализованы в отдельных потоках?

Млин, показалось ... Перепроверил ещё раз -- на самом деле нет, всё работает в основном потоке... Нужно выруливать латентные и ресурсоёмкие операции в дополнительных потоках... Но, это уже тема другого топика...
P.S. А за примерчик -- большое спасибо!  

Всего записей: 537 | Зарегистр. 06-10-2005 | Отправлено: 10:55 03-06-2009
afiget



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

Цитата:
Что-то гугль не сильно на эту тему много статетй мне нашел..

Да ну ладно!
http://lmgtfy.com/?q=sql+%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81+%D0%B2+%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B5

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 10:58 03-06-2009
ZalivkoDenis



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

Meister Floh
По потокам толковые статьи можно почитать здесь. Толково написаны некоторые статьи.

Всего записей: 537 | Зарегистр. 06-10-2005 | Отправлено: 10:59 03-06-2009
vladman

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Meister Floh
Интересная дискуссия
 
ZalivkoDenis

Цитата:
Млин, показалось

Вот и я о том же

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 11:29 03-06-2009
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 3)
ShIvADeSt (31-12-2009 04:49): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=10884


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru