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

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LadyOfWood и другим откликнувшимся
 
Разобрался. Неверно был размещен код обнуления записей ДатаКонтроллера при каждом новом запуске расчета (я оставил его в порождаемом потоке, а надо было загнать его в основной, где и происходит основная обработка). Я не сразу обратил внимание на то, что отрисовка виснет со второго или очередного запуска, но никогда с первого.
Сейчас все вроде стабилизировалось. Спасибо за обсуждение.

Всего записей: 113 | Зарегистр. 22-03-2006 | Отправлено: 10:47 26-02-2012
vcrank

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cxGrid
Одной из колонок в свойстве Properties указал ShellComboBox
Root - BrowseFolder указал bfCustomPath
Если в режиме проектирования заполнить свойство CustomPath, то всё работает как надо - выпадает список файлов из указанной папки.
Если пытаюсь указать путь при старте программы, то это не срабатывает
TcxShellComboBoxRoot(cxGridDBTableView2DPath).CustomPath := ExtractFileDir(ParamStr(0));
 
Подскажите, куда копать

Всего записей: 1067 | Зарегистр. 24-10-2005 | Отправлено: 10:55 26-02-2012
sam291074



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vcrank
Начни смотреть с ExtractFileDir(ParamStr(0))
 
Вот этот работает (Builder C++)

Код:
UnicodeString P = "C:\\Temp\\";
((TcxShellComboBoxProperties*)(cxGrid1DBTableView1Column1->Properties))->Root->CustomPath = P;

 
Но например P = ExtractFileDir(ParamStr(0)) выдает путь, содержащий где-то в середине "." (в компиляторе так прописаны относительные пути, возможно и содержание в пути ".."), и возникает эксепшен. Так часто обозначаются верхние и корневые директории. Может в этом проблема?
 
P.S.
Еще раз проверил, ошибка только из отладчика. Из системы запускается нормально и показывает ту папку, в которой exe-файл!
Остается грешить на преобразование типов в твоем коде. К сожалению в Delphi не силен, подсказать, верен ли твой способ приведения типов не могу.

Всего записей: 113 | Зарегистр. 22-03-2006 | Отправлено: 11:35 26-02-2012 | Исправлено: sam291074, 11:43 26-02-2012
vcrank

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

Код:
var
  s: WideString;
begin
  s := ExtractFileDir(ParamStr(0));
  TcxShellComboBoxRoot(cxGridDBTableView2DPath).CustomPath := s;
end;

или

Код:
TcxShellComboBoxRoot(cxGridDBTableView2DPath).CustomPath := 'd:\UserData\';

не срабатывают
ExtractFileDir не содержит никаких точек или пробелов
 
Добавлено:
Ерунда какая-то...
  TcxShellComboBoxRoot(cxGridDBTableView2DPath).CustomPath:=ExtractFileDir(ParamStr(0)); // не работает
  cxShellComboBox1.Properties.Root.CustomPath:=ExtractFileDir(ParamStr(0)); // работает

Всего записей: 1067 | Зарегистр. 24-10-2005 | Отправлено: 11:44 26-02-2012
sam291074



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

Цитата:
Ерунда какая-то...  
   TcxShellComboBoxRoot(cxGridDBTableView2DPath).CustomPath:=ExtractFileDir(ParamStr(0)); // не работает  
   cxShellComboBox1.Properties.Root.CustomPath:=ExtractFileDir(ParamStr(0)); // работает

 
Слушай, ну 99,9% преобразование типов.
Дело в том, что в таблице и в отдельном компоненте обращение по разному идет. Надо Properties колонки привести к нужному Properties и танцевать дальше.
 
(TcxShellComboBoxProperties(cxGridDBTableView2DPath.Properties)).Root.CustomPath := MyPath
 
Может так? cxGridDBTableView2DPath - это ведь имя колонки в таблице?

Всего записей: 113 | Зарегистр. 22-03-2006 | Отправлено: 12:18 26-02-2012
vcrank

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

Цитата:
 Надо Properties колонки привести к нужному Properties и танцевать дальше.

Если я правильно помнимаю, то тип WideString
   
И так вариант я уже пробовал:  

Код:
var
  s: WideString;
begin
  s := ExtractFileDir(ParamStr(0));
  TcxShellComboBoxRoot(cxGridDBTableView2DPath).CustomPath := s;
end;  

(TcxShellComboBoxProperties(cxGridDBTableView2DPath.Properties)).Root.CustomPath // тоже не работает

Цитата:
Слушай, ну 99,9% преобразование типов.

Смотри, если бы было неверное преобразование типов, то скорее всего я получил бы эксепшен. Так?
Я его не получаю. Более того

Код:
ShowMessage(TcxShellComboBoxProperties(cxGridDBTableView2DPath.Properties).Root.CustomPath);

Возвращает записанный мною путь... т.е. путь нормально хранится в указанном свойстве, но по какой-то причине не используется
 
Добавлено:

Цитата:
 cxGridDBTableView2DPath - это ведь имя колонки в таблице?  

Да

Всего записей: 1067 | Зарегистр. 24-10-2005 | Отправлено: 12:31 26-02-2012 | Исправлено: vcrank, 12:34 26-02-2012
sam291074



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vcrank
 
Вот так работает, только что по анологии с С++ написал и проверил
 

Код:
procedure TForm1.FormShow(Sender: TObject);
begin
     cxGrid1DBTableView1.DataController.RecordCount := cxGrid1DBTableView1.DataController.RecordCount +1;
     (TcxShellComboBoxProperties(cxGrid1DBTableView1Column1.Properties)).Root.CustomPath := 'C:\Temp';
end;
 
end.

 
Все имена сгенерированы автоматически, ничего на свои не правил.
Этот вариант не устраивает?
 
И так тоже работает  

Код:
(TcxShellComboBoxProperties(cxGrid1DBTableView1Column1.Properties)).Root.CustomPath := ExtractFileDir(ParamStr(0));

Всего записей: 113 | Зарегистр. 22-03-2006 | Отправлено: 12:36 26-02-2012 | Исправлено: sam291074, 12:44 26-02-2012
vcrank

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sam291074
Да, такой вариант сработал, но для таблицы 1 уровня... забавно... сейчас накидаю пример для Delphi 7

Всего записей: 1067 | Зарегистр. 24-10-2005 | Отправлено: 12:53 26-02-2012
sam291074



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

Цитата:
Да, такой вариант сработал, но для таблицы 1 уровня... забавно...

Да ничего забавного нет. Свойства должны быть преобразованы к Свойствам. Это концепция таблицы от девок. Ячейка - это контейнер имеющий определенные Свойства. Хочешь работать с ее свойствами - сделай приведение к свойствам соответствующего типа (именно к свойствам, а не к компоненту, чьими свойствами ты пользуешься). Кстати, эксепшен может и не генерироваться при неверном приведении, так как это зависит, по-моему, от размеров памяти, занимаемых объектами при приведении. Например, если ячейка занимает как объект больше памяти, чем объект к которому она приводится, то исключения не должно возникать, но то что считывается не соответствует твоему желанию. Несколько путанно, но как-то так.
 
Исходя из этого преобразование к TcxShellComboBoxRoot не катит  

Всего записей: 113 | Зарегистр. 22-03-2006 | Отправлено: 13:04 26-02-2012
LadyOfWood

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

Цитата:
Да ничего забавного нет. Свойства должны быть преобразованы к Свойствам. Это концепция таблицы от девок. Ячейка - это контейнер имеющий определенные Свойства.  

Там все интереснее, для ячейки хранятся только свойтва, компонента редактирования вообще нет, он создается при редактировании из свойств. Поэтому кастовать только к TcxShellComboBoxProperties.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 13:12 26-02-2012
vcrank

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://rghost.ru/36715677
Заметил такую особенность:
- запускаем программу. дочерняя таблица свёрнута
- жмём кнопку
- теперь в таблице 1 и 2 при клике на ячейку Путь появляется путь к папке с программой
- закрываем программу
 
- снова запускаем
- разворачиваем дочернюю таблицу
- жмём кнопку Путь
- Путь в таблице 1 уровня становится равным папке с программой
- Путь в таблице 2 уровня = Рабочий стол

Всего записей: 1067 | Зарегистр. 24-10-2005 | Отправлено: 13:19 26-02-2012
LadyOfWood

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vcrank
Тут проблема не с запусками, а с тем что у cxGrid определенная логика, она по свойствам создает контрол для редактирования поля грида, очевидно что есть кэш контролов, так вот вы изменяете свойтва, но не контрола, если он уже был создан. Очевидно что новые свойства к нему не применяются.

Всего записей: 620 | Зарегистр. 16-09-2003 | Отправлено: 16:13 26-02-2012
X11



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У кого-нибудь получалось сохранять свойства типа TStrings с помощью TcxPropertiesStore без лишних телодвижений?

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

Всего записей: 3253 | Зарегистр. 24-11-2005 | Отправлено: 11:49 27-02-2012
XeoNu905097

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
и все-таки, как решить вопрос ???
ответ кто-то может подсказать, плиз ...
что должно быть вместо <X>, см. выражение ниже:
TcxPopupEdit(cxGrid4DBTableView1Col1.<X>).DroppedDown:=True;
 
начало:
http://forum.ru-board.com/topic.cgi?forum=33&topic=2214&start=1340
 
afiget
 
Вот сообщение, с которого началась дискуссия:

Цитата:
Прошу прощения, если уже было. Вопрос: Properties колонки таблицы установлено в PopupEdit. Как можно его (PopupEdit) программно развернуть или, наоборот, свернуть? Спасибо.

 
Речь шла о свойстве Properties колонки, а не об отдельно стоящем на форме контроле TcxPopupEdit.
 
И вот, что ты написал:

Цитата:
 Или вот так:
TcxComboBox(ИмяКолонкиВГриде.Properties).DroppedDown:=True;

 
Сделал явное преобразование Properties, что является наследником класса TcxCustomEditProperties, к TcxComboBox, который наследник TcxCustomPopupEdit. Это все равно, что объект типа TGraphic, преобразовать к объекту типа TWinControl. Вот тебе и "ЗЫ".

Всего записей: 27 | Зарегистр. 05-08-2008 | Отправлено: 12:49 27-02-2012 | Исправлено: XeoNu905097, 12:50 27-02-2012
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XeoNu905097
TcxPopupEditProperties(ИмяКолонкиВГриде.Properties).НужноеСвойство :=
 

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 13:51 27-02-2012
XeoNu905097

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

Цитата:
salexn1

TcxPopupEditProperties(cxGrid4DBTableView1Col1.Properties).DroppedDown:=True;
[DCC Error] Unit1.pas(243): E2003 Undeclared identifier: 'DroppedDown'

Всего записей: 27 | Зарегистр. 05-08-2008 | Отправлено: 14:10 27-02-2012
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XeoNu905097
 
Я вообще-то не писал нигде о DroppedDown...
В случае с PopupEdit все может быть сложнее.
Судя по их коду, через Properties вы не сможете открыть\закрыть Popup окно.
Нужно стучаться к контролу, который создается для редактирования.
Но тут проблема в том, что данный контрол может быть еще и не создан...
Под рукой нет Delphi... Вечерком гляну, как можно это сделать.

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 14:37 27-02-2012
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XeoNu905097
По-ходу там все пИчально...  
Если только как-то не эмулировать нажати мышой.

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 11:08 28-02-2012
andreybear

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XeoNu905097
Если правильно понял, то можно сделать так:

Код:
  View.Site.SetFocus;
  View.ViewData.Records[0].Focused := true;
  View.Controller.EditingController.ShowEdit(View.Items[0]);
  TcxPopupEdit(View.Controller.EditingController.Edit).DroppedDown := true;

Всего записей: 132 | Зарегистр. 21-07-2011 | Отправлено: 07:16 29-02-2012
delover

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
andreybear
Жуть в полоску, это так же как и в GridEh - все контролы редактирования создаются только при обращении к свойству EditingController? Например в EhLib-e эти компоненты редакторы интерфейсы по сути. Да и в VirtualTreeView пропатченом так же было.

Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 07:57 29-02-2012
Открыть новую тему     Написать ответ в эту тему

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