powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TcxPropertiesStore и динамические свойства Properties.EditProperties
25 сообщений из 34, страница 1 из 2
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39698298
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предисловие.
Все, кто пользуется DevExpress, знают, что есть, например, у cxVerticalGrid или у cxGrid колонки, где можно указать разный тип в свойстве EditProperties. Например, можно указать PopupEdit или ComboBox.

Есть процедура сохранения и восстановления свойств указанной компоненты через stream в базу/из базы (BLOB).
Со статичными свойствами проблем нет, а с вышеописанными (EditProperties) - проблема: они просто не восстанавливаются.

В базе вижу, что сохраняется.


Вижу, что достаётся из базы правильное значение, но значение не восстанавливается.
Свойство PopupAutoSize отключено (False).

процедура сохранения:
Код: pascal
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.
//передаём rowType строку вертикальной сетки
// у rowType свойство EditProperties = PopupEdit
StorePropertiesStream(self, rowType, VarArrayOf(['Properties.EditProperties.PopupWidth', 'Properties.EditProperties.PopupHeight']));


procedure StorePropertiesStream(const Form: TForm; const AComponent: TComponent; const AProps: TStrArray);
Var
 i: integer;
 cxPropertiesStore1: TcxPropertiesStore;
 q: TpFibQuery;
 stream: TMemoryStream;
begin
// создем q: TpFibQuery и заполняем SQL


  cxPropertiesStore1 := TcxPropertiesStore.Create(Application);
  stream := TMemoryStream.Create;
  try
    cxPropertiesStore1.StorageName := Form.ClassName;
    cxPropertiesStore1.StorageType := stStream;

    with TcxPropertiesStoreComponent(cxPropertiesStore1.Components.Add) do
    begin
      Component := AComponent;
      for I := 0 to Length(AProps) - 1 do
        Properties.Add(AProps[i]);
    end;//with

     cxPropertiesStore1.StorageStream := Stream;
     cxPropertiesStore1.StoreTo;
...
...
...
q.ExecQuery;



Ошибок во время компиляции и исполнения нет.
Delphi Tokyo.
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39698359
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тип восстанавливается правильно ?
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39698365
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А тип прописан жёстко. Я же его во время design-time указываю.
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39698423
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может где-то нужны какие-то спец. манипуляции с приведением типов (TcxPopupEditProperties)?
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39698431
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процедура восстановления

Код: pascal
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.
procedure RestorePropertiesStream(const Form: TForm; const AComponent: TComponent; const AProps: TStrArray);
Var
 i: integer;
 cxPropertiesStore1: TcxPropertiesStore;
 q: TpFibQuery;
 stream: TMemoryStream;
begin
  // создем q: TpFibQuery и заполняем SQL

  cxPropertiesStore1 := TcxPropertiesStore.Create(Application);
  stream := TMemoryStream.Create;
  try
    cxPropertiesStore1.StorageName := Form.ClassName;
    cxPropertiesStore1.StorageType := stStream;

    with TcxPropertiesStoreComponent(cxPropertiesStore1.Components.Add) do
    begin
      Component := AComponent;
      for I := 0 to Length(AProps) - 1 do
        Properties.Add(AProps[i]);
    end;//with

    try
...
...
      q.ExecQuery;
      q.FieldByName('STREAM').SaveToStream(stream);

      if stream.Size > 0 then
      begin
        stream.Position := 0;
        cxPropertiesStore1.StorageStream := Stream;
        cxPropertiesStore1.RestoreFrom;
      end;
...
...


проверил stream.Size - всегда больше 0
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39698592
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что могу сказать ? F7 тебе в помощь
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701433
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой-то баг, наверное.
Выполняю при создании формы:
Код: pascal
1.
2.
    TcxPopupEditProperties(rowRegion.Properties.EditProperties).PopupWidth := gbRegions.Width;
    TcxPopupEditProperties(rowRegion.Properties.EditProperties).PopupHeight := gbRegions.Height;


Но всё равно popup всплывает того размера, который был задан в design-time

Т.е. я в качестве настроек высоты и ширины храню непосредственно настройки компоненты, которая выступает в качестве визуального элемента, в данном случае cxGroupBox.
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701453
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если в OnInitPopup ?
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701457
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё равно всплывает установленный во время дизайна размер :(
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701472
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Properties.PopupAutoSize
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701490
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я об этом написал в самом начале

X11Свойство PopupAutoSize отключено (False).
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701501
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701509
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr, когда открыл попап, поменял размер и закрыл, то если его открыть снова - проблемы нет.
Проблема именно после создания формы и самого попапа.
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701515
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Картинку видишь ? ни строчки кода
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701539
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вижу, и что? не понял вопроса
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701570
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr, в том-то и дело.
Ты программно присвой высоту и ширину, т.е. не в дизайне.
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701585
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701589
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При чем здесь cxPopupEdit? Речь о cxVerticalGrid с соответствующей строкой.
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701598
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

У гридов не сохраняются настройки полей/колонок типа формата -- только те, что визуально видны и доступны пользователю для изменений, поэтому надо через кастомные свойства делать. Вот тут техподдержка подсказывает как:
https://www.devexpress.com/Support/Center/Question/Details/T300811/the-storetostream-method-does-not-save-column-s-format-properties

авторThis behavior is described in the "TcxCustomGridView.StoreToStream" help topic:
"... include only those settings that can be adjusted by end-users: the position, size, and visibility within a View, sort order, etc."

In other words, if you customize some additional settings in code, you need to store their values manually. You can use the following column events to store custom properties:

OnGetStoredProperties;
OnGetStoredPropertyValue;
OnSetStoredPropertyValue.
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701609
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не сохраняю настройки cxVerticalGrid`а.
Мне нужно сохранить и восстановить ширину и высоту выпадающего окна, которое встроено в EditProperties строки.
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701613
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

EditProperties пересоздаются каждый раз по новой при начале редактирования или отрисовки... Их вообще никак нельзя менять "через строку", есть спец события, когда это можно делать.
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701615
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi,

Точнее, пересоздаются контролы на основе этих настроек, поэтому их нельзя прямым доступом менять.
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701629
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701639
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

OnGetProperties (или как-то так у колонки) -- вот там и можно менять на нужные настройки... Либо сделать несколько готовых, либо генерировать список этих пропертией в отдельный список перед загрузкой данных и из него назначать уже на событии (будет нормально работать, если записей немного).
...
Рейтинг: 0 / 0
TcxPropertiesStore и динамические свойства Properties.EditProperties
    #39701759
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё равно не понимаю, ЧЯДНТ
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TcxPropertiesStore и динамические свойства Properties.EditProperties
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]