powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / dxLayoutControl RestoreFromRegistry
54 сообщений из 54, показаны все 3 страниц
dxLayoutControl RestoreFromRegistry
    #39344364
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть форма, которую пользователь может вызвать несколько раз. Т.е. форма редактирования каких-нибудь данных - вызвать на редактирование 2-3 записи из БД.
Т.е. создаётся несколько одинаковых форм одно и то же типа. Тип один и тот же, а имена разные: "fmEditFom", "fmEditFom_1" и т.д.
На форме есть dxLayoutControl.
Первый экземпляр создаётся без ошибок.
Второй уже вызывает исключение:
exceptionProject raised exception class EClassNotFound with message 'Class TdxLayoutControlContainer not found'.


Код восстановления настроек:
Код: 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.
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 нужно сделать процедурой класса в модуле формы?
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344367
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
закомментировал "RestoreLayoutControl(dxLayoutControl1);" в процедуре создания формы и ошибка исчезла

так как же в моём случае правильно восстанавливать?
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344444
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кто тебе разрешал методы контейнера дергать? У тебя контрол - вот и юзай, для начала, его методы...
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344641
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но у TdxLayoutControl нет RestoreFromRegistry()
Или я не понял тебя?
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344643
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так правильно?
Код: pascal
1.
2.
      LayoutControl.OptionsStoring.RegistryPath := sRegStorKeyLAC + LayoutControl.Owner.ClassName + '_' + LayoutControl.Name;
      LayoutControl.Restore;
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344653
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Та же ошибка на строке
Код: pascal
1.
LayoutControl.Restore;
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344688
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,

Я точно не помню, т.к. года три назад это сделал и до сих пор использую в неизменном виде запись лайоута в стрим .
Container.StoreToStream/Container.RestoreFromStream
Но кажется проблема решилась через параметр aSaveName/aRestoreName.
Нужно задать строковой константой этот параметр при сохранении и восстановлении.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344709
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
LayoutControl.LoadFromRegistry()



также выдает то же самое исключение
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344812
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,
сохраниться-то перед восстановлением удалось с параметром?
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344826
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я Вас не понял, извините.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344828
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы, наверное, не поняли мою проблему.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344842
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11Я Вас не понял, извините.
Удалось ли вызвать
Код: pascal
1.
LayoutControl.Container.StoreToRegistry(....., cMyLyoutSaveName);

Перед восстановлением
Код: pascal
1.
LayoutControl.Container.ReStoreFromRegistry(....., cMyLyoutSaveName);
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344844
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11Вы, наверное, не поняли мою проблему.
Да как же тебя понять, коли ты ничего не говоришь? (c)
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344879
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LayoutSaver, так Container сказали же не трогать
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344888
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если сделать так:
Код: pascal
1.
2.
LayoutControl.Container.StoreToRegistry();
LayoutControl.Container.ReStoreFromRegistry();



т.е. вызвать LayoutControl.Container.StoreToRegistry(); предварительно, то ошибки НЕ возникает
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344920
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11
Код: pascal
1.
2.
LayoutControl.Container.StoreToRegistry();
LayoutControl.Container.ReStoreFromRegistry();

т.е. вызвать LayoutControl.Container.StoreToRegistry(); предварительно , то ошибки НЕ возникает
"Предварительно", т.е. непосредственно перед "ReStore"? Зачем вообще тогда "ReStore" делать?
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344943
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как зачем?
а как ВОССТАНОВИТЬ
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344969
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,
ты читаешь внимательно? Значение слова "непосредственно" понятно?
автор"Предварительно", т.е. непосредственно перед "ReStore"? Зачем вообще тогда "ReStore" делать?
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344981
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значение слова - понятно. Тебя - непонятно.
Ты знаешь способ восстановить настройки LayoutControl? Дай пример.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39344994
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Документация? Не, не слышали.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345005
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Пример не дам, т.к. слишком много в нем лишнего.
Но у меня устроено так. Думаю, что с registry тоже прокатит.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
const
  cLayoutSaveName : String = 'SpecialSavedLayout';

//Процедура сохранения окошка
procedure TMyForm.saveToStream();
begin
....
    LayoutControl.Container.StoreToStream(aStream, cLayoutSaveName);
....
end;
//Процедура восстановления окошка
procedure TMyForm.loadFromStream();
begin
....
    LayoutControl.Container.RestoreFromStream(aStream, cLayoutSaveName);
....
end;
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345007
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче пример давай. Или в саппорт или сюда. А то так долго телепатировать можно...
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345010
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiДокументация? Не, не слышали.

при вызове Restore то же ошибка
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345030
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerКороче пример давай. Или в саппорт или сюда. А то так долго телепатировать можно...

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

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

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

Если не получится, то закройте программу, затем откройте программу и нажмите кнопку дважды.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345034
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,
rar не открывается
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345040
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Use winrar 5, Luke
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345090
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
завтра гляну - как время найду
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345374
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
37.
38.
39.
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;

...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345395
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так написали же Вам, что использовать Container - не комильфо.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345407
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,

Ну, кому-то, может, и не комильфо, а меня устраивает. :)
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345413
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LayoutSaver,

Там, собственно, проблема в том, что без указания StoreName компонент сохраняется с привязкой к имени овнера.
Когда начинаешь восстанавливать из такого сохранения компонент, привязаный к овнеру с другим именем, возникает твоя ошибка.
А StoreName можно указать только при сохранении через методы контейнера.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345423
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ладно, ждём, что сообщит на white_nigger.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345467
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скомпилил пример в сиэттле, нормально нажимается на кнопку хоть пять раз. Запускал несколь раз. Что я должен был увидеть?
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345475
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
white_nigger,

перед тем как второй раз на кнопку жамкать, ты первое окошко закрыть успел?
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345478
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerСкомпилил пример в сиэттле, нормально нажимается на кнопку хоть пять раз. Запускал несколь раз. Что я должен был увидеть?

в архиве есть скомпилированный проект, который выдает: Class TdxLayoutControlContainer not found.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345486
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл дописать: DXE3 + Dev 2016.1.4
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345544
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оказывается закрывать не надо было...
посмотрю
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345621
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понимаю, ты хочешь сделать один паттерн в реестре, на основе которого будут выглядеть все клоны, по принципу "кто последний записал /color]- тот отец". В этом случае тебе надо принудительно указывать сохраненный объект, и действительно юзать контейнер. Что-то вроде:
Код: 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.
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;
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345632
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, сейчас попробую.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345643
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда правильней так сделать?
PatternLayout := LayoutControl.Owner.ClassName + '.' + LayoutControl.Name;

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
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;



Форм (классов) разных несколько: форма редактирования, форма параметров поиска, главная форма, ещё какая-то форма.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345645
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного удивлён, что после StoreToRegistry() надо вызывать Store.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345651
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибок не получил. Работает.
Спасибо большое всем, кто помогал.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345653
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11, вот тебе и вся кошерность :))white_nigger действительно юзать контейнер. [/src]еще маленький совет.
не сохраняй лайоут на автомате. или, по крайней мере, сделай галочку "сохранять/не сохранять лайоут".

PS после StoreToRegistry() НЕ надо вызывать Store.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345665
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Немного удивлён, что после StoreToRegistry() надо вызывать Store.Не надо. Это я из твоего кода выкинуть забыл :)
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345669
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LayoutSaverне сохраняй лайоут на автомате.
Тут прикол в чем: пользователь может свернуть/развернуть группу и это должно сохраниться.
Если бы настройки делились на 2 части:
1. Сохранение того, что пользователь менял с помощью дизайнера.
2. Сохранение состояния групп и того, что можно менять без дизайнера.
То тогда можно было разделить сохранение/восстановление на 2 части.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39345875
LayoutSaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11,

Я о пользователе забочусь.
Не каждый хочет ВСЕГДА сохранять лайоут при закрытии формы.
А некторые любят каждый раз с чистого листа начинать.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39346138
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда можно сделать цикл по группам и при закрытии формы сохранять состояние: развёрнута/свёрнута. А сам лейаута сохранять только по кнопке.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
dxLayoutControl RestoreFromRegistry
    #39700828
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня опять проблема с сохранением в стрим.
Решил довести до ума: обернуть всё в класс и, т.к. компонент для сохранения несколько (cxGrid, cxVirticalGrid, dxLayoutControl, dxBarManager), но у всех есть SaveToStream, то и процедуры сохранения можно все отдельные сделать в виде одной, но при этом код сохранения в стрим вынести в отдельную процедуру.

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

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

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TStorage.StoreToDB(Component: TComponent);
begin
....
настройка подключения к базе, создание Tstream и т.д.
....

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

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



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
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 похожи.
Может быть
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39700840
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одном случае был layout, а в другом layout.container -- вот и причина.

Лично я использую overload и разные параметры на входе специально под разные компоненты... а внутри тот самый is... Причем надо понимать, что настройки сохраняются не все и часть данных отсутствует. Или сохранять надо только определенные вещи. В этом случае как раз и можно добавить доп поля для сохранения-загрузки типа настройки ширина панели, режима отображения или цвета.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39700860
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiВ одном случае был layout, а в другом layout.container -- вот и причина.
Нет. Я уже переделал всё без контейнера, как и советовал white_nigger.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39700861
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiЛично я использую overload

Ну так текст процедур на пример 90% одинаковый.
Т.е. если что-то нужно поменять, то нужно менять у 4-6 процедур. А легче и быстрей же в одной. Какую-то пропустил и вуаля...
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39700862
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiа в другом layout.container -- вот и причина.

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

dxLayoutControl.SaveToStream(stream);
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39701386
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо было бы, если бы у компонент типа dxBarManager, cxGrid, cxVerticalGrid, dxLayoutControl было бы какое-нибудь событие или свойство, касающееся изменения настроек, а не данных. Чтобы сохранять или предлагать пользователю сохранить настройки.
...
Рейтинг: 0 / 0
dxLayoutControl RestoreFromRegistry
    #39701401
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, у cxVerticalGrid есть "CustomizationFormVisibleChanged", но оно срабатывает и при показе в том числе. А как определить, что CustomizationForm закрывается, а не открывается?
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / dxLayoutControl RestoreFromRegistry
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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