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

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



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dukekz
Дерево фактически строится заново. Так ведь ? Попробуй:

Код:
 
if (Action == trDBChangeParent)  
{  
  TreeView->DataSource->DataSet->DisableControls();
  try  
  {  
    SetBranchData(KeyFieldValue, OldData, NewData);  
    TreeView->DataSource->DataSet->Close();
    TreeView->DataSource->DataSet->Open();
  }  
  __finally  
  {  
    TreeView->DataSource->DataSet->EnableControls();
  }  
}  
 


Всего записей: 403 | Зарегистр. 15-02-2006 | Отправлено: 17:41 10-09-2014
Dukekz

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

Цитата:
Дерево фактически строится заново. Так ведь ? Попробуй:

Спасибо, попробовал. Результат в точности такой же, как и в моем коде, такой же AV ((
 
PS Вообще получалось в моем варианте, что хоть и происходил рефреш всего датасета, но все узлы остаются в том состоянии, что были до. Тобишь не происходит полное пересоздание всех итемов, как при первом открытии. Точно так же и в Вашем примере, с одним отличием, что после DisableControls(), Close() и Open() активным после вылета эксепшена становится первый узел в дереве.  А все узлы что были открыты, продолжают оставаться такими, на своих местах.
 
ЗЗЫ Еще хотел спросить, не получается отлаживать в коде компонент DevExpress. В исходный код VCL  проваливаюсь, а в компоненты - нет. Раньше вроде была опция в свойствах проекта UseDebugLibraries, а в XE5 не могу такой найти. Маршруты инклудов и либрари смотрят на папку с отладочными версиями девок. Их про компиляции туда само сложило. Что ему еще надо то?

Всего записей: 59 | Зарегистр. 24-12-2012 | Отправлено: 12:17 11-09-2014 | Исправлено: Dukekz, 13:29 11-09-2014
dred2k



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dukekz
В BrowsingPath пропиши все каталоги с сырцами девок. Насчет успешного дебага - не гарантирую, но допускаю (проверять не охота, у меня прописано). Плюс код в среде будет открываться.

Цитата:
как при первом открытии

Ну, сравни код, что там волшебного делается...
Кстати, на датасете, датасорсе события висят ?
 

Всего записей: 403 | Зарегистр. 15-02-2006 | Отправлено: 14:29 11-09-2014
Dukekz

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

Цитата:
Кстати, на датасете, датасорсе события висят ?  

Поотключал уже все. Сейчас вытащу этот кусок кода и компоненты в пустой проект, но мне кажется так же валиться будет.

Всего записей: 59 | Зарегистр. 24-12-2012 | Отправлено: 16:02 11-09-2014
Dukekz

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем и в пустом проекте валится точно так же.
 
Шибко долго разбираться некогда, поэтому решил не пользоваться событием OnDBAction, перенес код в событие OnEndDragTreeNode. В нем рефреш работает без эксепшенов.

Всего записей: 59 | Зарегистр. 24-12-2012 | Отправлено: 10:12 12-09-2014
Chukotka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cxGrid - при использовании встроенного фильтра команда связанного с Grid DataSet.Last не всегда приводит к позиционированию грида на посл запись.
Как принудительно перевести фокус на последнюю отфильтрованную запись?

Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 12:10 14-09-2014
dred2k



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

Цитата:
Record Navigation
 
The GotoFirst, GotoLast, GotoNext and GotoPrev methods provided by a data controller allow you to navigate through visible rows in the order that they are displayed on screen. A row represents a potentially visible data record or a grouping row, which can be focused, selected and deleted. The order in which rows are displayed on screen is based on the sorting, filtering and grouping applied. Rows hidden within collapsed data groups cannot be accessed by these methods.
 
 
Navigation methods (GoToFirst, GoToLast, GoToNext and GoToPrev) provided by the View's controller work in a similar manner. However, these also enable you to move focus between master and detail Views.
 
 
To move focus between rows, you can change the focused row or its index explicitly. See the Focused/Selected Records topic for more information.
 
 
Data record navigation is performed differently in provider/unbound and bound modes.
 
In provider, unbound, server, and default bound modes, you can use record indexes to iterate through data records. To make a data record focused and visible at the same time, you can assign its record index to the data controller's FocusedRecordIndex property. Record indexes can vary from 0 to RecordCount – 1.
 
Note: Do not confuse the View's DataController.FocusedRecordIndex and Controller.FocusedRecordIndex properties. The former specifies the record index of the focused record, i.e. the position of the record in the data controller (this is equivalent to the RecordIndex property of the Controller.FocusedRecord object). The latter specifies the row index of the focused record, i.e. the record's visual position (this is equivalent to the Index property of the Controller.FocusedRecord object and to the DataController.FocusedRowIndex property)
 
 
In Grid mode, you should use methods provided by the TDataSet descendant associated with the data controller to navigate records.
 
 
ExpressQuantumGrid provides the end-user the ability to navigate records using an embedded View navigator control. This allows moving focus to the first, last, next and previous row and to the next and previous page.


Всего записей: 403 | Зарегистр. 15-02-2006 | Отправлено: 12:20 14-09-2014
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем
Использую Grid: TcxGrid без DataSet.
в дизайнере создан один стобец.
Если пишу в коде  
GridTableView.DataController.RecordCount := 1;
GridTableView.DataController.Values[0, 0] := 5;
i := GridTableView.DataController.Values[0, 0];
то i становится равным 5.
Но если в пустом гриде нажать кнопку Append и набрать в ячейку 5, нажать энтерб нажать кнопку Post, то  
i := GridTableView.DataController.Values[0, 0];
не срабатывает потому, что GridTableView.DataController.Values[0, 0] не присвоено ни одно значение? хотя на экран выводит 5. Забавно что при этом не определено.
Так-же столкнулся что  
GridTableView.DataController.Values[0, 0] - неопределено, а
GridTableView.DataController.DisplayTexts[0, 0] равно "5".
В качестве редактора ячейки задан TcxCalcEditProperties, его свойство ImmediatePost := True;
Делфи ХЕ6 DevExpress 2014.1.4
Кто нибуть в курсе что за прикол?

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 04:14 21-09-2014
dred2k



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V1s1ter
Как я понял, ты используешь TcxGridTableView ?
Попробуй включить в DataController.Options.dcoImmediatePost.

Всего записей: 403 | Зарегистр. 15-02-2006 | Отправлено: 08:59 21-09-2014
SuPriTo



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

Цитата:
Кто нибуть в курсе что за прикол?

Я реализовывал собственный DataSource, унаследованный от TcxCustomDataSource.
В нем хранил необходимые данные.

Всего записей: 1474 | Зарегистр. 24-03-2009 | Отправлено: 10:04 21-09-2014
asutp2

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

Цитата:
Я реализовывал собственный DataSource, унаследованный от TcxCustomDataSource.  В нем хранил необходимые данные.  

делал аналогично, все работает

Всего записей: 785 | Зарегистр. 22-10-2004 | Отправлено: 16:27 21-09-2014
dred2k



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

Цитата:
собственный DataSource

Плюс TdxMemData никто не отменял. Просто и наглядно, в подавляющем, как говорится, большинстве случаев.

Всего записей: 403 | Зарегистр. 15-02-2006 | Отправлено: 17:40 21-09-2014
V1s1ter



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

Цитата:
Попробуй включить в DataController.Options.dcoImmediatePost.

Был включен.

Цитата:
Плюс TdxMemData никто не отменял.

Обычно я так и делаю, но ведь это же стандартная фича cxGrid...
Да и мне надо чтобы пользователь просто матрицу задал, cxGrid выбрал только из-за желания сохранить единообразие интерфейса.
ЗЫ Наблюдал еще одну штуку - в отладчике пишет, что пзначение ячейки не определено, а по if переходит как по определенному значению. Такие штуки огорчают.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 17:58 21-09-2014
dred2k



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V1s1ter
А ты в каком месте проверяешь введенные данные ? По событиям грида (едитора и т.п.) ?
Поподробнее про это, плиз.
Если в неких событиях едита, то полезно вручную делать cxCustomEdit.PostEditValue.

Всего записей: 403 | Зарегистр. 15-02-2006 | Отправлено: 18:23 21-09-2014
SuPriTo



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

Цитата:
Обычно я так и делаю, но ведь это же стандартная фича cxGrid...  

Я тоже по началу пытался сделать так, как вы, но у меня ничего не получилось. Стал смотреть в примерах, там сделано, как я описывал выше.

Всего записей: 1474 | Зарегистр. 24-03-2009 | Отправлено: 18:23 21-09-2014
dred2k



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V1s1ter
В том месте, где проверяешь введенные данные и видишь несоответствие, проверь DataController.IsEditing. Еще интересно, в каком значении при этом DataController.EditState.
Можно попробовать вызвать DataController.PostEditingData.
Хотя странно, навигатор по идее сам все это вызывать должен по своим кнопкам...

Всего записей: 403 | Зарегистр. 15-02-2006 | Отправлено: 18:35 21-09-2014 | Исправлено: dred2k, 18:37 21-09-2014
V1s1ter



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

Цитата:
Я тоже по началу пытался сделать так, как вы, но у меня ничего не получилось.

У меня то получилось, просто загадки какие то.
 
Добавлено:
dred2k
Обратите внимание на скриншоье на
GridTableView.DataController.DisplayTexts[iRow, LocalColX]
GridTableView.DataController.DisplayTexts[iRow, LocalColY]
IsValue
Второй скриншот - то что отображается на экране в момент отладки.
   
https://imageshack.com/i/f0ryqqqQp
   
https://imageshack.com/i/p8DWOUrCp

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 22:22 21-09-2014 | Исправлено: V1s1ter, 22:33 21-09-2014
dred2k



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
V1s1ter
Ну, тут можно было бы и через датасет сделать, я то думал, у тебя переменное кол-во столбцов, к примеру...
Кстати, я бы попробовал не просто TableView, а DBTableView в режиме Unbound. По хелпу вроде как самое оно.  
А так костыль как костыль. Бывает.

Всего записей: 403 | Зарегистр. 15-02-2006 | Отправлено: 04:42 22-09-2014
V1s1ter



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

Цитата:
я то думал, у тебя переменное кол-во столбцов

Так и есть
В любом случае спасибо. Дамал может кто теми же габлями получил, и знает где собака порылась.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 11:30 22-09-2014
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всезнающему народу
Пара вопросов ао TcxGrid:
1) Есть ли какое красивое решение вопроса написания нижних/верхних индексов в  заголовках таблиц?
2) Как задать рисование шапки таблицы в стиле В, рисует в стиле А?

Код:
 
А
--------------------------------------------
|          |                     |Стоимость    |
|--------|-----------------|--------|------|
|№ п/п |Наименование|покуп.|прод.|
---------------------------------------------
 
В
--------------------------------------------
|          |                     |Стоимость    |
|№ п/п |Наименование|---------------|
|          |                     |покуп.|прод.|
--------------------------------------------
 

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 02:41 27-09-2014 | Исправлено: V1s1ter, 02:43 27-09-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 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