Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
34 / 31 / 1
Регистрация: 06.01.2017
Сообщений: 300

Изменение свойства Parent

06.01.2017, 21:22. Показов 2006. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Исходная ситуация:
-UserForm
--MultiPage
---Page1
----TextBox
----CommandButton
----Frame - подробнее ниже
---Page2
---Page3

-Page1
--Frame
---CheckBoxA
---CheckBoxB
---CheckBoxC
---CheckBoxD
---CheckBoxE
===============================
Программа должна работать так:
Через CommandButton загружаем (DownLoad) Excel-файл, содержащий страницу с описанием исследуемых объектов, в том числе полные имена (с путём) Excel-файлов, содержащих первичные данные по объектам. Если кому интересно, то эти первичные данные представляют результаты работы неких математических моделей. Назовём исходно загружаемый файл Config.
Наша цель - преобразовать первичные данные так, чтобы на основе уже переработанных (вторичных) данных генерировать отчётные таблицы согласно Регламенту. Первичные данные это несколько листов с фиксированными именами, вторичные данные тоже несколько листов с фиксированными именами, всё это вместе - и первичные и вторичные данные, для каждого объекта расположено в соответствующем документе

Собственно, список CheckBox, лежащих на Frame, это и есть список объектов. Отражаем не имя Excel-документа, содержащего первичные и вторичные данные объекта, а описание объекта, которое берётся из Config.
Спрашивается, почему именно CheckBox? Это сделано потому, что какие-то объекты уже могут быть переработаны, т.е. уже содержат вторичные данные.
Пользователь работает с вторичными данными, изменяет их, поэтому желательно знать, произведена ли переработка, чтобы не испортить наработанное - отредактированные вторичные данные.
Поэтому Программа проверяет, содержит ли объект вторичные данные, и если содержит, то снимает флажок в соответствующем CheckBox"е. Если пользователь считает, что вторичные данные вконец испорчены, то он может выставить флажок и заставить сгенерировать вторичные данные повторно.

В общем, ситуация на Page1 совсем простая.

На Page2 планируется задать обработку уже вторичных данных, т.е. создание отчётов. Каждый объект обрабатывается отдельно, для каждого объекта генерируются однотипные таблицы-отчёты.
Если бы всё ограничивалось бы этим, то не надо было бы вообще создавать Page2, достаточно было бы ввести CommandButton с надписью "Построить Таблицы" и дело с концом.

Тонкость в том, что кроме отчетов по объектам надо создать внешне такие же отчеты для, скажем так, нулевого объекта, представляющего из себя объединение объектов низшего уровня, при этом пользователь сам решает, какие объекты объединять. Чтобы было понятно, поясню, что отчеты объекта №0 внешне точно такие же, но строятся по иному алгоритму.

Что я хочу:
При переходе на Page2 воссоздать весь Frame, который сейчас на Page2, чтобы надписи на CheckBox"ах были те же самые, что и на Page2, но все флажки были сброшены и пользователь выставлял их уже заново.

Про запас я держу такой приём - ввести на Page1 дополнительную кнопку, которая переключала бы эту страницу в режим генерирования отчетов ну и, соответственно, назад, в режим переработки первичных данных во вторичные.

Но более элегантным представляется перебросить на Page2 всего Frame со всеми Checkbox"ами.
Для этого надо всего-то изменить свойство Parent у этого Frame.
Сейчас у это Page1, а надо, чтобы был Page2.

=======================
Вопрос к уважаемым коллегам - как изменить свойство Parent ?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.01.2017, 21:22
Ответы с готовыми решениями:

Групповое изменение свойства объектов?
Здравствуйте! Возникла следующая необходимость: Для группы объектов, например TextBox, присутствующих на одной форме изменить .Locked =...

Определить изменение свойства Parent объекта TreeNode
Приветствую всех. Совершенно не понятно, но объект TreeNode не содержит ни одного события. Также коллекция TreeNodeCollection не имеет...

Некорректные координаты PictureBox при присвоении свойства Parent
У меня появилась одна проблема уже пол дня сижу, не могу понять откуда она. Суть: У меня есть картинка *.png с прозрачностью. Она...

4
Эксперт NIX
3305 / 933 / 201
Регистрация: 14.01.2013
Сообщений: 4,769
13.01.2017, 20:55
Цитата Сообщение от MU-GK Посмотреть сообщение
Что я хочу:
При переходе на Page2 воссоздать весь Frame, который сейчас на Page2, чтобы надписи на CheckBox"ах были те же самые, что и на Page2, но все флажки были сброшены и пользователь выставлял их уже заново.
Page1, наверное, имелся ввиду? Про Parent, по моему, это не то. Вам либо сабклассинг нужен, чтобы генерить странички уже готовые, либо сразу создайте вторую (со всеми нужными контролами) и переключайтесь на неё (почему нет?). В принципе и Ваш запасной вариант не плох.
0
34 / 31 / 1
Регистрация: 06.01.2017
Сообщений: 300
13.01.2017, 21:43  [ТС]
В процессе поиска наткнулся на одну книгу, в которой утверждается следующее:
1. свойство Parent изменять нельзя.
2. можно изменять свойство Container
3. в качестве контейнера могут выступать:
---- Form
---- Frame
---- Picture
---- Toolbar

Иначе говоря, поставленная мной задача неразрешима.

Добавлено через 16 минут
Да, разумеется Page1.
========================
Да, я перешел к этому варианту.
Добавил ещё одну закладку, а Frame вывел с Page1 на Form.
Теперь при переходе на закладки PageN всегда виден Frame. MultiPage сделал во всю ширину Form, но невысоким.
Первая закладка - загрузка головной модели, на Frame пишутся характеристики модели - "Объект №0" и полное имя файла.
При переходе на вторую закладку появляется кнопка "Создать вторичные данные", а на Frame выписаны все объекты, выписаны прямо в Caption соответствующих CheckBox"ов, если вторичные данные какого-то объекта уже есть, то флажок CheckBox"а снят, а сам он выкрашен в коричневый цвет, если вторичных данных у объекта нет, то флажок выставлен, а соответствующий CheckBox выкрашен в жёлтый цвет.
Третья закладка имеет кнопку "Создать таблицы", а на Frame все то же самое, но на всех объектах флажки сняты, пользователь сам выставляет нужные флажки.
Четвертая закладка имеет кнопку "Задать зависимости" - имеются в виду зависимости между строками и столбцами таблиц, а на Frame опять все флажки Checkbox"ов сняты, это делается потому, что в разных объектах могут быть нужны разные зависимости.
Пояснение к последнему - например, в одной таблице 62 строки. Скажем, какие-то три параметра связаны зависимостью типа Z26 = Z3*(1-Z45/100). Соответственно, есть три варианта зависимостей:
1. Z26 = Z3*(1-Z45/100)
2. Z45 = 100*(1-Z26/Z23)
3. Z3 = Z26/(1-Z45/100)

В одних объектах нужны одни зависимости между строками №№3, 26, 45, в других объектах другие.

Frame один, и набор CheckBox"ов один, а их состояние запоминается в соответствующих одномерных массивах, либо в одно двумерном массиве, и при переходе с одной закладки на другу состояние выставляется заново.
0
Эксперт NIX
3305 / 933 / 201
Регистрация: 14.01.2013
Сообщений: 4,769
14.01.2017, 10:35
Ну, вот! А Вы говорили невыполнимая задача
0
34 / 31 / 1
Регистрация: 06.01.2017
Сообщений: 300
14.01.2017, 12:34  [ТС]
Ну правильно, она и невыполнимая - нельзя динамически поменять Parent.
Поэтому я поменял на этапе дизайна, это делается перетаскиванием мышью.
====================================

А в общем, хорошо, что не получилось, и не зря смена Parent запрещена. Не надо в такие тонкие структуры лезть необдуманно ...

Добавлено через 4 минуты
https://www.cyberforum.ru/cgi-bin/latex.cgi?{Z}_{26}={Z}_{3}*\left(1-{Z}_{45}/100 \right)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.01.2017, 12:34
Помогаю со студенческими работами здесь

Изменение свойства при изменении другого свойства
Предположим у меня есть товар,у которого есть несколько размеров и к каждому размеру привязана цена.Как сделать,к примеру я выбираю размер...

Вызов $parent.$parent.Mymethod() из двух ng-repeat соотвено в ng-mouseenter
Привет, есть два ng-repeat <div ng-repeat='a in aa'> <div ng-repeat='b in bb'> <div...

Изменение ObservableCollection: автоматическое изменение свойства при изменении в DataGrid
Здравствуйте. Имеется коллекция на 35 параметров. Значения 2 главных параметров складываются из определенных сумм остальных. Вывожу...

Изменение свойства по id
Приветствую, у меня вопрос возник, хочу ширину изменять от 0 до 300 у дива, но она не изменяется... подскажите, в чем ошибка по коду? ...

Изменение свойства Visible
Доброго времени суток. Как сделать так что бы, при нажатии на кнопку(Buttom1) изменялось свойство видимости других обектов( например...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru