Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Есть форма, которую пользователь может вызвать несколько раз. Т.е. форма редактирования каких-нибудь данных - вызвать на редактирование 2-3 записи из БД.
Т.е. создаётся несколько одинаковых форм одно и то же типа. Тип один и тот же, а имена разные: "fmEditFom", "fmEditFom_1" и т.д.
На форме есть dxLayoutControl.
Первый экземпляр создаётся без ошибок.
Второй уже вызывает исключение:
exception
Project raised exception class EClassNotFound with message 'Class TdxLayoutControlContainer not found'.



Код восстановления настроек:
procedure TfmEditFom.FormCreate(Sender: TObject);
begin
...
...
...
    RestoreLayoutControl(dxLayoutControl1);
...

end;



//процедура RestoreLayoutControl живёт в отдельном модуле
procedure RestoreLayoutControl(LayoutControl: TdxLayoutControl);
begin
  try
    LayoutControl.BeginUpdate;

    if RegistryKeyExists(sRegStorKeyLAC + LayoutControl.Owner.ClassName + '_' + LayoutControl.Name) then
      LayoutControl.Container.RestoreFromRegistry(sRegStorKeyLAC + LayoutControl.Owner.ClassName + '_' + LayoutControl.Name);

  finally
    LayoutControl.EndUpdate;
  end;
end;


И для первого, и для второго экземпляров форм строка в реестре выглядит совершенно одинаково, но, думаю, что не в ней дело.
А дело в "LayoutControl.Container."

Или RestoreLayoutControl нужно сделать процедурой класса в модуле формы?
9 ноя 16, 17:20    [19876060]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
закомментировал "RestoreLayoutControl(dxLayoutControl1);" в процедуре создания формы и ошибка исчезла

так как же в моём случае правильно восстанавливать?
9 ноя 16, 17:23    [19876076]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
А кто тебе разрешал методы контейнера дергать? У тебя контрол - вот и юзай, для начала, его методы...
9 ноя 16, 19:30    [19876637]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Но у TdxLayoutControl нет RestoreFromRegistry()
Или я не понял тебя?
10 ноя 16, 11:16    [19878261]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
вот так правильно?
      LayoutControl.OptionsStoring.RegistryPath := sRegStorKeyLAC + LayoutControl.Owner.ClassName + '_' + LayoutControl.Name;
      LayoutControl.Restore;
10 ноя 16, 11:17    [19878268]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Та же ошибка на строке
LayoutControl.Restore;
10 ноя 16, 11:23    [19878309]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11,

Я точно не помню, т.к. года три назад это сделал и до сих пор использую в неизменном виде запись лайоута в стрим .
Container.StoreToStream/Container.RestoreFromStream
Но кажется проблема решилась через параметр aSaveName/aRestoreName.
Нужно задать строковой константой этот параметр при сохранении и восстановлении.
10 ноя 16, 12:03    [19878531]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
LayoutControl.LoadFromRegistry()


также выдает то же самое исключение
10 ноя 16, 12:19    [19878613]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11,
сохраниться-то перед восстановлением удалось с параметром?
10 ноя 16, 13:42    [19879065]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Я Вас не понял, извините.
10 ноя 16, 13:52    [19879127]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Вы, наверное, не поняли мою проблему.
10 ноя 16, 13:53    [19879132]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11
Я Вас не понял, извините.

Удалось ли вызвать
LayoutControl.Container.StoreToRegistry(....., cMyLyoutSaveName);
Перед восстановлением
LayoutControl.Container.ReStoreFromRegistry(....., cMyLyoutSaveName);
10 ноя 16, 14:05    [19879201]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11
Вы, наверное, не поняли мою проблему.

Да как же тебя понять, коли ты ничего не говоришь? (c)
10 ноя 16, 14:07    [19879221]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
LayoutSaver, так Container сказали же не трогать
10 ноя 16, 14:37    [19879383]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
если сделать так:
LayoutControl.Container.StoreToRegistry();
LayoutControl.Container.ReStoreFromRegistry();


т.е. вызвать LayoutControl.Container.StoreToRegistry(); предварительно, то ошибки НЕ возникает
10 ноя 16, 14:41    [19879418]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11
LayoutControl.Container.StoreToRegistry();
LayoutControl.Container.ReStoreFromRegistry();
т.е. вызвать LayoutControl.Container.StoreToRegistry(); предварительно, то ошибки НЕ возникает

"Предварительно", т.е. непосредственно перед "ReStore"? Зачем вообще тогда "ReStore" делать?
10 ноя 16, 14:59    [19879536]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
как зачем?
а как ВОССТАНОВИТЬ
10 ноя 16, 15:13    [19879628]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11,
ты читаешь внимательно? Значение слова "непосредственно" понятно?
автор
"Предварительно", т.е. непосредственно перед "ReStore"? Зачем вообще тогда "ReStore" делать?
10 ноя 16, 15:26    [19879726]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Значение слова - понятно. Тебя - непонятно.
Ты знаешь способ восстановить настройки LayoutControl? Дай пример.
10 ноя 16, 15:34    [19879778]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3651
Документация? Не, не слышали.

К сообщению приложен файл. Размер - 26Kb
10 ноя 16, 15:40    [19879821]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
Egoр
Member

Откуда:
Сообщений: 817
X11,

Пример не дам, т.к. слишком много в нем лишнего.
Но у меня устроено так. Думаю, что с registry тоже прокатит.
const
  cLayoutSaveName : String = 'SpecialSavedLayout';

//Процедура сохранения окошка
procedure TMyForm.saveToStream();
begin
....
    LayoutControl.Container.StoreToStream(aStream, cLayoutSaveName);
....
end;
//Процедура восстановления окошка
procedure TMyForm.loadFromStream();
begin
....
    LayoutControl.Container.RestoreFromStream(aStream, cLayoutSaveName);
....
end;
10 ноя 16, 15:50    [19879872]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
Короче пример давай. Или в саппорт или сюда. А то так долго телепатировать можно...
10 ноя 16, 15:50    [19879877]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
JaDi
Документация? Не, не слышали.


при вызове Restore то же ошибка
10 ноя 16, 15:52    [19879887]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
white_nigger
Короче пример давай. Или в саппорт или сюда. А то так долго телепатировать можно...


http://files.d-lan.dp.ua/download?file=0398c46b481914d5826fa572a9422f12#uploader

Сделайте так:
Запустите программу и нажмите кнопку, затем закройте окно, чтобы данные о LayoutControl записались в реестр при закрытии окна.

А теперь нажмите кнопку, чтобы создать и открыть первый экземпляр окна, а затем ещё раз, чтобы - второй экземпляр.

Если не получится, то закройте программу, затем откройте программу и нажмите кнопку дважды.
10 ноя 16, 16:09    [19879978]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11,
rar не открывается
10 ноя 16, 16:16    [19880017]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Use winrar 5, Luke
10 ноя 16, 16:21    [19880040]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
завтра гляну - как время найду
10 ноя 16, 17:32    [19880304]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11,
У меня с отмеченными изменениями работает
+

const
  sRegStorKeyLAC = '\Software\_MyNode\LAC\';// dxLayoutControl
  sRegStorKeySaveName = 'SaveName';// dxLayoutControl


procedure StoreLayoutControl(LayoutControl: TdxLayoutControl);
procedure RestoreLayoutControl(LayoutControl: TdxLayoutControl);
function RegistryKeyExists(const Key: string): boolean;

implementation

uses
  Registry, SysUtils;


procedure RestoreLayoutControl(LayoutControl: TdxLayoutControl);
begin
  try
    LayoutControl.BeginUpdate;

    if RegistryKeyExists(sRegStorKeyLAC + LayoutControl.Owner.ClassName +'_' + LayoutControl.Name) then
    begin
// LayoutControl.OptionsStoring.RegistryPath := sRegStorKeyLAC +LayoutControl.Owner.ClassName + '_' + LayoutControl.Name;
// LayoutControl.Restore;
      LayoutControl.Container.RestoreFromRegistry(sRegStorKeyLAC + LayoutControl.Owner.ClassName + '_' + LayoutControl.Name,sRegStorKeySaveName);
    end;

  finally
    LayoutControl.EndUpdate;
  end;
end;


procedure StoreLayoutControl(LayoutControl: TdxLayoutControl);
begin
      LayoutControl.Container.StoreToRegistry(sRegStorKeyLAC +LayoutControl.Owner.ClassName + '_' +LayoutControl.Name,True,sRegStorKeySaveName);
// LayoutControl.OptionsStoring.RegistryPath := sRegStorKeyLAC +LayoutControl.Owner.ClassName + '_' + LayoutControl.Name;
// LayoutControl.Store;
end;
11 ноя 16, 09:50    [19881738]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Так написали же Вам, что использовать Container - не комильфо.
11 ноя 16, 10:19    [19881830]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11,

Ну, кому-то, может, и не комильфо, а меня устраивает. :)
11 ноя 16, 10:30    [19881881]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
LayoutSaver,

Там, собственно, проблема в том, что без указания StoreName компонент сохраняется с привязкой к имени овнера.
Когда начинаешь восстанавливать из такого сохранения компонент, привязаный к овнеру с другим именем, возникает твоя ошибка.
А StoreName можно указать только при сохранении через методы контейнера.
11 ноя 16, 10:37    [19881908]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Ладно, ждём, что сообщит на white_nigger.
11 ноя 16, 10:49    [19881969]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
Скомпилил пример в сиэттле, нормально нажимается на кнопку хоть пять раз. Запускал несколь раз. Что я должен был увидеть?
11 ноя 16, 11:56    [19882279]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
white_nigger,

перед тем как второй раз на кнопку жамкать, ты первое окошко закрыть успел?
11 ноя 16, 12:03    [19882336]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
white_nigger
Скомпилил пример в сиэттле, нормально нажимается на кнопку хоть пять раз. Запускал несколь раз. Что я должен был увидеть?


в архиве есть скомпилированный проект, который выдает: Class TdxLayoutControlContainer not found.
11 ноя 16, 12:06    [19882366]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Забыл дописать: DXE3 + Dev 2016.1.4
11 ноя 16, 12:17    [19882432]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
оказывается закрывать не надо было...
посмотрю
11 ноя 16, 13:18    [19882856]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
Если я правильно понимаю, ты хочешь сделать один паттерн в реестре, на основе которого будут выглядеть все клоны, по принципу "кто последний записал /color]- тот отец". В этом случае тебе надо принудительно указывать сохраненный объект, и действительно юзать контейнер. Что-то вроде:
const
  PatternLayout = 'fmEdit.dxLayoutControl1';

procedure RestoreLayoutControl(LayoutControl: TdxLayoutControl);
var
  APath: string;
begin
  try
    LayoutControl.BeginUpdate;
    APath := sRegStorKeyLAC + LayoutControl.Owner.ClassName + '_' + LayoutControl.Name;
    if RegistryKeyExists(APath) then
      LayoutControl.Container.RestoreFromRegistry(APath, PatternLayout);

  finally
    LayoutControl.EndUpdate;
  end;
end;

procedure StoreLayoutControl(LayoutControl: TdxLayoutControl);
var
  APath: string;
begin
  APath := sRegStorKeyLAC + LayoutControl.Owner.ClassName + '_' + LayoutControl.Name;
  LayoutControl.Container.StoreToRegistry(APath, True, PatternLayout);
  LayoutControl.Store;
end;
11 ноя 16, 14:17    [19883179]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Спасибо, сейчас попробую.
11 ноя 16, 14:25    [19883230]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
тогда правильней так сделать?
PatternLayout := LayoutControl.Owner.ClassName + '.' + LayoutControl.Name;

procedure RestoreLayoutControl(LayoutControl: TdxLayoutControl);
var
  APath, PatternLayout: string;
begin
  try
    LayoutControl.BeginUpdate;
    APath := sRegStorKeyLAC + LayoutControl.Owner.ClassName + '_' + LayoutControl.Name;
    PatternLayout := LayoutControl.Owner.ClassName + '.' + LayoutControl.Name;
    if RegistryKeyExists(APath) then
    begin
      LayoutControl.Container.RestoreFromRegistry(APath, PatternLayout);
    end;

  finally
    LayoutControl.EndUpdate;
  end;
end;


Форм (классов) разных несколько: форма редактирования, форма параметров поиска, главная форма, ещё какая-то форма.
11 ноя 16, 14:35    [19883294]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Немного удивлён, что после StoreToRegistry() надо вызывать Store.
11 ноя 16, 14:37    [19883308]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Ошибок не получил. Работает.
Спасибо большое всем, кто помогал.
11 ноя 16, 14:41    [19883337]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11, вот тебе и вся кошерность :))
white_nigger
действительно юзать контейнер. [/src]
еще маленький совет.
не сохраняй лайоут на автомате. или, по крайней мере, сделай галочку "сохранять/не сохранять лайоут".

PS после StoreToRegistry() НЕ надо вызывать Store.
11 ноя 16, 14:43    [19883351]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1882
X11
Немного удивлён, что после StoreToRegistry() надо вызывать Store.
Не надо. Это я из твоего кода выкинуть забыл :)
11 ноя 16, 14:51    [19883420]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
LayoutSaver
не сохраняй лайоут на автомате.

Тут прикол в чем: пользователь может свернуть/развернуть группу и это должно сохраниться.
Если бы настройки делились на 2 части:
1. Сохранение того, что пользователь менял с помощью дизайнера.
2. Сохранение состояния групп и того, что можно менять без дизайнера.
То тогда можно было разделить сохранение/восстановление на 2 части.
11 ноя 16, 14:55    [19883450]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
LayoutSaver
Guest
X11,

Я о пользователе забочусь.
Не каждый хочет ВСЕГДА сохранять лайоут при закрытии формы.
А некторые любят каждый раз с чистого листа начинать.
11 ноя 16, 18:08    [19884420]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Тогда можно сделать цикл по группам и при закрытии формы сохранять состояние: развёрнута/свёрнута. А сам лейаута сохранять только по кнопке.
12 ноя 16, 18:26    [19886402]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
У меня опять проблема с сохранением в стрим.
Решил довести до ума: обернуть всё в класс и, т.к. компонент для сохранения несколько (cxGrid, cxVirticalGrid, dxLayoutControl, dxBarManager), но у всех есть SaveToStream, то и процедуры сохранения можно все отдельные сделать в виде одной, но при этом код сохранения в стрим вынести в отдельную процедуру.

Всё сделал, но появилась проблема: dxLayoutControl хоть и сохраняется в базу и загружается из базы без ошибок, но он пустой после восстановления и базы, т.е. все элементы попадают в "Доступные элементы", поэтому невидимы.

На сколько я понимаю, то какие-то проблемы с типами классов. Всё сделал на уровне TComponent, чтобы были свойства Parent, Owner и Name.Т.е. в главную процедуру передаю TComponent в виде параметра:

procedure TStorage.StoreToDB(Component: TComponent);
begin
....
настройка подключения к базе, создание Tstream и т.д.
....

    StoreComponentToStream(Component, stream);// сохранение настроек в stream

...
сохранение stream в базу
....


procedure TStorage.StoreComponentToStream(Component: TComponent; stream: TStream);
begin 
  if Component is TdxLayoutControl then
    TdxLayoutControl(Component).SaveToStream(stream);

  if Component is TdxBarManager then
    TdxBarManager(Component).SaveToStream(stream);
...
...
...


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

Я решил проэкспериментировать и сделал для dxLayoutControl отдельную процедуру, где передавал именно TdxLayoutControl в качестве параметра, а не TComponent и проблема ушла.

Т.е. проблема таилась в типе класса передаваемого параметра?
С остальными компонентами не тестировал.

Собственно вопрос. Чтобы не городить огород с разными процедурами, где будут разные типы входящего параметра, как бы сделать так, чтобы все эти типы (компоненты): cxGrid, cxVirticalGrid, dxLayoutControl, dxBarManager нормально сохранялись в стрим и восстанавливались?

Ведь на 99% процедуры для сохранения, например, сетки cxGrid и BarManager похожи.
Может быть
11 сен 18, 11:47    [21670728]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3651
В одном случае был layout, а в другом layout.container -- вот и причина.

Лично я использую overload и разные параметры на входе специально под разные компоненты... а внутри тот самый is... Причем надо понимать, что настройки сохраняются не все и часть данных отсутствует. Или сохранять надо только определенные вещи. В этом случае как раз и можно добавить доп поля для сохранения-загрузки типа настройки ширина панели, режима отображения или цвета.
11 сен 18, 12:04    [21670759]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
JaDi
В одном случае был layout, а в другом layout.container -- вот и причина.

Нет. Я уже переделал всё без контейнера, как и советовал white_nigger.
11 сен 18, 12:24    [21670792]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
JaDi
Лично я использую overload


Ну так текст процедур на пример 90% одинаковый.
Т.е. если что-то нужно поменять, то нужно менять у 4-6 процедур. А легче и быстрей же в одной. Какую-то пропустил и вуаля...
11 сен 18, 12:27    [21670794]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
JaDi
а в другом layout.container -- вот и причина.


там, где правильная запись на картинке, там всё равно используется сохранение без контейнера:

dxLayoutControl.SaveToStream(stream);
11 сен 18, 12:28    [21670796]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Хорошо было бы, если бы у компонент типа dxBarManager, cxGrid, cxVerticalGrid, dxLayoutControl было бы какое-нибудь событие или свойство, касающееся изменения настроек, а не данных. Чтобы сохранять или предлагать пользователю сохранить настройки.
12 сен 18, 12:28    [21671973]     Ответить | Цитировать Сообщить модератору
 Re: dxLayoutControl RestoreFromRegistry  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 12230
Например, у cxVerticalGrid есть "CustomizationFormVisibleChanged", но оно срабатывает и при показе в том числе. А как определить, что CustomizationForm закрывается, а не открывается?
12 сен 18, 12:43    [21671992]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Delphi Ответить