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

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

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

Цитата:
 

Цитата:
появляется другой "глюк", о котором, если нужно сообщу отдельно

Думаю что нужно.
 

 
Назвала бы "эстетический глюк". Когда указатель стоит в поле (у которого св-во TcxDBVerticalGrid.OptionsData.Edit = True), при Refresh датасета значения в этом поле начинают пробегать, видимо, вместе с fetch-ем полей в датасете.

Всего записей: 4 | Зарегистр. 24-11-2009 | Отправлено: 10:29 30-11-2009
vladman

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

Цитата:
По какому событию вычислить значение Поля3 и как его ввести в нужную ячейку текущей строки грида?

 
Попробуйте обработать событие onBeforePost DataControllera вашего cxGrid. Например:

Код:
procedure <YourForm>.<YourcxGridTableView>DataControllerBeforePost(ADataController: TcxCustomDataController);
begin
  ADataController.Values[ADataController.FocusedRecordIndex, <YourcxGridTableView>Column3.Index] :=
  ADataController.Values[ADataController.FocusedRecordIndex, <YourcxGridTableView>Column1.Index] +
  ADataController.Values[ADataController.FocusedRecordIndex, <YourcxGridTableView>Column2.Index];
end;

Также вам придется вычислять эти значения при первоначальной загрузке данных в cxGrid

Код:
procedure <YourForm>.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to <YourcxGridTableView>.DataController.FilteredRecordCount - 1 do
    <YourcxGridTableView>.DataController.Values[<YourcxGridTableView>.DataController.FilteredRecordIndex[i], <YourcxGridTableView>Column3.Index] :=
    <YourcxGridTableView>.DataController.Values[<YourcxGridTableView>.DataController.FilteredRecordIndex[i], <YourcxGridTableView>Column1.Index] +
    <YourcxGridTableView>.DataController.Values[<YourcxGridTableView>.DataController.FilteredRecordIndex[i], <YourcxGridTableView>Column2.Index];
end;

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 10:55 30-11-2009
neznayka3

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cxTreeList.OptionsView.CheckGroups=true; в событии OnNodeCheckChanged смотрю какие ноды выбраны. как сменить шрифт у строк, которые отмечены? и если CellSelect=false как ставить\снимать выделение щелкая по строкам мышью или пробелом?  
 
OnNodeCheckChanged  не подходит. если изменить предка, то событие вызывается для всех потомков. какое событие выбрать, чтобы оно срабатывало один раз? при выделение нодов подгружаю данные из БД.

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 11:04 30-11-2009 | Исправлено: neznayka3, 11:43 30-11-2009
Einsiedler



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скачал исходники с DevExpres v47 и не могу никак их ручками поставить. Кто-нибудь ставил вручную девы? У меня линкер падает на dxdbtrC6.bpk (при его сборке пишет Fatal: Access violation. Link terminated). Плиз..., помогите!!!

Всего записей: 4 | Зарегистр. 01-04-2009 | Отправлено: 00:38 01-12-2009
vladman

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

Цитата:
Назвала бы "эстетический глюк". Когда указатель стоит в поле (у которого св-во TcxDBVerticalGrid.OptionsData.Edit = True), при Refresh датасета значения в этом поле начинают пробегать, видимо, вместе с fetch-ем полей в датасете.

Интересно, не замечал такого. А есть запускаемый модуль иллюстрирующий ошибку. Конечно, желательно и исходники к нему.
Как заплатку к проблеме могу предложить попробовать перед вызовом Refresh отключать от DataControllera TcxDBVerticalGrid его DataSource, а после Refresh снова подключать.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 00:39 01-12-2009
Einsiedler



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь может скинуть DevExpress v47 на мою почту, а то баллов не хватает забрать его с обменника, а проект горит. НУ ОО..че... НЬ НАДО!!! Плиз...

Всего записей: 4 | Зарегистр. 01-04-2009 | Отправлено: 00:43 01-12-2009
vladman

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

Цитата:
при наборе список показывает не все записи, а только первую, хтя DropDownRows=8. и не работает переход по записям клавишей "стрелка вниз" - стоит на 1 записи

Скорее всего по умолчанию ADOQuery1 при открытии не "Фетчит" все записи. Попробуйте что-то из разряда FetchAll, либо ADOQuery1.Last. Точнее, к сожалению, не могу подсказать -  с ADOQuery не приходилось сталкиваться.
 
Добавлено:
Einsiedler

Цитата:
Кто-нибудь может скинуть DevExpress v47 на мою почту, а то баллов не хватает забрать его с обменника, а проект горит. НУ ОО..че... НЬ НАДО!!! Плиз...

Раз вы знаете про обменник, раз вы это написали здесь, и не написали свою просьбу в ветке "Коммерческие компоненты и утилиты для Delphi/BCB", то наверняка читали там шапку и знакомы с правилами и, также, не могли не заметить реакцию на подобные сообщения. Почему вы решили, что в этой ветке это приветствуется? Каким образом ваша просьба "скинуть" имеет отношение к "Обмену опытом, обсуждению нюансов и решению проблем возникающих при использовании библиотеки компонент Developer Express"?
 
По поводу "ручками поставить" - есть некоторые альтернативы. Какие? Были ссылки и обсуждения в "Коммерческих компонентах...".
 
Добавлено:
neznayka3

Цитата:
cxTreeList.OptionsView.CheckGroups=true; в событии OnNodeCheckChanged смотрю какие ноды выбраны. как сменить шрифт у строк, которые отмечены?

Событие OnNodeCheckChanged не совсем подходит для этих целей. Данную задачу легко решить с помощью обработки события onCustomDrawDataCell вашего cxTreeList. Например:

Код:
 
uses
  cxLookAndFeelPainters, Graphics;
...
procedure <YourForm>.<YourcxTreeList>CustomDrawDataCell(Sender: TcxCustomTreeList; ACanvas: TcxCanvas; AViewInfo:
    TcxTreeListEditCellViewInfo; var ADone: Boolean);
begin
  if AViewInfo.Node.CheckState = cbsChecked then
    ACanvas.Font.Style := [fsBold];
end;

 

Цитата:
и если CellSelect=false как ставить\снимать выделение щелкая по строкам мышью или пробелом?  

Если под  "ставить\снимать выделение" понимается изменение CheckState для Focused Node, то даже при CellSelect=false это возможно делать с помощью мыши или пробела.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 00:43 01-12-2009 | Исправлено: vladman, 01:28 01-12-2009
sldaac



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

Цитата:
НУ ОО..че... НЬ НАДО!!! Плиз...

Обратись в личку к  xMesSir  или   feandy , может помогут.

Всего записей: 721 | Зарегистр. 15-06-2005 | Отправлено: 09:05 01-12-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
neznayka3
иcпользуй cxdbLookupComboBox там есть свойсво Lookuplist пишешь туда исходную таблицу и все замечательно выводиться хоть 100 значений на букву д

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 09:17 01-12-2009
Vadim153

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

Цитата:
Попробуйте обработать событие onBeforePost DataControllera вашего cxGrid ...

Спасибо за ответ. Но теперь следющая проблема нарисовалась.
Одно поле имеет свойство LookupComboBox и ссылается по ID к БД. Расчет получается по: Поле1(ID)+Поле2, т.е.: 4(это ID)+2(для примера). А требуется 100р.(то, на что ссылается ID)+2.

Всего записей: 51 | Зарегистр. 19-08-2009 | Отправлено: 12:31 01-12-2009
vladman

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

Цитата:
Но теперь следющая проблема нарисовалась.  

Получив ID, можно "сходить" в БД и получить значение (ваши 100р.), которое соответствует полученному ID, и затем использовать его для получения значения вычисляемого поля.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 12:42 01-12-2009
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите помечать галочкой выбранные строки cxGrid для дальнешей обработки

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 13:19 01-12-2009
MyNameIsNataly

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

Цитата:
Интересно, не замечал такого. А есть запускаемый модуль иллюстрирующий ошибку. Конечно, желательно и исходники к нему.
Как заплатку к проблеме могу предложить попробовать перед вызовом Refresh отключать от DataControllera TcxDBVerticalGrid его DataSource, а после Refresh снова подключать.

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

Всего записей: 4 | Зарегистр. 24-11-2009 | Отправлено: 14:08 01-12-2009
vladman

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

Цитата:
помогите помечать галочкой выбранные строки cxGrid для дальнешей обработки  

How to set up an unbound item in a data-aware View

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

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

Цитата:
Получив ID, можно "сходить" в БД и получить значение (ваши 100р.), которое соответствует полученному ID, и затем использовать его для получения значения вычисляемого поля.

Это понятно, предполагал, что можно будет прочитать отображаемое значение в ячейке, те же 100р.

Всего записей: 51 | Зарегистр. 19-08-2009 | Отправлено: 18:34 01-12-2009
vladman

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

Цитата:
предполагал, что можно будет прочитать отображаемое значение в ячейке, те же 100р.

Тогда используйте функцию GetDisplayText. Например

Код:
.... :=
StrToInt(ADataController.GetDisplayText(ADataController.FocusedRecordIndex, <YourcxGridTableView>LookupColumn.Index)) +  
.....

не забыв, конечно, обработать "р".

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 02:00 02-12-2009
SIgor33

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

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 09:10 02-12-2009
sam291074



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
При компиляции проекта под XP и Win7 получаются разные размеры формы (по высоте), использующей Ribbon. С этим можно как-то бороться? (CG2009, Dev46)

Всего записей: 113 | Зарегистр. 22-03-2006 | Отправлено: 20:41 03-12-2009
vladman

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

Цитата:
При компиляции проекта под XP и Win7 получаются разные размеры формы (по высоте), использующей Ribbon. С этим можно как-то бороться? (CG2009, Dev46)

Вроде бы как поправили в v6.47, если конечно это ваш случай.
Bug Report Details: Ribbon Form - In Windows 7 RTM, the non-client area is incorrectly painted

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



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Как узнать в TcxGrid, когда кликнули на индикаторе?
 
Добавлено:
Или ещще лучше, как включить выделение по Ctrl в гриде? В исходниках нашел такую вещь, что если включено CellMultiSelect, то Ctrl не обрабатывается.
 
Добавлено:
Итак, понял в чем прикол, считаю это багом со стороны DevExpress. Кто-нибудь стуканитесь к ним в саппорт и объсните ситуацию.  
При включенном OptionSelection.CellMultiSelect нельзя отмечать с помощью Ctrl записи, работает только через шифт.
 
В принципе после нехитрых манипуляций код начинает работать правильно.
Итак стало быть само исправление, модуль cxGridCustomTableView.
Само тело процедуры procedure TcxCustomGridTableController.MultiSelectMouseDown
(не в подпроцедуры) надо изменить текст на :

Код:
 
  APressedRecord := TcxGridRecordHitTest(AHitTest).GridRecord;
  ASelectionShift := AShift - [ssLeft, ssRight, ssMiddle, ssDouble];
  AssignSelectionAnchor;
  if (ASelectionShift = [ssCtrl]) and SupportsRecordSelectionToggling then
    ProcessRecordSelectionToggling
  else
    if (ASelectionShift = [ssCtrl]) and Not SupportsRecordSelectionToggling then
      DoMouseRangeSelection((ssCtrl in AShift) or not SupportsAdditiveSelection, AHitTest)
    else
      if (ASelectionShift = [ssShift]) or (ASelectionShift = [ssCtrl, ssShift]) then
        DoMouseRangeSelection(not (ssCtrl in AShift) or not SupportsAdditiveSelection, AHitTest)
      else
        ProcessNormalSelection;
 


----------
Холодильники мы

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 17:49 04-12-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-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru