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

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



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кстати !!!  
А если редактировать через cxGrid   то  как мне отловить ошибки  при вставке ?????
А то  компоненты доступа выводят чисто  свою инфу .  Юзеру  непонятно однако !!
 

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 20:16 03-05-2010
vladman

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

Цитата:
Использую ExpressSkins Library и ExpressBars 6 (49 версия). ...
Мне надо, что иконки отображались все как нарисованы, а не только активная.

За отрисовку иконок при использовании скинов, в том числе, отвечает переменная dxBar.dxBarMakeInactiveImagesDingy. Присвоение ей значения False должно решить вашу проблему.

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 23:55 03-05-2010 | Исправлено: vladman, 00:12 04-05-2010
TechnoDreamer

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

Всего записей: 259 | Зарегистр. 01-06-2008 | Отправлено: 00:13 04-05-2010
JohnSilver182



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

Код:
А если редактировать через cxGrid   то  как мне отловить ошибки  при вставке ?????
А то  компоненты доступа выводят чисто  свою инфу .  Юзеру  непонятно однако !!  

 
Ну то есть сабж делает где то у себя  DATAController.DataSet.POST  . А Компонент доступа ругается  на своем языке .

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 07:59 04-05-2010
crazypiggy

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день, всех с наступающим праздником. Такой вопрос:
 Есть  таблица cxGrid
cxPlanSectorLevel cxPlanSectorDBTableView
    cxPlanVolumeLevel cxPlanVolumeDBTableView
в нижней TableView по стролбцам подбиваются итоги. Можно ли как то эти итоги показать и вверхней TableView. Хотел сделать SQL запросом, но у меня итак запрос выполняется продолжительное время и если я ещё запросом буду получать сумму это будет уже долговато.

Всего записей: 57 | Зарегистр. 02-10-2008 | Отправлено: 09:44 04-05-2010 | Исправлено: crazypiggy, 09:52 04-05-2010
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
уважаемые кто нибудь делал экспорт из ExpressPrinting System  не только в pdf интересует doc, rtf, jpg

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 10:07 04-05-2010
Andryshok



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

Цитата:
Если вы о VCL компонентах, то пока нет таких. А где вы на сайет видели скин Office 2010? По-моему нет таких и для .Net Winform компонент.

 
На оффсайте вроде как пишут что есть, и скрины там есть, если бы даже для Net была dll_ка можно выдрать от туда шкуру и скомпилить для VCL, я так делал уже скин Asplant World

Всего записей: 649 | Зарегистр. 03-06-2009 | Отправлено: 10:43 04-05-2010
vladman

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

Цитата:
Ну то есть сабж делает где то у себя  DATAController.DataSet.POST  . А Компонент доступа ругается  на своем языке .

Как раз POST и вызывается у вашего компонента доступа. Откуда DATAControllerу знать какие потом могут возникнуть исключения. Обрамите ваш DATAController.DataSet.POST в Try/except и в нем ругайтесь уже на понятном языке. А универсальнее будет написать один глобальный обработчик исключений для ваших компонент доступа в котором и будете на понятном языке сообщать пользователю суть ошибки.
 
Добавлено:
crazypiggy

Цитата:
в нижней TableView по стролбцам подбиваются итоги. Можно ли как то эти итоги показать и вверхней TableView.

Не совсем понятно что вы хотите реализовать, скрншот с пояснениями был бы более информативен.
 
Добавлено:
Andryshok

Цитата:
На оффсайте вроде как пишут что есть, и скрины там есть,

Так дайте ссылку где пишут и где есть.

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



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

Цитата:
Как раз POST и вызывается у вашего компонента доступа. Откуда DATAControllerу знать какие потом могут возникнуть исключения. Обрамите ваш DATAController.DataSet.POST в Try/except и в нем ругайтесь уже на понятном языке.

 
Во .  А  как  найти  где делатся  "TcxGrid.DATAController.DataSet.POST"  (кажется так) ??????
 
Ведь когда я жму у навигатора  TcxGrid  кнопочку вставить  V  . То где то в глубинах  TcxGrid вызывается  метод  POST .

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 13:30 04-05-2010
afiget



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

Код:
 
procedure TMyForm.ConnectionError(Sender: TObject; E: EDAError; var Fail: Boolean);
var ErrMessage: string;
begin
    Fail:=false; // потом false, чтобы не было двойного срабатывания
    case E.ErrorCode of
        11: ErrMessage:='Нет связи с сервером!'+chr(13)+'Обратитесь к системному администратору.'+
            chr(13)+
            'Не используйте программу (можете ее закрыть) до устранения неполадок с сетью.'+
            chr(13)+
            'После устранения неполадок с сетью, пожалуйста, перезапустите программу.';
        515:
            begin
                ErrMessage:='Требуется непустое значение!'+chr(13)+chr(13)+'Код ошибки: '+
                    IntToStr(E.ErrorCode)+chr(13)+'Текст ошибки:'+chr(13)+E.Message;
                if Con.InTransaction then // нужно еще показать строку с ошибкой
                    Fail:=true;
            end;
        2627:
            begin
                ErrMessage:='Вводимое значение должно быть уникальным!'
//                + chr(13)+chr(13)+'Код ошибки: '+
//                IntToStr(E.ErrorCode)+chr(13)+
//                'Текст ошибки:'+chr(13)+E.Message
                ;
                Fail:=true;
            end;
        else
        begin
            ErrMessage:='Не могу завершить операцию!'+chr(13)+chr(13)+'Код ошибки: '+
                IntToStr(E.ErrorCode)+chr(13)+
                'Текст ошибки:'+chr(13)+E.Message;
            Fail:=true;
        end;
    end;
    Application.MessageBox(PAnsiChar(ErrMessage),PAnsiChar(Error), MB_OK+MB_ICONERROR);
//    Logger.Error(ErrMessage);
end;
 

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 13:35 04-05-2010
JohnSilver182



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
afiget  нетт .  Вот У  меня для cxLookUpComboDox  
А  что то  типа  для cxGRID ??????????????????????????????????????????
 

Код:
 
procedure TFormChange.cxCB_SRPropertiesEditValueChanged(Sender: TObject);
begin
 
if not varisNull(cxCB_SR.EditValue ) then
begin
  pFibDataset1.append
  бла бла бла  
  try
     pFibDataset1.POST;
  except  
      вывод гугательста  
      pFibDataset1.CanselUpdate;
  end;
   
end;
 
end;
 

Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 13:52 04-05-2010
crazypiggy

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[img]
 
Uploaded with ImageShack.us
[/img] Вот рисунок того что мне нужно. Стрелками указаны ячейки в которые надо загрузить итоги второй вьюшки.

Всего записей: 57 | Зарегистр. 02-10-2008 | Отправлено: 14:48 04-05-2010 | Исправлено: crazypiggy, 14:53 04-05-2010
Man_Without_Face



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

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

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

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

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

Всего записей: 381 | Зарегистр. 25-01-2010 | Отправлено: 15:03 04-05-2010
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JohnSilver182
У меня там пропущено слово, полностью меняющее смысл совета
Я бы не стал проверять данные на этапе ввода (и не важно какой контрол для этого используется). А проверял бы при сохранении.
Я не пользуюсь компонентами доступа к Фаербёрду (Интербейсу), поэтому точного места указать не смогу.
Но смысл приведенного моего кода в том (выше уже писал vladman о централизованной обработке ошибок), что у вас есть код ошибки, который и нужно переводить в понятный пользователю текст.
При возникновении исключения проверяйте этот код. Если в данном локальном контексте исключения такой код не доступен, то спасет только централизованная обработка.
Кроме того, централизованная обработка позволяет написать код обработки ошибки в одном месте для всех случаев, что просто удобно.
 
crazypiggy
Дайте еще скриншот структуры вашего грида.

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 16:16 04-05-2010 | Исправлено: afiget, 16:18 04-05-2010
crazypiggy

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[img]    Uploaded with ImageShack.us[/img]  Вот структура таблицы
 
Добавлено:
JohnSilver182
Посмотрите в примерах к FIBPlus компонентам. Там есть пример (извините за тавтологию) обработки ошибок. Создается чтото вроде репозитария ошибок и с ним происходит работа. Или, как Вам правильно советуют, сделайте централизованную обработку ошибок.
 
Добавлено:

Код:
 
procedure TFormChange.cxCB_SRPropertiesEditValueChanged(Sender: TObject);  
begin  
 
if not varisNull(cxCB_SR.EditValue ) then  
begin  
  pFibDataset1.append  
  бла бла бла  
  try  
     pFibDataset1.POST;  
  except  
      вывод гугательста  
      pFibDataset1.CanselUpdate;  
  end;  
   
end;  
 
end;
 

 
Я делаю так, незнаю может это и неправильно но меня устраивает
Сначала я делаю Post  а уже потом обработку в AfterPost для FIBQuery1. Ведь пост это ещё не сброс данных в базу.

Код:
 
procedure TSprQueue.FIBQuery1AfterPost(DataSet: TDataSet);
begin
 if Application.MessageBox('Сохранить изменения?', 'Сохранения', MB_ICONQUESTION or MB_YESNO)=ID_YES
 then
  try
   FIBQuery1.UpdateTransaction.CommitRetaining;
  except
   Application.MessageBox('Ошибка при сохранении', 'Ошибка', MB_ICONERROR or MB_OK)
  end
  else FIBQuery1.UpdateTransaction.RollbackRetaining;
end;
 
 


Всего записей: 57 | Зарегистр. 02-10-2008 | Отправлено: 17:06 04-05-2010 | Исправлено: crazypiggy, 17:25 04-05-2010
V1s1ter



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

Цитата:
кто нибудь делал экспорт из ExpressPrinting System  не только в pdf интересует doc, rtf, jpg

Еще не делал, но похоже буду делать (ориентировочно в июне), если произойдет сие событие могу поделится сырцами.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 18:07 04-05-2010 | Исправлено: V1s1ter, 18:08 04-05-2010
afiget



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
crazypiggy
Если эта форма используется только для вывода - попробуйте считать итоги в запросе. Так может быть быстрее, чем заставлять считать компьютер пользователя локально уже после получения данных.
 
Если нет,
View.DataController.Summary.FooterSummaryValues[ИндексКонкретного FooterSummaryItem]
вернет значение итога типа Variant.
 
Например, у меня есть универсальная функция для итогов, которая по имени поля возвращает значение итога:

Код:
 
function TBaseDocWithRows.SumAmount(const Parameters: array of variant): Variant;
var
    FieldName: string;
    i: integer;
begin
    Result:=0;
    if Length(Parameters) < 1 then
        FieldName:= 'amount'
    else
        FieldName:= Parameters[0];
    with View1.DataController.Summary do
    begin
        for i := 0 to FooterSummaryItems.Count - 1 do
            if TcxGridDBTableSummaryItem(FooterSummaryItems[I]).Column = View1.GetColumnByFieldName(FieldName) then
            begin
                Result := FooterSummaryValues[I];
                break;
            end;
    end;
end;

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
JohnSilver182
Если я не ошибаюсь, то вы используете в качестве компонентов доступа фибы. Поэтому, посмотрите в сторону TpFibErrorHandler и его обработчика события OnFIBErrorEvent. И опять же, если не ошибаюсь, это не является темой данной ветки.
 
Добавлено:
crazypiggy

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

Да, со скриншотом намного понятнее ваша задача. Оптимальным вариантом решения все же, на мой взгляд,  является использование агрегатных функций и группирующего запроса для "верхнего" грида, если, конечно, ваша СУБД это поддерживает. Также посмотрите в сторону ExpressPivotGrid и его нововведения в v.2 TcxPivotGridDrillDownDataSet. Может эти компоненты помогут более универсально решить ваши задачи с построением всевозможных итогов и группирующих выборок.

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

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

Цитата:
Еще не делал, но похоже буду делать (ориентировочно в июне), если произойдет сие событие могу поделится сырцами.

Буду премного благодарен!

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день.
Подскажите как создать в cxGridDBTableView столбец с кнопками не присваивая столбцу FieldName. Обработчик кнопок OnClick будет зависеть от выделеной строки.

Всего записей: 3 | Зарегистр. 05-05-2010 | Отправлено: 13:30 05-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