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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



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

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




 
DLL со скинами из библиотеки dxSkins, автор Ziltoid Подробнее... линк обновлен
Продолжение, Первая часть, вторая часть, третья часть

Полезные утилиты:
DxAutoInstaller v2.1.10 Простой и удобный тул для установки девок из исходников
https://mega.nz/#!aJRQzSqI!N7RgfcG1tfF45Z3OgcmBDHT_ZcWlIgJQ5eHHgQ9VupE

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:48 31-12-2009 | Исправлено: G787, 21:12 29-07-2018
vladman

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

Цитата:
Файл доступен, просто замените spam_detected на depositfiles


Цитата:
Если вдруг это не баг, то что я делаю не так?

Это не баг. Это, так сказать, "intended behavior" ExpressBars.
ms-help://borland.bds5/ExpressBars6.BDS5/ExpressBars6/IDH_Class_TdxBarControlContainerItem.htm

Цитата:
Important Note:   Only basic controls are eligible to be put into submenus or Ribbon controls. In other words, those controls should not have window handles.
Only one instance of an external control should be visible when running an application, therefore set the Visible property of the external control to False in order to provide faultless functionality.

А в чем необходимость использования dxBarControlContainerItem для помещения dxDateEdit и cxCheckBox на ToolBar? В таком случае я бы воспользовался в качестве элементов меню компонентами типа TcxBarEditItem.
ms-help://borland.bds5/ExpressBars6.BDS5/ExpressBars6/IDH_Class_TcxBarEditItem.htm
ms-help://borland.bds5/ExpressBars6.BDS5/ExpressBars6/IDH_CD_Inplace_Editors.htm
ms-help://borland.bds5/ExpressBars6.BDS5/ExpressBars6/IDH_CD_List_of_Bar_Item_Types.htm

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 15:21 10-05-2010
X11



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

Цитата:
А в чем необходимость использования dxBarControlContainerItem для помещения dxDateEdit и cxCheckBox на ToolBar?

А почему бы нет? Помниться мне, что Вы советовали наоборот использовать dxBarControlContainerItem + стандартные элементы, в то время, когда я использовал TcxBarEditItem.
 
Добавлено:
И ещё. Согласно справке, все элементы, помещаемые на dxBarControlContainerItem, должны иметь значение False в свойстве Visible. Так вот. Использую cxCheckBox и cxDateEdit.  
cxDateEdit во время исполнения видно, а cxCheckBox не видно. Приходится у cxCheckBox свойство visible ставить в True. Тоже мне кажется это не совсем корректным.

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 16:23 10-05-2010
afiget



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

Цитата:
А в чем необходимость использования dxBarControlContainerItem для помещения dxDateEdit и cxCheckBox на ToolBar? В таком случае я бы воспользовался в качестве элементов меню компонентами типа TcxBarEditItem.

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

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 16:37 10-05-2010
vladman

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

Цитата:
Помниться мне, что Вы советовали наоборот использовать dxBarControlContainerItem + стандартные элементы, в то время, когда я использовал TcxBarEditItem.

Навряд ли. Вы наверное меня с кем-то перепутали, и, скорее всего, с afiget.
Насколько я помню, был один случай когда я советовал использовать dxBarControlContainerItem. Это касалось помещения в меню TcxMemo. Но потом, вроде как, остановились на использовании TcxBarEditItem PopupEdit.

Цитата:
И ещё. Согласно справке, все элементы, помещаемые на dxBarControlContainerItem, должны иметь значение False в свойстве Visible.

В вашем случае более важной и определяющей является первая часть примечания из справки - "Только базовые контролы допустимы для помещения в подменю ... . Иными словами такие контролы не должны иметь window handles". Если это указано в справке, то, наверное, не просто так.
X11
afiget

Цитата:
А почему бы нет?


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

Каждому, конечно, самому решать что да, а что нет. Я всего лишь попытался поделиться своим humble opinion, правда, подтвержденным двумя статьями из небезызвестного источника ).
1. TdxBarControlContainerItem - Makes it possible to use a control which has window handle in a submenu
2. TdxBarControlContainerItem - Easy focusing
X11 - вам обязательно нужно ознакомиться со второй, раз уж вы решили использовать TdxBarControlContainerItem в качестве SubMenu, обратив внимание на "Workaround:  How to Programmatically Set Focus to an ControlContainerItem".

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 01:50 11-05-2010
X11



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

Цитата:
X11 - вам обязательно нужно ознакомиться со второй, раз уж вы решили использовать TdxBarControlContainerItem в качестве SubMenu

Я не использую TdxBarControlContainerItem в качестве SubMenu, я в сам пункт меню вставляю TdxBarControlContainerItem. Или это Вы и имели ввиду?
 
За ссылки огромное спасибо.

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 10:46 11-05-2010
vladman

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

Цитата:
Или это Вы и имели ввиду?

Да, именно это имел ввиду.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 11:14 11-05-2010
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
объясните плз мне такую штуку..а то уже  пипец
есть GridTableView1 хочу его разукрасить в связи с нуждами(через CustomDrawCell)
для примера ввел рандомные данные где четное поле имеет значение 1..нечетное 0
в этом обработчике пишу

Код:
 
  if GridTableView1.DataController.Values[AViewInfo.RecordViewInfo.Index, Tp.Index]=0 then
    ACanvas.Brush.Color:=$008080FF
  else
    ACanvas.Brush.Color:=$0068E005;
 

все отлично выводит...но если сделать сортировку по этому полю(что бы рядом были 1 и 0)
то все равно красит зеброй+неадекватно реагирует на скрол мышкой..закрашивая вообще непонятно...как этот адский компонент нормально закрасить?

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 11:31 11-05-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Лучше использовать событие OnGetConextStyle

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 12:07 11-05-2010
mdid

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

Код:
 
  GridTableView1.DataController.Values[AViewInfo.RecordViewInfo.Index, Tp.Index]
 

на

Код:
 
  ColumnID := GridTableView1.FindItemByName('Tp').Index;
  Cellvalue := AViewInfo.GridRecord.Values[ColumnID];
 

 

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 12:19 11-05-2010
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
чтобы с позиционировать и выбрать запись при щелчке на кнопки когда открываю детал использую вот этот обработчик
procedure TFormDataVvod.TvDataDataControllerDetailExpanded(
  ADataController: TcxCustomDataController; ARecordIndex: Integer);
begin
  if ADataController.FocusedRecordIndex<>ARecordIndex then
  begin
    ADataController.ClearSelection;
    ADataController.CollapseDetails;
    ADataController.FocusedRecordIndex := ARecordIndex;
    ADataController.ChangeDetailExpanding(ARecordIndex,True);
    ADataController.ChangeRowSelection(ARecordIndex,True);
  end;
end;
а когда выбираю просто запись хочу чтобы закрылся детал у ранее открытой другой записи для этого использую обработчик SelectionChanged в котором закрываю все деталы. Проблема в том что при вставке новой записи вылизает ошибка RecordIndex вышел за пределы и второе из то что в обработчике DetailExpanded есть строка  ADataController.ChangeRowSelection(ARecordIndex,True); то закрытие происходит таже при нажатие на Expanded Button поэтому приходиться два раза кликать на ней чтобы открыть. Посоветуйте как обойти это, может обработчик другой какой нужен?

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 15:32 11-05-2010
brookson



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! Ищу такую вот возможность у cxGird-a.  
Есть группировка по первому столбцу. Надо, чтоб для одной из групп выводились дополнительные DefaultGroupSummaryItems (по некоторых столбцах).
То есть для всех групп суммируем 4 столбец, а в одной из групп надо еще суммировать и 2, 3, 5 и 6 столбец.
 
Возможно ли такое? Пытаюсь вникнуть в раздел справки "Obtain And Set Summary Values", но не совсем понимаю, о чём там идёт речь.
Может поможет кто?

Всего записей: 139 | Зарегистр. 06-09-2007 | Отправлено: 16:14 11-05-2010
Zaragossa



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! Недавно начал пользоваться девом. Так что не судите строго. У меня вопрос" Как в Гриде поставить  фокус на нужную мне ячейку(например ячейка(3,2) )  в режим редактирования? Заранее спасибо.

Всего записей: 10 | Зарегистр. 27-11-2009 | Отправлено: 16:51 11-05-2010 | Исправлено: Zaragossa, 17:00 11-05-2010
Cryogen2003



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Zaragossa
FrecordIndex - индекс записи
Acolumn - столбец грида
 
Если фокус, то я делаю так:
AGrid.DataController.FocusedRecordIndex := FRecordIndex;
AGrid.Controller.FocusedColumnIndex := AColumn.VisibleIndex;
 
Если надо выделить (selected) сделать, то тогда так:
AGrid.Controller.ClearSelection;
ARowIndex :=
  AGrid.DataController.GetRowIndexByRecordIndex(FRecordIndex, True);
AGrid.Controller.SelectCells(AColumn, AColumn, ARowIndex, ARowIndex);

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

Всего записей: 745 | Зарегистр. 08-12-2004 | Отправлено: 16:57 11-05-2010
Zaragossa



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

Цитата:
Cryogen2003  

 
Большое тебе спасибо, по началу не мог понять почему оно выделяет ячейку но при нажатие ентера не  ставит в режим ввода, а как поставил Grid1.Setfocus() в начале все заработало!  
Еще раз спасибо!
 

Всего записей: 10 | Зарегистр. 27-11-2009 | Отправлено: 17:16 11-05-2010
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как зделать чтоб текст в заголовках (cxGrid,PivotGrid) был вертикальным а не горизонтальным.
Уж больно много места занимает.

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 18:14 11-05-2010
xokc

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tanaseduard
Для начала так:
hxxp://devexpress.com/Support/Center/p/Q257053.aspx
hxxp://devexpress.com/Support/Center/p/Q180484.aspx
hxxp://devexpress.com/Support/Center/p/Q241794.aspx

Всего записей: 476 | Зарегистр. 22-09-2002 | Отправлено: 20:24 11-05-2010
vladman

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

Цитата:
Посоветуйте как обойти это, может обработчик другой какой нужен?

Лучше, на мой взгляд, в вашей ситуации использовать обработчик onFocusedRecordChanged.
Следующий код должен решить обе ваши проблемы:

Код:
procedure <Your>TForm.<Your>cxGridDBTableViewDataControllerDetailExpanded(ADataController: TcxCustomDataController;
  ARecordIndex: Integer);
begin
  ADataController.CollapseDetails;
  ADataController.FocusedRecordIndex := ARecordIndex;
  ADataController.CheckFocusedSelected;
  try
    <Your>cxGridDBTableView.DataController.OnDetailExpanded := nil;
    ADataController.ChangeDetailExpanding(ARecordIndex, True);
  finally
    <Your>cxGridDBTableView.DataController.OnDetailExpanded := <Your>cxGridDBTableViewDataControllerDetailExpanded;
  end;
end;
 
procedure <Your>TForm.<Your>cxGridDBTableViewFocusedRecordChanged(Sender:
    TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord:
    TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean);
begin
  if not (TcxDBDataController(Sender.DataController).DataSet.State in [dsInsert]) then
    Sender.DataController.CollapseDetails;
end;
 
procedure <Your>TForm.<Your>DataSetBeforeInsert(DataSet: TDataSet);
begin
   <Your>cxGridDBTableView.DataController.CollapseDetails;
end;


Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 03:14 12-05-2010
Man_Without_Face



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

Цитата:
Может кто подскажет почему в Dll при рантайме не поддерживаются скины (DevExpress v48), в дезайн выставляю и все отлично меняется? В exe и там и там нормально.

На что получил ответ:

Цитата:
Нормальная работа VCL в dll без использования пакетов не гарантируется, об этом написано в справке. Обычно это приводит к возникновению самых странных и непредсказуемых глюков. Собственно поэтому вас тут так агитировали использовать пакеты. Но раз у вас разные версии делфи, и это не возможно, то остается только минимизировать использование VCL в библиотеке.

В шапке этой ветки есть ссылка на DLL со скинами, я ее скачал. Вопрос: можно ли как нибудь к моей DLL "приклеить" эту, чтобы у меня была поддержка скинов?

Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 09:28 12-05-2010
Zaragossa



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем доброе утро!
В работе с DevExpress мне было необходимо использовать  cxGrid примерно так же как Stringgrid.
Поделюсь своими наработками в этом деле:
1.Используем не DBtable а просто Table
2.Создаем колонки
3. Для добавления строки я использую - Table1.DataController.recordcount:= i (кол-во строк), их можно увеличивать по ходу выполнения цикла или другой операции
(например i+1) ;  
4. Для Записи в ячейку использую Table1.DataController.setvalue(строка,колонка,значение)
5.А если надо выбрать значение из ячейки использую Table1.DataController.getvalue(строка,колонка)  
6. Table1.DataController.RecordCount -  кол-во строк
7. Если хотим видеть сумму по колонке использую Footer, включить его можно в параметрах Table - OptionsView- Footer - true.  

Всего записей: 10 | Зарегистр. 27-11-2009 | Отправлено: 09:43 12-05-2010
SIgor33

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

Цитата:
Следующий код должен решить обе ваши проблемы:

Спасибо все заработало.
 
Возник еще вопрос
У меня в одной из колонок cxGridDBTableView используется в качестве элемента редактирования LookupComboBox на нем висит справочник у которого  два поля ID (идентификатор тип integer) и Name (текстовое значение) это поле является listsource а id ключевым которое пишется в базу. Хотелось находясь на текущей записи без использования sql запроса по Id получить текстовое значение словаря данной записи.  

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 11:07 12-05-2010 | Исправлено: SIgor33, 11:08 12-05-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 4)


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru