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

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
TableView.OptionsView.HeaderHeight работает только в том случае, если все столбцы имеют стандартный размер (Column.Position.LineCount = 1)
 
Если же хотя бы один столбец имеет Column.Position.LineCount > 1, то TableView.OptionsView.HeaderHeight перестает действовать - все столбцы, кроме изменяемого, принимают стандартную высоту, изменяемый же столбец принимает высоту Column.Position.LineCount * (стандартная высота).
 
TableView.OnGetCellHeight - опять же, вызывается только в случае, если столбцы имеют стандартный (Column.Position.LineCount = 1) размер.
 
Продолжаю искать решение =) ...

Всего записей: 7 | Зарегистр. 29-03-2006 | Отправлено: 16:34 16-11-2007
NuclearDeath1

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Половинчатое решение найдено.
 
Устанавливаем Column.Position.LineCount = 1, и меняем высоту заголовков всех колонок разом с помощью TableView.OptionsView.HeaderHeight.
 
Хотелось сделать таблицу с разной высотой заголовков столбцов (т.е., например, высота заголовка столбца Col1 равна 7 усл. ед., а высота заголовка столбца Col2 равна 10 усл. ед.), чтобы при этом все ячейки имели стандартную высоту - но ИМХО это пока что невозможно.
 
Спасибо всем откликнувшимся

Всего записей: 7 | Зарегистр. 29-03-2006 | Отправлено: 14:38 18-11-2007
korobovmax



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

Цитата:
 
Событие <GridDBTableView>+<ИмяСтолбца>.OnCustomDrawHeader - прямо в нем руками с помощью местного Canvas'а рисовать заголовок столбца. Примеры рисования есть в Demos'ах стандартной поставки

 
Нужно-то всего:
1. Сэмулировать рисование столбцов (так как себе надо);
2. Рисование треугольника сортировки;
3. Вывод текста (заголовка столбца).
 
И гордо устанавливать ADone в True

Всего записей: 276 | Зарегистр. 23-01-2005 | Отправлено: 14:51 18-11-2007
DroN_S

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

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 23:28 18-11-2007 | Исправлено: DroN_S, 23:28 18-11-2007
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DroN_S
SomeView.OPtionsBehavior.IncSearch = true
SomeColumn.Options.IncSearch = true
 
Разрешает поиск по колонке, когда курсор находится в ячейке этой колонки.

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 02:23 19-11-2007 | Исправлено: afiget, 02:25 19-11-2007
DroN_S

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget
пардон, не в cxGrid'е, а  в dxDBGrid'е осуществить контекстный поиск?

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 05:16 19-11-2007
NuclearDeath1

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

Всего записей: 7 | Зарегистр. 29-03-2006 | Отправлено: 13:12 19-11-2007
afiget



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

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 14:48 19-11-2007
aQG

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Помогите пожалуйста с проблемой.
Использую Quantum Grid v.6.
Работаю следующим образом:
Delphi. Компоненты TQuery, TDataSource, TAdoConnection.
Выполняю запрос (запросы самые разнообразные). Резултат отображаю в гриде:
cxGrid1DBTableView1.DataController.CreateAllItems(false);
Таким образом, в режиме дизайна ничего не проектирую.
Стоит следующая задача.  
Большинство запросов типовые и возвратят примерно следующее:
[Идентификатор], [Количество], [Цена]. Остальные поля не столь выжны.
Нужно группировать данные. Переношу в верхнюю часть грида столбец [Идентификатор] и получаю все почти в том виде, как это и требуется.  
Теперь хочется рядом с наименованием идентификатора видеть общее количество и общую цену для группы. Как это сделать?
В хелпе нашел пример. Но это только для того случая, когда в режиме дизайна создаются поля (Table View Tutorial. Step 8: Group Summary Creation), т.е. нам уже известно, какие поля будут во View. Как такое сделать в рантайме?
 
         

Всего записей: 2 | Зарегистр. 19-11-2007 | Отправлено: 15:49 19-11-2007
DroN_S

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget
оказалось очень банально, надо было выставить свойство edgoAutoSearch в true и всё
вот следующий вопрос: как загрузить картинку в dxDBGrid...
я делаю сейчас так: создал поле типа GraphicColumn, сделала его первым по счёт (IndexCol=0) и на событие OnCustomDrawCell повешал такой код

Код:
 
if (AColumn = OrgList.Columns[0]) and
     (dm.IView.FieldByName('EXT').AsInteger = 0) then
       begin
         OrgList.Canvas.Draw(ARect.TopLeft.x, ARect.TopLeft.y, frmView.Excel);
         OrgList.Cursor := crHandPoint;
       end;
 

но он не работает... почему?
в простом гриде всё ОК!
да и ещё вопрос: теперь контекстный поиск не работает... почему то он теперь идёт по первому полю, соотвественно, тм нет ничего да и тип не тот. Как сделать, чтобы контекстный поиск работал по всем полям?

Всего записей: 1143 | Зарегистр. 09-04-2005 | Отправлено: 17:10 19-11-2007
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброе время суток.
А можно в гриде вызвать программным путем окно фильтра на определенное поле? Если да, то подскажите как.

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 19:23 19-11-2007
golkanavt



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

Цитата:
А можно в гриде вызвать программным путем окно фильтра на определенное поле? Если да, то подскажите как.

Пример программного добавления фильтра по текстовому полю. Текст для фильтрации задается в переменной FilterDisplayText:

Код:
 
var
  FilterDisplayText, FilterText: string;
  AItem: TcxCustomGridTableItem;
  AItemList: TcxFilterCriteriaItemList;
...
                with YourTableView do
                begin
                  AItem := Items[GetColumnByFieldName(YOURFIELDNAME).Index];
                  FilterText := '%' + FilterDisplayText + '%';
                  try
                    DataController.Filter.BeginUpdate;
                    AItemList := DataController.Filter.Root.AddItemList(fboOr);
                    AItemList.AddItem(AItem, foLike, FilterText, FilterDisplayText);
 
                    AItem := Items[GetColumnByFieldName(YOURFIELDNAME).Index];
                    FilterText := '%' + FilterDisplayText + '%';
                    AItemList.AddItem(AItem, foLike, FilterText, FilterDisplayText);
                  finally
                    DataController.Filter.Active := true;
                    DataController.Filter.EndUpdate;
                  end;
                end;
 


----------
Shit happens...

Всего записей: 1069 | Зарегистр. 08-04-2002 | Отправлено: 12:08 20-11-2007
Dronton2

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

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 15:25 20-11-2007
X11



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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:14 20-11-2007
uazero

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Появилась неприятная "фича" для моих бухгалтеров после установки версии х.28, до этого работал на апрельской версии.
Ситуация такая:
На форме лежит TcxPageControl с одним TcxTabSheet
На TcxTabSheet лежат TcxVerticalGrid и две кнопки TcxButton
 
Пользователь вводит текстовые данные в TcxVerticalGrid, при нажатии на кнопку TcxButton выполняются действия. Раньше при нажатии на кнопку все действия выполнялись сразу, а с версией х.28 ситуация иная - нужно нажать два раза на кнопку. Т.е. получается, что при первом нажатии на кнопку (т.е. потеря TcxVerticalGrid'ом фокуса) ячейка в TcxVerticalGrid выходит из режима редактирования и фокус всё равно остаётся на TcxVerticalGrid.
 
А теперь вопрос: как побороть это поведение, и сделать так как было в апрельской версии, т.е при потере фокуса TcxVerticalGrid'ом ячейка принимала сделанные изменения (immediate post)

Всего записей: 854 | Зарегистр. 07-03-2006 | Отправлено: 17:26 20-11-2007 | Исправлено: uazero, 17:28 20-11-2007
infomSB



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
aQG
Поищите вот тут
GridClaimantsTV.DataController.Summary.GroupSummaryItems
Необходимо просто добавить нужные вам элементы.
 
Добавлено:
X11
Кстати в папке с QuantumGrid есть прекрасные демки с работой с фильтром
Также вам можно использовать компонент cxFilterControl и в качестве LinkComponent указать нужный вам грид.

Всего записей: 75 | Зарегистр. 17-03-2006 | Отправлено: 12:21 21-11-2007 | Исправлено: infomSB, 12:22 21-11-2007
aQG

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

Цитата:
Поищите вот тут  
GridClaimantsTV.DataController.Summary.GroupSummaryItems  
Необходимо просто добавить нужные вам элементы.

 
Ну, до этого дошел) Что делаю: захожу в режиме дизайна в редактор (кликаю на cxGrid1DBTableView1), перехожу в раздел Summary->Default fo groups. Здесь создаю Item: TcxGridDBTableSummaryItem. В рантайме, как я понимаю, для доступа к нему нужно сделать так: cxGrid1DBTableView1.DataController.Summary.GroupSummaryItems[0].Items[0].
В том же редакторе ставлю для этого итема:  
Format: Сумма
Kind: skSum
Теперь пытаюсь использовать событие cxGrid1DBTableView1CustomDrawGroupCell.
Что здесь-то нужно делать? Как работать с полями.
Если не затруднит, дайте пожалуйста небольшой пример.
 
Нашел в хелпе следующее:

Код:
 
      //The second summary group
      with SummaryGroups.Add do
      begin
        //Add proposed grouping column(s)
        TcxGridTableSummaryGroupItemLink(Links.Add).Column := tvOrdersProductID;
        //Add summary items
        with SummaryItems.Add as TcxGridDBTableSummaryItem do
        begin
          Column := tvOrdersQuantity;
          Kind := skSum;
          Position := spFooter;
          Format := 'TOTAL = 0';
        end;
        with SummaryItems.Add as TcxGridDBTableSummaryItem do
        begin
          Column := tvOrdersPurchaseDate;
          Kind := skMin;
          Position := spFooter;
        end;
      end;
   ...
 

 
tvOrdersProductID, tvOrdersQuantity, tvOrdersPurchaseDate - что это, столбцы таблицы? Выборка у меня формируется динамически. Как мне их объявить и проинициализировать?

Всего записей: 2 | Зарегистр. 19-11-2007 | Отправлено: 12:36 21-11-2007 | Исправлено: aQG, 09:03 22-11-2007
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
uazero
В обменнике (см.шапку) лежит версия х.29. Там это исправлено?

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 09:49 22-11-2007
uazero

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

Всего записей: 854 | Зарегистр. 07-03-2006 | Отправлено: 15:14 22-11-2007
George_Lucky



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2
uazero
28-ая версия работала корректно.
а в 29-ой верт.грид с кнопкой плохо работает (мож кнопка не срабатыват)
и еще в 29 нет скинов
 
похоже придется вертаться на 28-ую

Всего записей: 413 | Зарегистр. 12-09-2002 | Отправлено: 10:37 23-11-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