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

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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
В главном приложении, Init после LoadLibrary, Free перед FreeLibrary.

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 11:42 19-05-2011
marser

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
X11
В DLL. InitAdminPlugIn - процедура вызова DLL. Но мне кажется, что проблема не в Application.Handle.
 
procedure InitAdminPlugIn(AppHandle: THandle);  stdcall;  
begin  
   Application.Handle := AppHandle;  
  Создание и показ формы
end;  
 
 
 
Добавлено:
X11
Для красоты можно и Application.Icon.Handle (DLL) = Application.Icon.Handle (EXE)

Всего записей: 398 | Зарегистр. 29-03-2007 | Отправлено: 11:50 19-05-2011 | Исправлено: marser, 11:54 19-05-2011
OXDBA

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

Цитата:
В DLL. InitAdminPlugIn - процедура вызова DLL

Да, это процедуры dll, вызываемые в главном приложении.

Цитата:
Но мне кажется, что проблема не в Application.Handle.

Все может быть, в свое время, на какой-то версии я долго не мог победить AV при использовании AlphaControls и DevExpress в dll.

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 12:11 19-05-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В общем у меня теперь проблема уже и без девовских контролов. Так что, я создам тему в другом месте, а не здесь. Потом дам ссылку.
 
Добавлено:
В общем я привёл плагин к исходному состоянию.
Плагин работает нормально, но код создания колонки вызывает AV
 

Код:
procedure TfmApartSearch2.Button1Click(Sender: TObject);
Var
 col: TcxGridDBColumn;
begin
 col := cxGrid1DBTableView1.CreateColumn;
end;

 
Теперь по InitAdminPlugIn
 
Вываливает ошибка при создании формы (не при загрузке DLL):  

Цитата:
System Error.  Code: 1400.
Недопустимый дескриптор окна.

 
 
 
Добавлено:
Да, проблема в GDI+
 
Здесь есть решение:
http://www.devexpress.com/Support/Center/p/B195118.aspx
там внизу пример.
 
Нужно в главном приложении вызывать  
 
var
dxInitializeGDIPlus, dxFinalizeGDIPlus: procedure;
begin
...
...
    dxInitializeGDIPlus := GetProcAddress(iDllHandle, 'dxInitializeGDIPlus');
    if Assigned(dxInitializeGDIPlus) then dxInitializeGDIPlus;
     
....
 
Добавлено:
В событие закрытия формы плагина добавил
dxFinalizeGDIPlus
 

Код:
procedure TfmApartSearch2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  fmApartSearch2 := nil;
  dxFinalizeGDIPlus;
end;
 

 
Форма закрывается и открывается нормально.
 
Колонка создаётся без AV. Наверное можно сказать ,что проблема решена.
 
Добавлено:
Я сделал проще.
Перед созданием формы я вызываю dxInitializeGDIPlus;
а при при закрытии dxFinalizeGDIPlus;
 
в итоге не нужно в главное приложение экспортировать ничего лишнего:
 

Код:
procedure PluginExec(Sender:Tobject);
begin
//PluginExec вызывается из главного приложения при выборе пункта меню
  dxInitializeGDIPlus;
  if Assigned(fmApartSearch) then FreeAndNil(fmApartSearch);
  fmApartSearch := TfmApartSearch.Create(nil);
  fmApartSearch.Show;
end;
 

 
 

Код:
procedure TfmApartSearch.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  dxFinalizeGDIPlus;
  Action := caFree;
  fmApartSearch := nil;
end;
 


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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 12:28 19-05-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Новая проблема.
Создание cxGridDBColumn в DLL вызывает Access violation, если форма создана второй раз.
 
Есть на форме пустой cxGrid (без колонок) и кнопка с кодом создания колонки

Код:
procedure TfmApartSearch2.Button1Click(Sender: TObject);
Var
 col: TcxGridDBColumn;
begin
 col := cxGrid1DBTableView1.CreateColumn;
end;

 
Если форма создана первый раз, то проблем нет и колонка создается.
Но если (не закрывая главное приложение) форма создана второй раз, третий, то код создания колонки вызывает AV.
 
Пробовал даже так.
Открыл форму, закрыл форму. второй раз открыл форму, нажал кнопку - > AV.
 
Что-то опять где-то с GDI+

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 16:09 19-05-2011
OXDBA

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

Цитата:
Создание cxGridDBColumn в DLL вызывает Access violation, если форма создана второй раз.

Не проверял, я создаю форму один раз, при загрузке плагина, затем только Show. Плюс сильно смущает dxFinalizeGDIPlus на каждое закрытие формы.

Всего записей: 426 | Зарегистр. 19-01-2005 | Отправлено: 16:21 19-05-2011
X11



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

Цитата:
Плюс сильно смущает dxFinalizeGDIPlus на каждое закрытие формы.

так перед созданием нужно вызвать  dxInitializeGDIPlus;  
а при закрытии dxFinalizeGDIPlus
 
Добавлено:
Ура. Я сделал ещё проще.
 
 
У главной формы плагина в модуле, в самом конце дописал
 

Код:
initialization
  dxInitializeGDIPlus;
 
finalization
  dxFinalizeGDIPlus;
 

 
Все остальные dxInitializeGDIPlus и  dxFinalizeGDIPlus поубирал из главного приложения и из плагина.

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 16:43 19-05-2011
marser

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

Цитата:
Ура. Я сделал ещё проще.

Вы читать умеете? Этот код я предложил Вам еще в первом ответе на ваш вопрос, а Вы устроили дебаты на целый день на двух форумах.

Всего записей: 398 | Зарегистр. 29-03-2007 | Отправлено: 07:55 20-05-2011 | Исправлено: marser, 10:10 20-05-2011
X11



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

Цитата:
marser, спасибо, но не помогло.  

 
 
Как потом оказалось, то Вы оказались правы, а ошибка у меня возникала по другой причине на тот момент. Я просто в плагине столько всего наворотил пока решал проблему.
 
В итоге пришёл к Вашему решению
Спасибо в любом случае

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 09:54 20-05-2011 | Исправлено: X11, 09:54 20-05-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У грида есть 2 уровня.
На втором уровне есть 4 детальных cxGridDBTableView, которые привязаны к первому мастеру-cxGridDBTableView. Не могу понять, как отловить момент переключения между вкладками 4ёх детальных cxGridDBTableView. Нужно в зависимости от условий разрешать/запрещать перходить на второй cxGridDBTableView.
 
Добавлено:
Вернее нужно так: при переходе на вкладку второго cxGridDBTableView нужно в зависимости от условий открыть или закрыть привязанный набор данных.

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:04 20-05-2011 | Исправлено: X11, 15:06 20-05-2011
dimm78

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

Цитата:
У грида есть 2 уровня.
На втором уровне есть 4 детальных грида, которые привязаны к первому мастер гриду. Не могу понять, как отловить момент переключения между вкладками 4ёх детальных гридов. Нужно в зависимости от условий разрешать/запрещать перходить на второй грид.
 

 
у cxGrid есть для этого событие onActiveTabChanged

Всего записей: 163 | Зарегистр. 07-12-2005 | Отправлено: 15:07 20-05-2011
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
так это для равноценных по уровню cxGridDBTableView?
 
А если они на уровень ниже?

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:19 20-05-2011
dimm78

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

Цитата:
так это для равноценных по уровню cxGridDBTableView?
 
А если они на уровень ниже?

 
это событие срабатывает для всех Level-ов принадлежащих cxGrid-у независимо от уровня

Всего записей: 163 | Зарегистр. 07-12-2005 | Отправлено: 15:23 20-05-2011
X11



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

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:28 20-05-2011
fortezza

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот понадобилось каким-то образом связывать колонки. т.е. чтобы одна имела ссылки на 2 другие например, 2 другие колонки так же содержали ссылки на колонки, таким образом, из любой колонки можно братиться к 2-м другим. А в гриде например 9 колонок, получается 3 группы по 3 колонки раскиданы по разному.
 
Как это реализовывать? переопределять колонку? С какой стороны подходить к решению задачи?
 
Заранее спасибо.

Всего записей: 98 | Зарегистр. 20-10-2009 | Отправлено: 00:18 21-05-2011
vladman

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

Цитата:
У грида есть 2 уровня.
На втором уровне есть 4 детальных cxGridDBTableView, которые привязаны к первому мастеру-cxGridDBTableView. Не могу понять, как отловить момент переключения между вкладками 4ёх детальных cxGridDBTableView. Нужно в зависимости от условий разрешать/запрещать перходить на второй cxGridDBTableView.  

 
Вы как-то возмущались вопросом tatbesidovska о lookUpEdit ответив:

Цитата:
Автор: X11, Отправлено:22:16 27-04-2011
И следовало бы изучить вначале компоненты, их свойства, а потом уже начинать с ними работать. Посмотрите примеры, почитатй в справке общую концепцию, почитайте в рунете статьи по DevExpress. Просто Вы забиваете такими простейшими вопросами форум. А ведь на форум подписано очень много людей. Представьте, сколько это трафика из за Вашей лени.

 
OffTop и немного лирики -  
Так вот, последние две страницы ваших умозаключений и вопросов уж очень сильно подпадают под ваше же возмущение, не правда ли? А как же последовательность?
 
fortezza

Цитата:
Вот понадобилось каким-то образом связывать колонки. т.е. чтобы одна имела ссылки на 2 другие

Чтобы помочь с вашим вопросом, проясните, что вы имели ввиду под терминами "связывать" и "ссылки", а лучше, конечно, давайте какой-то пример, рисунок.

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Убрать отступ текста заголовка (Caption) в VerticalGrid, то есть сдвинуть текст к границе  
 
http://img191.imageshack.us/img191/7163/21285240.gif
 
удалось следующим способом:
 
  в юните:  cxVGrid  
  в методе:  
 
procedure TcxvgPainter.DrawRowHeaderCell(
  ACaptionInfo: TcxRowCaptionInfo; ATransparent: Boolean);
 
 после строки:
 
    R := CaptionTextRect;
 
 добавить:
 
    if not ACaptionInfo.FRow.HasChildren then
      R.Left := R.Left - ViewInfo.Painter.Painter.ExpandButtonSize - 4; // отступ на 3 пикселя
 
Решал задачу разными способами, данный способ наилучший. Парился два дня. Может кому пригодится.

Всего записей: 1 | Зарегистр. 22-05-2011 | Отправлено: 13:10 22-05-2011 | Исправлено: felixon, 13:41 22-05-2011
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
драсте
есть DockPanel и DockSite....так вот эта панель выезжает с тормозами(то есть нет плавности..в общем слайд шоу )..это косяк компонента или я дет галку забыл?
ПС
56 дев

Всего записей: 1298 | Зарегистр. 13-02-2006 | Отправлено: 15:11 23-05-2011
fortezza

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

Цитата:
Вот понадобилось каким-то образом связывать колонки. т.е. чтобы одна имела ссылки на 2 другие например, 2 другие колонки так же содержали ссылки на колонки, таким образом, из любой колонки можно братиться к 2-м другим.

 
сделать что то вроде:

Код:
 
  TcxGridDBMultiColumn = class(TcxGridDBColumn)
  public
    Column1 : TcxGridDBColumn;
    Column2 : TcxGridDBColumn;
  end;
 

 
 
 
Ещё один вопрос ко всем, почему у колонки поле EditValue (Properties поля := TcxLookupComboBox) становится Access violation в событии FocusedRecordChanged при инициализации ввода (т.е. когда захожу в режим редактирования)?

Всего записей: 98 | Зарегистр. 20-10-2009 | Отправлено: 10:02 25-05-2011
wbsg

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fortezza,
 
Судя по всему, Вам нужен общий заголовок для нескольких столбцов. Смотрите в направлении Bands (демо пример: ViewBandedDemo)

Всего записей: 65 | Зарегистр. 08-06-2005 | Отправлено: 10:22 25-05-2011 | Исправлено: wbsg, 10:23 25-05-2011
Открыть новую тему     Написать ответ в эту тему

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