Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TcxPropertiesStore и динамические свойства Properties.EditProperties / 25 сообщений из 34, страница 1 из 2
05.09.2018, 11:37
    #39698298
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
Предисловие.
Все, кто пользуется 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
05.09.2018, 12:21
    #39698359
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
А тип восстанавливается правильно ?
...
Рейтинг: 0 / 0
05.09.2018, 12:27
    #39698365
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
А тип прописан жёстко. Я же его во время design-time указываю.
...
Рейтинг: 0 / 0
05.09.2018, 13:20
    #39698423
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
Может где-то нужны какие-то спец. манипуляции с приведением типов (TcxPopupEditProperties)?
...
Рейтинг: 0 / 0
05.09.2018, 13:25
    #39698431
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
Процедура восстановления

Код: 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
05.09.2018, 15:50
    #39698592
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
Что могу сказать ? F7 тебе в помощь
...
Рейтинг: 0 / 0
12.09.2018, 13:23
    #39701433
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
Какой-то баг, наверное.
Выполняю при создании формы:
Код: pascal
1.
2.
    TcxPopupEditProperties(rowRegion.Properties.EditProperties).PopupWidth := gbRegions.Width;
    TcxPopupEditProperties(rowRegion.Properties.EditProperties).PopupHeight := gbRegions.Height;


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

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

X11Свойство PopupAutoSize отключено (False).
...
Рейтинг: 0 / 0
12.09.2018, 14:43
    #39701501
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
...
Рейтинг: 0 / 0
12.09.2018, 14:47
    #39701509
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
DimaBr, когда открыл попап, поменял размер и закрыл, то если его открыть снова - проблемы нет.
Проблема именно после создания формы и самого попапа.
...
Рейтинг: 0 / 0
12.09.2018, 14:49
    #39701515
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
Картинку видишь ? ни строчки кода
...
Рейтинг: 0 / 0
12.09.2018, 15:18
    #39701539
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
вижу, и что? не понял вопроса
...
Рейтинг: 0 / 0
12.09.2018, 15:49
    #39701570
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
DimaBr, в том-то и дело.
Ты программно присвой высоту и ширину, т.е. не в дизайне.
...
Рейтинг: 0 / 0
12.09.2018, 16:02
    #39701585
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
...
Рейтинг: 0 / 0
12.09.2018, 16:05
    #39701589
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
При чем здесь cxPopupEdit? Речь о cxVerticalGrid с соответствующей строкой.
...
Рейтинг: 0 / 0
12.09.2018, 16:10
    #39701598
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
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
12.09.2018, 16:17
    #39701609
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
Я не сохраняю настройки cxVerticalGrid`а.
Мне нужно сохранить и восстановить ширину и высоту выпадающего окна, которое встроено в EditProperties строки.
...
Рейтинг: 0 / 0
12.09.2018, 16:19
    #39701613
JayDi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TcxPropertiesStore и динамические свойства Properties.EditProperties
X11,

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

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

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


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