powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TdxLayoutControl.SaveToStream сохраняет имя формы :(
25 сообщений из 40, страница 1 из 2
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763614
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что одна и та же форма создается несколько раз и с разными именами. Например форма просмотра или редактирования товара может быть открыта пользователем 2-3-5 раз.
Предисловие.

К примеру, вот так она объявлена:
Код: pascal
1.
TfmEdit = class(TForm)



перед implementation удалена строка
Код: pascal
1.
2.
Var
fmEdit : TfmEdit;// нет этой строки


но есть процедура, которая создает форму
Код: pascal
1.
2.
3.
4.
procedure CallEditForm(id: integer);
...
....
fmEdit := TfmEdit.Create(fmMain);



В итоге создаётся несколько форм с именами "fmEdit", "fmEdit_1", "fmEdit_2", "fmEdit_3" и т.д.

Я посмотрел, что сохраняет метод dxLayoutControl1.SaveToStream(stream).
Там сохраняется "fmEdit.dxLayoutControlFrmAdd".
Т.е. получается, что когда восстанавливается форма "fmEdit_1", то она оказывается пустая.

Как заставить TdxLayoutControl не обращать внимание на имя формы при сохранении или при загрузке?
Данные сохраняюся в стрим и далее в базу.

Спасибо.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763618
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или как заставить использовать что-то своё вместо имени?
Например, вместо имени fmEdit, чтобы использовался класс TfmEdit. Ведь класс у всех одинаковых форм один и тот же.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763623
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты не создавай новую форму, если уже переменная fmEdit определёна
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763641
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не обсуждается.
Пользователь хочет открыть 2 разных товара на форме просмотра.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763644
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут есть решение
https://www.devexpress.com/Support/Center/Question/Details/Q350646/how-to-exclude-form-name-in-tdxlayoutcontrol-savetoinifile

но существующие, записанные в базу данные уже нельзя будет использовать


т.е. теперь в базу нужно сохранять всё заново :(
Код: pascal
1.
LayoutControl.Container.StoreToStream(stream, LayoutControl.Name);



и пересоздавать всё то, что пользователь "надизайнил" с формами
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763661
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
Код: pascal
1.
2.
3.
4.
procedure CallEditForm(id: integer);
...
....
fmEdit := TfmEdit.Create(fmMain);


Попробуй в конце процедуры создания сам переименовывать название формы уникальным инкрементным именем.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763672
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так в том-то и дело, что имя должно быть не уникальным
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763674
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763677
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11так в том-то и дело, что имя должно быть не уникальным
Поменять имя формы на уникальное уже ПОСЛЕ загрузки настроек.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763683
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. создать вторую форму с именем fmEdit, загрузить настройки, а потом переименовать?
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763684
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эхх...
Юзай dxLayoutControl1.Container.StoreToIniFile/RestoreFromIniFile
Последним параметром укажешь нужное имя X11"fmEdit", "fmEdit_1", "fmEdit_2", "fmEdit_3" и т.д.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763686
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger,

это я уже понял, но в этом проблема :(
X11пересоздавать всё то, что пользователь "надизайнил" с формами

нельзя использовать существующие наработки
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763696
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11нельзя использовать существующие наработкиНе совсем понял. В каком формате сохранены данные? Приведи пример проблемы
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763706
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В первом сообщении привел.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763713
Гирлионайльдо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что структура программы изначально неправильная.Зачем создавать кучу форм??? Для отображения каких то данных

Не легче ли было бы в одной форме, загружать данные с нужного элемента. Типа окно в окне (Panel, и типа такого) которое открыто по середине. И показывает специфики товара и так далее. А область под окном затемнена

Ну если ты выполняешь заказ какого - то, клиента так скажем. То это его не продуманность, что он пошёл корявой дорожкой

Конечно же можно, добавлять товар в сравнения и в этой же форме выводить определённые характеристики как это сделано в яндекс маркете в таблице
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763726
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11т.е. теперь в базу нужно сохранять всё заново :(
и пересоздавать всё то, что пользователь "надизайнил" с формами
Добро пожаловать в мир костылей.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763728
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот что придумал.
В новой версии программы нужно определять, что использовать:
LayoutControl.LoadFromStream()
или
LayoutControl.Container.RestoreFromStream()

т.е. в базу(в таблицу с блобом) нужно добавить новое поле, где будет храниться версия и если версия пустая, то это старая версия данных и там есть имя формы, а значит нужно применять LayoutControl.LoadFromStream(), а если там, например, цифра 1, то это уже новая версия данных без имени формы и нужно применять LayoutControl.Container.RestoreFromStream().
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763729
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11В первом сообщении привел.Мать... чем конкретно Container.StoreTo/RestoreFrom не подходит?
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763734
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А просто проанализировать первые несколько символов стрима не судьба?
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763749
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerX11В первом сообщении привел.Мать... чем конкретно Container.StoreTo/RestoreFrom не подходит?

я ж написал: пользователь уже надизайнил формочек, поэтому
Container.RestoreFrom() не загружает то, что было сохранено методом Layout.SaveToStream(stream);
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763751
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_nigger, да, тоже уже подумал об этом
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39763754
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По сигнатуре стрима определяй что передавать в LayoutControl.Container.RestoreFromStream в последнем параметре. Его можно применять в обоих случаях.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39764008
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что такое сигнатура стрима?
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39764072
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11,

Это и есть первых несколько байтов в потоке. Как у архивов например.
...
Рейтинг: 0 / 0
TdxLayoutControl.SaveToStream сохраняет имя формы :(
    #39764089
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. их надо скопировать в StringStream и проверить, если там что-то похожее на имя формы?
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TdxLayoutControl.SaveToStream сохраняет имя формы :(
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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