|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
||||||
При выполнении Show() создается новая форма31.07.2017, 00:28. Показов 1332. Ответов 15
Метки нет (Все метки)
Здравствуйте.
Возникла такая проблема. В проекте имеется две формы с TextBox-ами. При заполнении TextBox в первой форме нужно перейти во вторую. Во второй форме есть кнопка назад, которая возвращает нас к первой форме, если понадобилось что-то исправить. Проблема в том, что при возврате в первую форму она полностью обнуляется и в полях только пустота. При возврате опять во вторую форму она тоже оказывается чистой. Как можно исправить такое поведение? Переключение по формам осуществляется проще некуда:
P.S. Работаю в Visual Studio 2015
0
|
||||||
| 31.07.2017, 00:28 | |
|
Ответы с готовыми решениями:
15
Метод UserForm.Show при повторном выполнении .Show
Почему при переходе на новую страницу создается новая сессия? |
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 31.07.2017, 08:59 | |
|
ну тут всё просто. Откуда вторая форма знает, что FirstStep — это тот экземпляр первой формы, из которого она была вызвана? Как это поле инициализируется?
0
|
|
|
141 / 119 / 29
Регистрация: 12.02.2017
Сообщений: 308
|
|
| 31.07.2017, 15:47 | |
|
Объявите обе формы в глобальных переменных и не забудьте инициализировать их.
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 31.07.2017, 16:30 | |
|
Homarty, никаких глобальных переменных не существует. Существуют поля и свойства, область видимости которых определяется модификатором доступа и пространством имён.
Самый лучший вариант в данном случае — перед вызовом второй формы подписаться на её событие Closed, и там показать первую форму и отписаться от этого события. Пишу с телефона, так что код набрать затруднительно. Может позже, если никто не напишет
0
|
|
|
Администратор
|
|
| 31.07.2017, 17:12 | |
|
a13428711, приведенный код должен работать и содержимое форм должно сохраняться. Возможно в коде делается что-то еще. Например каждая форма создается в отдельном потоке или есть обработчик события Activated который сбрасывает значения полей или что-то еще.
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||||||||||
| 31.07.2017, 19:40 | |||||||||||
|
Как обещал:
Первая форма:
3
|
|||||||||||
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
|
| 31.07.2017, 20:45 [ТС] | |
|
У меня предполагается несколько форм (около 5) и при таком подходе, если я правильно понимаю, будет очень "хорошее" ветвление...
Неужели нет способа просто обратиться к существующей форме, не создавая ее копию? Если убрать Hide() со всех обработчиков нажатия кнопки, то когда мы переключаемся на вторую форму первая остается неизменной, но при повторном обращении к первой форме фокус не переводится на нее, а создается новый пустой проинициализированный экземпляр...
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||
| 31.07.2017, 21:02 | |||
|
0
|
|||
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
|
| 31.07.2017, 21:26 [ТС] | |
|
А чем плох OpenForms?
0
|
|
|
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|
| 31.07.2017, 21:30 | |
|
Всем хорош, если его достаточно.
0
|
|
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
||||||||||||||||
| 31.07.2017, 22:19 [ТС] | ||||||||||||||||
|
Проблему решил, устранив фактор собственной криворукости
![]() Понаставлял таких штуковин в каждой форме в которой происходит обращение к другим формам:
На этой почве другой вопрос: я ведь не просто так их понавтыкал. Есть у меня такой класс:
Ну и чтоб обратиться к функции другого класса нужно каждый раз создавать новый экземпляр класса? А если у меня функция вызывается 500 раз, то я вообще всю память компа завалю этими функциями. Или они потом сами выгружаются из памяти при выходе из класса? P.S. На Си было как-то проще
0
|
||||||||||||||||
|
Администратор
|
|||
| 31.07.2017, 22:30 | |||
![]()
0
|
|||
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
|
| 31.07.2017, 22:49 [ТС] | |
|
Я представляю поверхностно что такое модули. Нужно просто вникнуть в суть. Если бы кто-нибудь указал на мои ошибки в примере выше, то это бы значительно ускорило процесс понимания...
0
|
|
|
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
|
||
| 01.08.2017, 00:30 | ||
|
1
|
||
|
6 / 6 / 1
Регистрация: 09.02.2016
Сообщений: 296
|
||
| 01.08.2017, 20:04 [ТС] | ||
|
Только цитата моя уже относилась не к формам, а к принципам программирования в общем .
0
|
||
|
307 / 248 / 40
Регистрация: 28.09.2013
Сообщений: 600
|
|
| 01.08.2017, 21:49 | |
|
Все верно. Кнопка далее должна активироваться после валидации. Если речь идет об общих вопросах программирования, то посмотрите в сторону создания специального класса, содержащего все настройки, и таскайте его из формы в форму как открытое поле. Например)
1
|
|
| 01.08.2017, 21:49 | |
|
Помогаю со студенческими работами здесь
16
Создается ли новый делегат при выполнении над ним операций += или -+ Delphi XE3 при нажатии Enter не создается новая строка в редакторе кода
При нажатие на любую ссылку или область окна браузера создается новая вкладка с рекламой Подготовить bat-файл, при выполнении которого в текущем каталоге создается его копия под новым именем Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|