powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / dxLayoutControl RestoreFromRegistry
25 сообщений из 54, страница 1 из 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
25 сообщений из 54, страница 1 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / dxLayoutControl RestoreFromRegistry
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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