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

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rdenk1, послушай, изучи хотябы минимально cxGrid, почитай этот форум, погугли, справку посмотри, примеры и справка на официальном сайте в свободном доступе. А то ты тут такие вопросы задаешь элементарные.... тебя просто или будут игнорировать или забанят.

----------
/не мы такие, жизнь такая/

Всего записей: 3260 | Зарегистр. 24-11-2005 | Отправлено: 12:38 18-10-2009
rdenk1

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

Цитата:
Исходя из ваших последующих вопросов я бы рекомендовал сначала почитать раздел справки по ExpressQuantumGrid6 *Banded Table View Tutorial*, начало здесь:
ms-help://borland.bds5/ExpressQuantumGrid6.BDS5/ExpressQuantumGrid6/IDH_cd_Banded_View_Tutorial_Overview.htm
Также разделы *Fundamentals* и *Base Concepts* будут полезны.
Что касается программного управления бандами и колонками, посмотрите раздел справки по ExpressQuantumGrid6 *Task Based Help -> Banded Table View*, ms-help://borland.bds5/ExpressQuantumGrid6.BDS5/ExpressQuantumGrid6/IDH_tbh_Banded_Table_View.htm

Не понял. Страницы вида: ms-help://borland.bds5/ExpressQuantumGrid6.BDS5/ExpressQuantumGrid6/IDH_cd_Banded_View_Tutorial_Overview.htm
их где открывать вообще? В браузере? Таких страниц нет. А можете прямую ссылку на  offline-документацию дать? У меня одни демки только, но там нет такого.

Всего записей: 117 | Зарегистр. 27-04-2009 | Отправлено: 12:43 18-10-2009
vladman

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

Цитата:
Не понял. Страницы вида...

Это линк на страницу в Microsoft Document Explorer. В версиях Delphi c D2005 используется как справочная система.
Цитата:
А можете прямую ссылку на  offline-документацию дать?

Вот с этого как раз и нужно было начинать.
http://www.devexpress.com/Downloads/VCL/Help.xml
 
Добавлено:
Поправил шапку. Добавил ссылку на *Documentation for VCL Products*

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

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прочел все, что касается Banded Table View, но именно такого не нашел. Там Там во всех наиболее похожих на мой примерах в качестве первой строки сложного заголовка применяется сами band'ы, а собственно заголовок уже состоит из одной строки, озаглавливающей сразу по несколько колонок в каждом band'е. Мне же пока пришлось band'ы сделать пустыми. Заголовок у меня такой (это без band'ов):
________________________________
|                   |                              |
|                   |                              |
|                   |_________________|
|                   |                |             |
|                   |                |             |
|                   |                |             |
|___________|_________________|
 
И вот, когда я добавляю запись в таблицу, добавляются сразу 2 строки фактически.
 
Добавлено:
Хорошо, тогда такой вопрос: как сделать 1-й столбец постоянно присутствующим при перемещении гор. скроллбара? Дело в том, что там идет подпись, что каждая строка означает. При этом сама таблица большая, и не хотелось бы, чтобы пользователь был вынужден каждый раз возвращаться влево.

Всего записей: 117 | Зарегистр. 27-04-2009 | Отправлено: 14:02 18-10-2009 | Исправлено: rdenk1, 14:03 18-10-2009
X11



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

Цитата:
Хорошо, тогда такой вопрос: как сделать 1-й столбец постоянно присутствующим при перемещении гор. скроллбара?

это называется fixed, смотри в настройках бэнда. И опять очень советую посмотреть примеры, почитать справку и погуглить.

----------
/не мы такие, жизнь такая/

Всего записей: 3260 | Зарегистр. 24-11-2005 | Отправлено: 18:03 18-10-2009 | Исправлено: X11, 18:06 18-10-2009
vladman

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

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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
X11
думаю что данный экземпляр в скором времени будет просить за него софт писать... так что может не стоит как говориться "пускать свинью под стол, а то она на стол полезет"?

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 08:40 19-10-2009
Walerik75

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток!
 
TcxGrid Есть колонка с Properties = PopupEdit.
Как можно запретить активацию Popup по условию содержимого ячейки колонки? В частном случае: ячейка пустая - запретить выпадение редактора, ячека содержит значение - разрешить вызов редактора.

Всего записей: 8 | Зарегистр. 13-12-2008 | Отправлено: 16:02 19-10-2009
volser

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

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 18:00 19-10-2009
vladman

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

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

Можно, конечно, создать наследник от TcxCustomDropDownEdit и переопределить его метод CanDropDown, но в вашем случае того же результата можно добиться немного проще, обработав событие onGetProperties вашей колонки. По умолчанию для этой колонки никаких Properties и RepositoryItems устанавливать не нужно. Также предварительно необходимо создать PopupEditItem в cxEditRepository. Сам обработчик может выглядеть так:

Код:
procedure <YourForm>.<YourcxGridTableViewYourColumnWithPopupEditor>GetProperties(Sender: TcxCustomGridTableItem; ARecord:
    TcxCustomGridRecord; var AProperties: TcxCustomEditProperties);
begin
  if not VarIsNull(Sender.GridView.DataController.Values[ARecord.Index, Sender.Index]) then
    AProperties := <YourcxEditRepositoryYourPopupItem>.Properties;
end;
 

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 19:50 19-10-2009 | Исправлено: vladman, 19:55 19-10-2009
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman
А зачем так сложно если можно просто запретить редактировать в событии OnEditing?

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 20:13 19-10-2009
vladman

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

Цитата:
А зачем так сложно если можно просто запретить редактировать в событии OnEditing?

Согласен, вы правы! Мы же - не ищем легких путей .
Забыл, что в обработчике события OnEditing есть возможность запретить редактирование для ячейки.  
В таком случае Walerik75, вот еще один (самый простой) вариант решения вашей проблемы предложенный volser

Код:
procedure <YourForm>.<YourcxGridTableView>Editing(Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem; var AAllow: Boolean);
begin
  AAllow := not VarIsNull(Sender.DataController.Values[Sender.DataController.FocusedRecordIndex, AItem.Index]);
end;

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 20:39 19-10-2009 | Исправлено: vladman, 20:40 19-10-2009
Walerik75

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
volser
vladman
Спасибо!
Смотрел не в ту сторону: OnCellClick.
 
В принципе подходят оба варианта. В гриде колонки создаются динамически и при создании назначаются и Properties и события...
 

Код:
...
            ((TcxPopupEditProperties*)column->Properties)->PopupControl = cxGrid1;
            ((TcxPopupEditProperties*)column->Properties)->AutoSelect = false;
            ((TcxPopupEditProperties*)column->Properties)->ImmediatePopup = false;
            ((TcxPopupEditProperties*)column->Properties)->OnInitPopup = gSetkaChasTableViewGROUPPropertiesInitPopup;
            ((TcxPopupEditProperties*)column->Properties)->PopupSysPanelStyle = true;
            ((TcxPopupEditProperties*)column->Properties)->OnCloseUp = gSetkaChasTableViewGROUPPropertiesCloseUp;
...
 

 
Это всё можно прикрутить и в событии OnGetProperties
 
Но вариант с OnEditing всётаки более "лёгкий" для обработки.

Код:
 
void __fastcall TUchPlanSodF::gSetkaTableViewEditing(TcxCustomGridTableView *Sender,
          TcxCustomGridTableItem *AItem, bool &AAllow)
{
    AAllow = !Sender->DataController->Values[Sender->DataController->FocusedRecordIndex][AItem->Index].IsNull();
}
 

Всего записей: 8 | Зарегистр. 13-12-2008 | Отправлено: 00:15 20-10-2009 | Исправлено: Walerik75, 00:16 20-10-2009
Kmich



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет. Сегодня косячок у себя в программе  нашел (использую cxGrid (cxDBTableView) в связке с TOraQuery из Odac 6.9.). который заключается в следующем, при вставке из буфера обмена строки или числа это значение не сохраняется при переходе на следующую строку или при нажатии на Enter. Скорее всего это косяк со стороны cxGrid. Так как сегодня проверил на девках 42 версии то все нормально работает а на 46 эта ошибка проявляется. Может кто знает как лечить или может это только у меня так глючит?

Всего записей: 192 | Зарегистр. 21-01-2005 | Отправлено: 07:03 20-10-2009
mdid

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

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 11:12 20-10-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mdid
скорее всего придется обрабатывать события связанные с Summary или попытаться вытащить эти Summary из DataControllera. методов вроде бы нет...

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:15 20-10-2009
mdid

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

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 11:32 20-10-2009
f3ka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mdid
все таки я настоятельно советую изучить TcxSummaryItem в хелпе... думаю что проблема решаема средствами DevExpress

Всего записей: 497 | Зарегистр. 02-03-2007 | Отправлено: 11:39 20-10-2009
Walerik75

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mdid
В событии OnAfterSummary можно выдернуть значения
Вот код, в котором я переписываю свои значения (у меня там строковые значения) в футер группы и футер всей таблицы.

Код:
 
void __fastcall TUchPlanSodF::gSetkaTableViewDataControllerSummaryAfterSummary(TcxDataSummary *ASender)
{
    TcxDataControllerGroups* AGroups = ASender->DataController->Groups;
    TcxGridTableSummaryItem* GItem;
 
    TcxGridTableSummaryItem* AItem;
    TcxGridDBBandedColumn* GC;
    UnicodeString FieldName;
 
    int gc = ASender->GroupSummaryItems[0]->Count;
    int sc = ASender->FooterSummaryItems->Count;
 
    UnicodeString TempStr;
 
    if((gc<4)||(sqlUchPlanLeft->RecordCount==0))
        return;
 
// заполнение футера группы
    for(int i=0; i<AGroups->ChildCount[-1]; i++)
    {
        ...
        for(int g=3; g<gc; g++)
        {
            GItem = (TcxGridTableSummaryItem*)ASender->GroupSummaryItems[0]->Items[g];
            GC = (TcxGridDBBandedColumn*)GItem->Column;
            FieldName = GC->DataBinding->FieldName;
            ...
            ASender->GroupSummaryValues[AGroups->ChildDataGroupIndex[-1][i]][g] = TempStr;
            ...
        }
    }
 
// заполнение итогового футера
    for(int i=2; i<sc; i++)
    {
        AItem = (TcxGridTableSummaryItem*)ASender->FooterSummaryItems->Items[i];
        GC = (TcxGridDBBandedColumn*)AItem->Column;
        FieldName = GC->DataBinding->FieldName;
        ...
        ASender->FooterSummaryValues[i] = TempStr;
        ...
    }
 
}
 

Всего записей: 8 | Зарегистр. 13-12-2008 | Отправлено: 12:43 20-10-2009 | Исправлено: Walerik75, 12:44 20-10-2009
vladman

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

Цитата:
подскажите плз как в cxGrid получить сумму колонки

В футер саммари создаем новый айтем. В этом айтеме свойства
Column - оставляем nil.
FieldName - ваше поле, сумму которого вы хотите получить (<YourcxGridDBTableViewSummColumn> в примере)
Kind - skSum.
Получаем значение этого айтема так

Код:
var
  vIndex: integer;
  vValue: variant;
begin
  with <YourcxGridDBTableView>.DataController.Summary do
    begin
      vIndex :=  FooterSummaryItems.IndexOfItemLink(<YourcxGridDBTableViewSummColumn>);
      vValue :=  FooterSummaryValues[vIndex]
    end;
end
 

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 14:14 20-10-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