|
|
|
| Есть форма (MainForm) в ней контрол - подчиненная форма (SubForm). У контрола в свойстве объект-источник = Form1 (другая форма).
Вопрос - как форме Form1 узнать имя контрола (SubForm), к которому она прикручина? | |
|
| |
|
|
|
| из субформы получаем ссылку на главную форму (свойсво Parent)
в главной форме перебираем все контролы
если находим контрол подформа, у нее проверяем имя объекта истоника, если совпадает с именем нашей формы - это он, если нет - берем следующий контрол. | |
|
| |
|
|
|
| Эта форма представляет из себя календарь на год. В форме содержится 12 подформ, которые в качестве объекта источника используют одну и туже форму, которая в свою очередь является календарем на месяц. Подформы с главной формой не связаны. | |
|
| |
|
|
|
| что из перечисленного мешает использовать предложенный вариант? | |
|
| |
|
|
|
| свойство объект-источник у всех контролов с подформой имеет одно и тоже значение. Я для каждого месяца использую форму ввиде календаря. | |
|
| |
|
|
|
| я все равно не понимаю проблемы. Найду комп в виндами, напишу функцию
добавлено.
кажется начал понимать.
А для подформ вы разные условия фильтра используете?
почему не одна подформа с календарем на год? | |
|
| |
|
|
|
| Попробую объяснить еще раз. У меня есть готовая форма календаря на месяц (MonthCalendar). Я делая новую форму и создаю в ней двенадцать (для каждого месяца) контролов для вставки подчиненной формы (назовем их Calendar1, Calendar2, ....... Calendar12). В свойстве объект-источник я указываю у всех контролов MonthCalendar. Теоретически в каждом контроле Calendar1, 2,3,... 12 должен открыться свой экземпляр формы MothCalendar. По событию OnOpen формы MonthCalendar выполняется процедура, которая настраивает вид календаря в зависимости от месяца. А для этого мне необходимо узнать к какому контролу прикручена форма с календарем.
Я придумал использовать свойство Tag. Код примерно будет выглядеть так:
For Each ctl In Me.Parent.Controls
If ctl.Name = "Calendar" & ctl.Tag Then
intMonth = ctl.Tag
Call FillMonthCalendar(intMonth) 'вызываю процедуру настройки календаря
EndIf
Next
|
| |
|
| |
|
|
|
| 12 раз прошерстить все контролы главной формы?
Вы там греетесь от процессора что-ли?
Из годовой формы в цикле от 1 до 12 вызывайте FillMonthCalendar(intMonth) объектов контролов "Подчиненная форма".
3 строчки кода и никаких переборов коллекции. | |
|
| |
|
|
|
| А черт - глубокая мысль....... | |
|
| |
|
|
|
|
почему не одна подформа с календарем на год?
|
365 контролов в форме? | |
|
| |
|
|
|
| попробую использовать свойство Tag контрола с подчиненной формой. | |
|
| |
|
|
|
| Ваше право. но ничего не мешает написать универсальную функцию не требующую дополнительных данных. | |
|
| |
|
|
|
| Если это нужно знать в момент, когда фокус в форме MainForm на контроле "Подчиненная форма", то
Me.Parent.ActiveControl.Name | |
|
| |
|
|
|
|
Из годовой формы в цикле от 1 до 12 вызывайте FillMonthCalendar(intMonth) объектов контролов "Подчиненная форма".
|
Ура!! Все получилось!!!! Всем огромное спасибо за помощь!!!! | |
|
| |