|
2 / 2 / 0
Регистрация: 03.10.2008
Сообщений: 17
|
|
Управление одной формой из другой.10.10.2008, 12:17. Показов 31129. Ответов 19
Метки нет (Все метки)
Наверное глупый вопрос:
Есть 2 формы, MainForm и Form1. В данный момент фокус на форме Form1. Нужно из неё сделать Enabled = false для MainForm. На ум приходит только менять фокус на MainForm и делать ActiveForm.Enabled = false;, но как передать фокус всё той же MainForm?
0
|
|
| 10.10.2008, 12:17 | |
|
Ответы с готовыми решениями:
19
Управление одной формой из другой
Управление формой из другой формы |
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
|
| 10.10.2008, 12:47 | |
|
Передать из дочерней формы главной можно через делегаты ...
0
|
|
|
2 / 2 / 0
Регистрация: 03.10.2008
Сообщений: 17
|
|||||||||||
| 10.10.2008, 16:11 [ТС] | |||||||||||
|
А можешь показать на примере? Я теорию делегатов ни с одной книги не догнал, а примеров не видел.
Смотри, есть форма MainForm. Во время загрузки открываем Form1 и "морозим" MainForm:
Обработчик события нажатия этой кнопки:
0
|
|||||||||||
|
Администратор
87847 / 53168 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|
| 10.10.2008, 16:13 | |
|
Form1 и MainForm - это формы одного приложения? Если да, то передайте в дочернюю форму ссылку на родительскую.
0
|
|
|
2 / 2 / 0
Регистрация: 03.10.2008
Сообщений: 17
|
|
| 11.10.2008, 00:39 [ТС] | |
|
Да, и MainForm, и Form1 - формы одного приложения. Но, хот убей, не понимаю, как передать в дочернюю форму ссылку на родительскую. Используя ключевое слово "ref"? Методом тыка у меня ничего не получается. Чиркни, плз, пару строчек кода. На примере ведь всегда понятней.
P.S. Как я понимаю, Enabled - свойство динамическое, чтобы его использовать нужно создать экземпляр класса MainForm. Но если форма уже запущена, то и экземпляр его уже создан. Как узнать как к нему обратиться?
0
|
|
|
Администратор
87847 / 53168 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|
| 11.10.2008, 00:59 | |
|
Определи у дочерней формы конструктор, у него параметр типа Form, в него и передавай при создании.
0
|
|
|
2 / 2 / 0
Регистрация: 03.10.2008
Сообщений: 17
|
|
| 11.10.2008, 12:30 [ТС] | |
|
Или я такой тупой, или руки кривые, или ... Ну не получается. Ну тыкни носом дурака в строчку кода. С меня пиво
.
0
|
|
|
2 / 2 / 0
Регистрация: 03.10.2008
Сообщений: 17
|
||||||
| 12.10.2008, 12:43 [ТС] | ||||||
|
Ну ответьте хоть кто-нить...
Я тут, перекопав несколько исходников, нашёл такие строки (применительно к моему случаю, в коде формы Form1):
P.S. Пробовал писать this.Owner вместо this.ParentForm. Один хрен. Кста, в чём разница между Parent и Owner?
0
|
||||||
|
Администратор
87847 / 53168 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|
| 12.10.2008, 13:03 | |
Сообщение было отмечено как решение
Решение
Пример в аттаче, разбирайтесь.
Кстати, а зачем оно вам нужно?
3
|
|
|
2 / 2 / 0
Регистрация: 03.10.2008
Сообщений: 17
|
|
| 13.10.2008, 12:55 [ТС] | |
|
Bool’s eye! Пасиба агроменное. Особенно пасиба за терпение. Оказалось всё очень просто (даже не догадался, что Form можно использовать как тип переменной). А насчёт «зачем?..». Да так... Я жеж тока учусь. Ставлю перед собой задачи, пытаюсь решить, сталкиваюсь с проблемами... Бьюсь над их решением... Надоедаю форумчанам...
Добавлено через 20 часов 52 минуты 11 секунд Я, наверное уже достал, но не легче передавать ссылку на объект одной формы другой форме не в ввиде аргумента конструктора, а просто статической public-переменной? Не подумай, что я тебя поучаю, просто хочется побольше знать. Ведь так меньше телодвижений и в будущем, если понадобиться, допустим, добавить ссылку на новый объект, всё это дело легче провернуть. Или может через конструктор правильнее? Ниже я приаттачил то, что имею ввиду. P.S. Если надоел, не отвечай на мой пост. Добавлено через 13 минут 19 секунд Собсьна сам пример:
2
|
|
|
Администратор
87847 / 53168 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|||
| 13.10.2008, 12:59 | |||
![]()
0
|
|||
|
2 / 2 / 0
Регистрация: 03.10.2008
Сообщений: 17
|
|
| 13.10.2008, 13:06 [ТС] | |
|
Чёй-то не аттачиться.
Кароч, в одной форме делаем public static Form Form_ref; потом Form_ref = this; а топом из фтарой формы пишем MainForm.Form_ref.Enabled = true;
0
|
|
|
Администратор
87847 / 53168 / 249
Регистрация: 10.04.2006
Сообщений: 13,764
|
|
| 13.10.2008, 13:15 | |
|
См. пост 11.
0
|
|
|
2 / 2 / 0
Регистрация: 03.10.2008
Сообщений: 17
|
|
| 13.10.2008, 13:33 [ТС] | |
|
Та я уже понял, просто ты ответил раньше, чем я успел описать свой аттачмент. За сим откланяюсь. Тема закрыта. Всем спасибо, все свободны.
0
|
|
|
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70
|
||||||||||||||||||||||||||
| 07.01.2009, 01:53 | ||||||||||||||||||||||||||
|
Можно еще так:
У каждой формы есть свой заголовочный "*.h" и текст "*.cpp" файлы. При первом сохранении можно ввести их имена, но стандартно они Unit1, Unit2... Пишем например в "Unit2.cpp" //собственно ето в самом редакторе
У каждой формы есть свой заголовочный "*.h" и текст "*.cpp" файлы. При первом сохранении можно ввести их имена, но стандартно они Unit1, Unit2... В редакторе можно переключатся между ними щелкая по названию вкладки правой кнопкой и в контекстном меню самое верхнее "Open Source/Header File" Управление формой с другой формы: Например есть у нас 2 формы. Имена "*.h" и "*.cpp" стандартные: Unit1 и Unit2. Хотим со второй формы поколдавать над первой: Пишем в "Unit2.cpp"
Положение такое же. Хотим получить переменную во второй форме из первой: Тут немножко сложнее но суть та же. Например есть у нас такой код в "Unit1.cpp"
, в "Unit1.h" ищем раздел "public:" и пишем туда:
0
|
||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 3
|
|
| 22.04.2009, 16:39 | |
|
решил поднять тему. сделал все как в примере выше, но почему-то у меня нет доступа таким образом к примеру к лэйблам и кастомным методам.
что не правильно?
0
|
|
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
|
| 22.04.2009, 16:51 | |
|
Покажите код
0
|
|
|
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 3
|
|||||||||||
| 22.04.2009, 16:57 | |||||||||||
0
|
|||||||||||
|
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
|
||||||
| 22.04.2009, 17:07 | ||||||
|
А если так?
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.04.2009
Сообщений: 3
|
|
| 22.04.2009, 17:16 | |
|
ага, тоже понял свою ошибку, хотел отписаться что вкурил
спасибо
0
|
|
| 22.04.2009, 17:16 | |
|
Помогаю со студенческими работами здесь
20
Как передать данные с одной формы на страницу с другой формой? Как связать одну кнопку на одной форме с другой формой Управление объектами на одной форме с другой формы Управление записью одной таблицы через поле другой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|