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

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

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
devexpress будет поддерживать vclx в delphi 2011? на оффсайте не нашел

Всего записей: 385 | Зарегистр. 07-06-2007 | Отправлено: 10:33 02-08-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня cxVerticalGrid, в которой есть строка типа TcxButtonEdit с одной кнопкой. Пользователь вводит номер телефона и по мере ввода я должен программно проверять вводимые символы.
В TEdit у меня сделано так:

Код:
procedure TfmAddPhone.edPhoneKeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9', #8]) then
    begin
      key := #0;
      MessageBox(Application.ActiveFormHandle, 'В номере телефона допускаются только цифры.', 'Ошибка', MB_OK+MB_ICONERROR);
    end;//if
end;
 

 
Подскажите, на какое событие лучше повесить подобный код и что использовать вместо key?
Спасибо.

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

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

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

Цитата:
Подскажите, на какое событие лучше повесить подобный код и что использовать вместо key?  

На событие TcxCustomEditProperties.OnChange. И проверять значение TcxCustomEdit.Text (скорее даже его последнего символа) на ваше условие.
Но я бы не раздражал пользователя ненужными MessageBoxсами с ошибками, а вообще не давал бы вводить недопустимые символы посредством установки соответствующих значений в свойствах Properties.EditMask и Properties.MaskKind вашего TcxButtonEdit.

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



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

Цитата:
Но я бы не раздражал пользователя ненужными MessageBoxсами с ошибками, а вообще не давал бы вводить недопустимые символы посредством установки соответствующих значений в свойствах Properties.EditMask и Properties.MaskKind вашего TcxButtonEdit.

+1
А для "настойчивых" пользователей можно показать всплывающую подсказку с правилами ввода. Она не забирает на себя фокус и позволяет получить ответ на вопрос: что происходит и почему вводимые символы не отображаются.

Всего записей: 545 | Зарегистр. 31-12-2005 | Отправлено: 12:33 03-08-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто-нибудь использует ini файл перевода?
Установил 51 версию. Там файл перевода какой-то не такой.

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 14:00 03-08-2010
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите бестолковому.
C некоторых пор в пакетах Девок появились файлы *RS*.dpk, например есть cxBarEditItemD11.dpk и есть cxBarEditItemRS11.dpk.
Для какой цели они (*RS*.dpk) были созданы?

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 22:26 03-08-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как лучше и правильнее сделать?
 
Мне нужно узнать активный компонент. Это может быть cxGrid, DBGridEh или др. грид.
После того, как я узнаю, я выполняю импорт в датасет, привязанный к этому компоненту.
 
Проблема с cxGrid`ом.
 
Щёлкаю по строке грида, т.к. включено свойство ImmediateEditor, то я сразу попадаю как бы в редактор.
Поэтому
 
 ShowMessage(ActiveControl.ClassName);
выдаёт мне TcxCustomInnerTextEdit
 
Теперь, собственно, вопрос! Как узнать, к какому cxGrid`у или к какому cxGridTableView относится этот самый cxCustomInnerTextEdit?
 
ShowMessage(ActiveControl.Parent.ClassName); выдаёт TcxMaskEdit
 
Если выполнить TcxCustomInnerTextEdit(ActiveControl).Hide;
то этот код
ShowMessage(ActiveControl.ClassName);
потом даёт AV, т.к. получается, что никакой компонент на форме не активен.
 
Добавлено:
Правильным ли будет такой код
ActiveControl.Parent.Parent.ClassName
или есть более гибкие и правильные решения?
 
Добавлено:
Пока что сделал так. Если есть решение получше, буду весьма благодарен.
 

Код:
  if ((ActiveControl is TDBGridEh) or (ActiveControl is TFibExTreeView) or (ActiveControl is TcxGridSite) or (ActiveControl is TcxCustomInnerTextEdit)) then
    begin
      if (ActiveControl is TDBGridEh)  then
        begin
          if ImportSpr(TDBGridEh(ActiveControl).DataSource.DataSet) then ShowMessage('Готово');
          TDBGridEh(ActiveControl).DataSource.DataSet.Open;
        end;
 
      if (ActiveControl is TcxCustomInnerTextEdit) then
        begin
          if ImportSpr(TcxGridDBTableView(TcxGridSite(ActiveControl.parent.parent).gridview).DataController.datasource.dataset) then ShowMessage('Готово');
          TcxGridDBTableView(TcxGridSite(ActiveControl.parent.parent).gridview).DataController.datasource.dataset.Open;
        end;
 
      if (ActiveControl is TcxGridSite)  then
        begin
          if ImportSpr(TcxGridDBTableView(TcxGridSite(ActiveControl).gridview).DataController.datasource.dataset) then ShowMessage('Готово');
          TcxGridDBTableView(TcxGridSite(ActiveControl).gridview).DataController.datasource.dataset.Open;
        end;
 
 
      if (ActiveControl is TFibExTreeView) then
        ImportTree( TFibExTreeView(ActiveControl) );
 


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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 15:19 04-08-2010
vladman

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

Цитата:
Подскажите, как лучше и правильнее сделать?
 Мне нужно узнать активный компонент. Проблема с cxGrid`ом.

Попробуйте так #

Всего записей: 708 | Зарегистр. 13-11-2002 | Отправлено: 15:28 04-08-2010 | Исправлено: vladman, 15:29 04-08-2010
mdid

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите такую штуку..вопрос вроде и не сложный но возможно мелочи не вижу...или включилось вечернее торможение
в общем есть Ribbon..положил я на него cxBarEditItem c пропертсом  ButtonEdit...когда я что то пишу в edit'е этого компонента а потом меняю фокус то все пропадает...соответственно что и cxBarEditItem.EditValue возвращает null...как побороть?

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



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vladman, спасибо.
 
 
Вопрос по раскраске грида. Разноцветный cxGrid.
Как мне указать цвет текста в конкретной колонке по определённым условиям?
 

Код:
 
procedure TfmArendaSearch.dbgArendaCustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
   inherited;
 
   if ShowClientsInCalcField then
     if not VarIsNull(AViewInfo.GridRecord.Values[dbgArendaMediator_ID_TYPE.Index]) then
 
       ACanvas.Canvas.Font.Color := GetColorByTypeId(AViewInfo.GridRecord.Values[dbgArendaMediator_ID_TYPE.Index]);
 
   ADone := true;
end;
 

 
у меня получается вся сетка без текста

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 17:54 04-08-2010
yurikorz

Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вроде бы надо  
ADone := False;

Всего записей: 12 | Зарегистр. 17-03-2010 | Отправлено: 17:59 04-08-2010
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ADone - означает что ты все сам отрисовываешь, т.е. код DevExpress больше не нужен.

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 18:07 04-08-2010
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurikorz, salexn1, да, точно, спасибо.
 
 
Вопрос по cxGrid и по проблеме при добавлении новых колонок.
Ситуация такая.
Пользователь получает программу и работает с ней какое-то время. Программа сохраняет и восстанавливает настройки грида стандартными процедурами типа StoreToIniFile и RestoreFromIniFile.  
Потом просит добавить какой-то функционал.
Программист добавляет, но при этом приходится в cxGrid добавить одну или несколько колонок, которые пользователь видеть не должен, а поэтому свойства Visible и VisibleForCustomization имеют значение False.  
Пользователь запускает новую версию программы и видит, что в гриде видны какие-то непонятные ненужные служебные колонки. Хотя они видны не должны быть, ведь свойства "видимости" отключены.
Этот баг уже давно. Сейчас установлена версия 51.
Т.е. пока не удалишь ini-файл настроек таблицы, эти служебные колонки не исчезают. А удалять не хочется, т.к. пользователю потом нужно опять настраивать для себя грид.
 
Что посоветуете, а Великий и мудрый All?

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 11:52 05-08-2010 | Исправлено: X11, 11:55 05-08-2010
BlackVetal



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
X11
Завести еще один файл с настройками - которык будут приоритетными перед пользовательскими, или прям где-то в программе указать в жесткую. А еще лучше - этот вопрос решать правами доступа (у меня в проекте и еолонки лочутся, и вкладки прячуться в зависемости от прав доступа)
Еще вариант - если при запуске программу нажать и удерживать кнопку (например, Shift) - то показывать слуебные колонки

Всего записей: 1094 | Зарегистр. 13-11-2005 | Отправлено: 12:31 05-08-2010 | Исправлено: BlackVetal, 12:33 05-08-2010
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
или написать свой загрузчик. как правило то нужны буквально 5 настроек...

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 12:38 05-08-2010
X11



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

Цитата:
Еще вариант - если при запуске программу нажать и удерживать кнопку (например, Shift) - то показывать слуебные колонки

Тоже вариант. Подумаем

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

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

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

Цитата:
Скорее всего, что я погорячился, написав это сообщение. Наверное в последних версиях это исправили.  

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

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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть TcxGrid, у него View. Задача сохранить и восстановить фильтр . Вопрос - как это сделать?
 
Вот так:
Код:
 
type
  TcxFilterCriteriaAccess = class(TcxFilterCriteria);
...
TcxFilterCriteriaAccess(GridView.DataController.Filter).ReadData(Stream);

или так:
Код:
 
GridView.DataController.Filter.LoadFromStream(Stream);

не работает
 

Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 19:12 05-08-2010
yurikorz

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

Код:
var  
  AFilterControl: TcxFilterControl;
  AStream: TStream;
.....
  AStream:=TMemoryStream.Create;
  AFilterControl := TcxFilterControl.Create(Self);
  AFilterControl.LinkComponent := GridDBTableView1;
  AFilterControl.SaveToStream(AStream);
  AFilterControl.Free;
 

Восстановление:

Код:
    AFilterControl.LoadFromStream(AStream);
 

Всего записей: 12 | Зарегистр. 17-03-2010 | Отправлено: 19:19 05-08-2010
Chukotka

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yurikorz
Да, и я этот пример нашел на форуме DevExpress - тот же эффект. Независимо от состояния фильтра при сохранении создается файл размером 9 байт, и все.
Может, в настройках GridView что-то не установлено?

Всего записей: 428 | Зарегистр. 01-11-2006 | Отправлено: 19:57 05-08-2010 | Исправлено: Chukotka, 20:45 05-08-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