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

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



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clear2121
В момент срабатывания кустомдрав не происходит физического перемещения записи в датасэте, т.е. тебе нужно обращаться не к датасету, а к данным прокэшированным гридом. Например (delphi)

Код:
uses cxGridDBDataDefinitions;
...
  if UpperCase((AViewInfo.Item.DataBinding as TcxGridItemDBDataBinding).FieldName) = 'ID' then
    if AViewInfo.Value = 1 then
    ...
 

Это к вопросу что не правильно, а вообще я согласен с IceMan T, что расцветку лучше делать в OnGetContentStyle.

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 09:48 19-10-2007
Bill_PHO

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не подскажет ли кто, можно ли выполнить Expand в cxDBTreeList не для всего дерева, а только для веточек заданного уровня или для конкретной ветви? Если да, то как?

Всего записей: 287 | Зарегистр. 15-08-2003 | Отправлено: 22:07 20-10-2007
Gaivoronsky



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ув. IceMan T как Вы написали делать нельзя, появляются непонятные ишибки (что-то об инициализации GDIPlus), но Вы подсказали куда копать.
В файле dxGDIPlusAPI.pas нужно найти функцию isDLL и сделать так, что бы всегда она возвращала false. Так как оказалось, при вызове из DLL скин просто записывается в список, но ничего не делается дальше. Спасибо за подсказку!

Всего записей: 22 | Зарегистр. 01-12-2006 | Отправлено: 00:50 21-10-2007
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bill_PHO
Для ноды определен метод:
procedure Expand(Recurse: Boolean);
Найди верхнюю ноду ветки, которую нужно развернуть, и вызови Expand(True)

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 10:40 21-10-2007
Bill_PHO

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dennica
Да, нашел, спасибо.

Всего записей: 287 | Зарегистр. 15-08-2003 | Отправлено: 13:02 21-10-2007
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток!
 
Вопрос по Master-Detail cxGrid-у, привязанному к dxMemData.
Во время программного перехода по записям обнаружил, что переход в подчинённом датасете вызывает переход в мастере. Но не наоборот!!
Т.е. если имеются записи:
master1 - detail1
master2
master3 - detail2
 
то при переходе на 2-ю запись подчинённого датасета мастер переходит на 3-ю запись
Но при переходе в мастере с 1-й записи на 2-ю подчинённый остаётся на 1-й записи.
Ничего слишком хитрого в настройках нет. Датасеты оба настроены как положено, проставлены ключ. поля и у деталей - настройки MasterKeyFieldNames, DetailKeyFieldNames.  
Может подскажете, что не так?

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 18:00 21-10-2007
Dennica



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

Цитата:
Но при переходе в мастере с 1-й записи на 2-ю подчинённый остаётся на 1-й записи.  

А куда по вашему должен выполниться переход в деталях если у второй записи мастера нет подчиненных записей?

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 18:56 21-10-2007
brookson



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

Dennica
 
Да, но если стать на 3-ю запись мастера, подчинённый дальше на первой стоит

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 19:26 21-10-2007
Dennica



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

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 20:48 21-10-2007
brookson



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

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 21:49 21-10-2007 | Исправлено: brookson, 21:53 21-10-2007
Dennica



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brookson
Ясно. Т.е. тебе мешает то, что грид дергает датасэт в то время как ты по нему ходишь? Если так, то просто отключи на время обновления контролов у датасэта  
mastDataSet.disablecontrol;
detDataSet.disablecontrol;
try
...
finally
mastDataSet.enablecontrol;
detDataSet.enablecontrol;
end;
 
Кстати, мне интересно стало, для чего использовать мэмдата если в конечном итоге нужно писать в БД, почему не query с CachedUpdates = true ? =) . А чтобы перекинуть записи из одного набора в другой мне нравится компонент TxQuery или TCRBatchMove. Хотя, если структура идентична, можно через несложный цикл легко сделать.

Всего записей: 235 | Зарегистр. 19-12-2005 | Отправлено: 22:16 21-10-2007
brookson



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

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 23:43 21-10-2007
clear2121



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dennica, видно ты хорошо разбираешься в Девках
Ответь пожалуйста.
Я уже писАл, что мне надо разукрасить каждую строчку в гриде в зависимости от значения в определенном поле. В ГРИДЕ это колонка скрыта (назовем его ED). У меня такая конструкция
 if ( ed->EditValue == 1 )
 {
    ACanvas->Brush->Color = clYellow;
    ACanvas->Canvas->FillRect(AViewInfo->Bounds);
 }
Как только я поменял значение в поле, меняется в гриде (делаю пока колонку видимой для отладки). Вся строка становится желтой. Перехожу на другую строку - все пропадает. Снова на эту строку - весь грид желтый, а мне надо, чтоб только эта строка ВСЕГДА была желтой. Перехожу далее - совершенна другая строка остается желтой. Научи как правильно, ПЛИЗ!  

Цитата:
лучше делать в OnGetContentStyle.

Это нужно в редакторе стилей задавать стили и потом их применять? Но это же сколько ресурсов надо. Или я что то не понимаю. Подскажи, горю!
 
СПАСИБО!
 
 
Добавлено:
Повесил обработчик на TcxGridDBTableView

Всего записей: 311 | Зарегистр. 07-04-2005 | Отправлено: 12:04 22-10-2007
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dennica, отключение контролов помогло! спасибо
 
clear2121
Смотри, у меня кажется такая же кажется ситуация. Работает вот так:
 
procedure TFord.tv1StylesGetContentStyle(Sender: TcxCustomGridTableView;
  ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableItem;
  out AStyle: TcxStyle);
begin
 
   if tv1.datacontroller.values[ARecord.RecordIndex,0] then
      astyle:=stred;
   if not tv1.datacontroller.values[ARecord.RecordIndex,0] then
      astyle:=stgreen;
 
end;
 
И описать эти 2 стиля.

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 12:24 22-10-2007
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clear2121
если у TcxGridTableOptionsSelection
selselect :=flase то можно
процедура CustomDrawCell у TcxGridDBTableView
 
if (AViewInfo.GridRecord.Values[<колонка>.Index]=<значение>) then
  ACanvas.SetBrushColor(clRed);

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 12:24 22-10-2007 | Исправлено: greenpc, 12:30 22-10-2007
zver

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
clear2121
попробуй на событие TableView1CustomDrawCell повесить:
 

Код:
if (!AViewInfo->RecordViewInfo->GridRecord->Values[ed->Index].IsNull()) {
if (AnsiString(AViewInfo->RecordViewInfo->GridRecord->Values[ed->Index])=="1") {
ACanvas->Brush->Color=clYellow;
}

 
Метод FillRect вызывать не надо. он вызывается сам. и текст поверх всего рисуется тоже сам.

Всего записей: 66 | Зарегистр. 07-06-2004 | Отправлено: 16:47 22-10-2007 | Исправлено: zver, 17:50 22-10-2007
clear2121



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
СПАСИБО ВСЕМ!
ПОЛУЧИЛОСЬ!!!
Не знаю как (может кто подскажет), но я хочу вам по +1 добавить.
 
СПАСИБО!

Всего записей: 311 | Зарегистр. 07-04-2005 | Отправлено: 05:51 23-10-2007
samusev



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго дня.
 
Подскажите, плз, решение такой задачи.
Есть приложение с Ribbon и PageControl
Каждый Tab риббона соответствует определенному Tab PageControl'a. Они также согласованы по Tag
 
Задача:
- при выборе закладки на PageControl - активизировать соответствующий Tab в Риббон-е
или
- при выборе закладки на Риббон - активизировать соответствующий Tab в PageControl  
 
Чувствую что решение крутится вокруг OnTabChanged - но не получится ил зацикливания. Потому как придется переопределять этот метод у обоих объектов.

Всего записей: 75 | Зарегистр. 03-03-2005 | Отправлено: 12:04 23-10-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
samusev
В Ribbon.OnTabChanged первым делом нужно проверить PageControl.ActivePage.Tag. Если она равна Tab.Tag риббона, то ничего делать не нужно. Аналогично - для PageControl.OnChanged. Таким образом можно будет избежать зацикливания.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 12:16 23-10-2007
samusev



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

Всего записей: 75 | Зарегистр. 03-03-2005 | Отправлено: 12:34 23-10-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