|
|
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что одна и та же форма создается несколько раз и с разными именами. Например форма просмотра или редактирования товара может быть открыта пользователем 2-3-5 раз. Предисловие. К примеру, вот так она объявлена: Код: pascal 1. перед implementation удалена строка Код: pascal 1. 2. но есть процедура, которая создает форму Код: pascal 1. 2. 3. 4. В итоге создаётся несколько форм с именами "fmEdit", "fmEdit_1", "fmEdit_2", "fmEdit_3" и т.д. Я посмотрел, что сохраняет метод dxLayoutControl1.SaveToStream(stream). Там сохраняется "fmEdit.dxLayoutControlFrmAdd". Т.е. получается, что когда восстанавливается форма "fmEdit_1", то она оказывается пустая. Как заставить TdxLayoutControl не обращать внимание на имя формы при сохранении или при загрузке? Данные сохраняюся в стрим и далее в базу. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 15:57 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Или как заставить использовать что-то своё вместо имени? Например, вместо имени fmEdit, чтобы использовался класс TfmEdit. Ведь класс у всех одинаковых форм один и тот же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:01 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
А ты не создавай новую форму, если уже переменная fmEdit определёна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:03 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Это не обсуждается. Пользователь хочет открыть 2 разных товара на форме просмотра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:17 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
тут есть решение https://www.devexpress.com/Support/Center/Question/Details/Q350646/how-to-exclude-form-name-in-tdxlayoutcontrol-savetoinifile но существующие, записанные в базу данные уже нельзя будет использовать т.е. теперь в базу нужно сохранять всё заново :( Код: pascal 1. и пересоздавать всё то, что пользователь "надизайнил" с формами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:20 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11 Код: pascal 1. 2. 3. 4. Попробуй в конце процедуры создания сам переименовывать название формы уникальным инкрементным именем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:28 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
так в том-то и дело, что имя должно быть не уникальным ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:34 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
и здесь тоже советуют https://www.devexpress.com/Support/Center/Question/Details/T498728/tdxlayoutcontrol-saving-to-stream ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:37 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11так в том-то и дело, что имя должно быть не уникальным Поменять имя формы на уникальное уже ПОСЛЕ загрузки настроек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:40 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Т.е. создать вторую форму с именем fmEdit, загрузить настройки, а потом переименовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:46 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Эхх... Юзай dxLayoutControl1.Container.StoreToIniFile/RestoreFromIniFile Последним параметром укажешь нужное имя X11"fmEdit", "fmEdit_1", "fmEdit_2", "fmEdit_3" и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:46 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
white_nigger, это я уже понял, но в этом проблема :( X11пересоздавать всё то, что пользователь "надизайнил" с формами нельзя использовать существующие наработки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:50 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11нельзя использовать существующие наработкиНе совсем понял. В каком формате сохранены данные? Приведи пример проблемы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 16:59 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
В первом сообщении привел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 17:10 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что структура программы изначально неправильная.Зачем создавать кучу форм??? Для отображения каких то данных Не легче ли было бы в одной форме, загружать данные с нужного элемента. Типа окно в окне (Panel, и типа такого) которое открыто по середине. И показывает специфики товара и так далее. А область под окном затемнена Ну если ты выполняешь заказ какого - то, клиента так скажем. То это его не продуманность, что он пошёл корявой дорожкой Конечно же можно, добавлять товар в сравнения и в этой же форме выводить определённые характеристики как это сделано в яндекс маркете в таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 17:16 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11т.е. теперь в базу нужно сохранять всё заново :( и пересоздавать всё то, что пользователь "надизайнил" с формами Добро пожаловать в мир костылей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 17:21 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Я вот что придумал. В новой версии программы нужно определять, что использовать: LayoutControl.LoadFromStream() или LayoutControl.Container.RestoreFromStream() т.е. в базу(в таблицу с блобом) нужно добавить новое поле, где будет храниться версия и если версия пустая, то это старая версия данных и там есть имя формы, а значит нужно применять LayoutControl.LoadFromStream(), а если там, например, цифра 1, то это уже новая версия данных без имени формы и нужно применять LayoutControl.Container.RestoreFromStream(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 17:23 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11В первом сообщении привел.Мать... чем конкретно Container.StoreTo/RestoreFrom не подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 17:23 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
А просто проанализировать первые несколько символов стрима не судьба? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 17:24 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
white_niggerX11В первом сообщении привел.Мать... чем конкретно Container.StoreTo/RestoreFrom не подходит? я ж написал: пользователь уже надизайнил формочек, поэтому Container.RestoreFrom() не загружает то, что было сохранено методом Layout.SaveToStream(stream); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 17:33 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
white_nigger, да, тоже уже подумал об этом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 17:34 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
По сигнатуре стрима определяй что передавать в LayoutControl.Container.RestoreFromStream в последнем параметре. Его можно применять в обоих случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2019, 17:36 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
что такое сигнатура стрима? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 10:05 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11, Это и есть первых несколько байтов в потоке. Как у архивов например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 11:02 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Т.е. их надо скопировать в StringStream и проверить, если там что-то похожее на имя формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 11:15 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11Т.е. их надо скопировать в StringStream и проверить, если там что-то похожее на имя формы? Товарищ, почему спрашиваете, не вы ли писали: X11Там сохраняется "fmEdit.dxLayoutControlFrmAdd". ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 12:11 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
В общем, сделал так. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. В процедуре загрузки данных из стрима получаем первые 100 символов этого стрима для поиска названия формы Код: pascal 1. проверяем Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 16:49 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
white_nigger, добавьте в метод RestoreFromStream строку stream.Position := 0; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 17:07 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2019, 18:17 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Я правильно понимаю, что не обязательно мне использовать LayoutControl.BeginUpdate, т.к. в методе TdxLayoutContainer.RestoreFrom уже есть BeginUpdate? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 10:11 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Фэйтл Эра, почему именно 17? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 10:13 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11Фэйтл Эра, почему именно 17? Очень удобно: простое число, легко запимнить как натуральный логарифм от 24154952,753575298214775. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2019, 10:23 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Теперь похожая проблема с TcxPropertiesStore. Сохраняю размеры и положение окна (формы). Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. вот пример того, что сохраняется в базу: ...fmClientAdd....TcxPropertiesStoreComponent.....Top... когда пользователь просматривает информацию, он открывает более одной формы fmClientAdd и получается, как я выше писал: fmClientAdd, fmClientAdd_1, fmClientAdd_2 и т.д. и cxPropertiesStore не применяет настройки окна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 15:24 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
up ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2019, 13:31 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Переделал так: Код: pascal 1. 2. 3. 4. 5. 6. 7. вроде работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2019, 13:40 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11 Код: pascal 1. Нет, так нельзя, тогда меняется имя и у самой формы :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2019, 14:10 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11Нет, так нельзя, тогда меняется имя и у самой формы :(Не смотрел но... а восстановить имя после не судьба? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2019, 17:23 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2019, 17:38 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
X11, не останавливайся, пожалуйста. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2019, 22:57 |
|
||
|
TdxLayoutControl.SaveToStream сохраняет имя формы :(
|
|||
|---|---|---|---|
|
#18+
Может, кому пригодится. У TdxBarManager нужно менять/удалять и потом восстанавливать TdxBarManager.owner.name. Хорошо, если бы разработчики в будущем добавили какое-нибудь свойство, чтобы имя формы не влияло. Может быть даже, чтобы и имя компоненты не влияло. Или дать возможность самим управлять "именем" при сохранении в стрим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2019, 14:51 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2039840]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
92ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 564ms |

| 0 / 0 |
