|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
Добрый день, форумчане! Понадобилось в небольшом приложении, чтобы по нажатию кнопки на форме появлялась всплывающая форма рядом с полем. Нашел на просторах всем известный календарик и попытался переделать его под эту задачу. Получилось, только если поле расположено непосредственно на форме, а вот если поле расположено на вкладке, то появляется ошибка "Объект не поддерживает свойство или метод". Вроде бы нет никакой разницы при обращении к полю просто в форме или к полю в наборе вкладок, но не работает. Уже сломал себе мозг. Примерчик во вложении. Может кто-нибудь помочь? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 10:29 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
ProfiM, 1. Попробуйте вставить в вкладку подчинённую форму и работать с ней. 2. Я бы на вашем месте создал глобальный модуль и основную часть кода переместил туда. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 10:42 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
alvk, 1. Как реализовать это с подчиненной формой, я знаю из того же примера с календарем. Но для моего случая она не нужна, т.к. на форме в других вкладках уже присутствуют другие субформы и мне не хотелось бы перегружать основную форму "лишними". 2. После решения проблемы с ошибкой, естественно, будет написан модуль, т.к. для разных полей мне надо будет показывать несколько разных форм. Есть еще какие-нибудь идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 10:53 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
ProfiM, Вместо свойства Parent используйте функцию для нахождения формы контрола: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Почему вы используете Let для объекта? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 12:46 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
Старый ворчун, Спасибо, а можете показать, как это использовать в коде? Я не специалист и только учусь. По поводу Let - мы же присваиваем новые значения свойствам контрола. Или я неправильно понял описание Let? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 13:49 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
Старый ворчун, Разобрался. Все работает. Еще раз большое спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.07.2012, 14:20 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
Снова прошу помощи по этой теме. Нужно сделать универсальный метод, т.е. допустим на форме имеется несколько полей, напротив каждого из которых расположена кнопка, при нажатии на которые открывались свои формы (а не одна, как в примере с календарем). В модуль переношу следующий код: Option Compare Database Option Explicit Public f As Form Public cntExportControl As Control Public Property Let ExportControl(ByVal vNewValue As Control) Dim intRecordSelectorsWidth As Integer 'Ширина области выделения (вроде как всегда 300) Dim intHeaderHeight As Integer 'Высота заголовка Dim intBorderWidth As Integer 'Толщина рамки Dim intProoferTop As Integer 'Корректировка по горизонтали Dim intProoferWidth As Integer 'Корректировка по вертикали Set cntExportControl = vNewValue With ParentForm(cntExportControl) If .RecordSelectors Then intRecordSelectorsWidth = 300 intBorderWidth = (f.WindowWidth - f.InsideWidth) / 2 * -1 intProoferTop = .WindowTop + cntExportControl.Top + .CurrentSectionTop + cntExportControl.Height + intHeaderHeight intProoferWidth = .WindowLeft + cntExportControl.Left + intRecordSelectorsWidth + intBorderWidth + .CurrentSectionLeft intProoferWidth = intProoferWidth - f.WindowWidth + cntExportControl.Width f.Move intProoferWidth, intProoferTop End With End Property Public Function ParentForm(ByVal vCtl As Control) Dim oParent As Object Set oParent = vCtl Do Set oParent = oParent.Parent If TypeOf oParent Is Form Or TypeOf oParent Is Report Then Exit Do Loop Set ParentForm = oParent End Function В вызывающей форме по событию нажатия кнопки: Private Sub cmd1_Click() DoCmd.OpenForm "Form2", , , , , acHidden Set f = Forms("Form2") Dim s$: s = f.Name Forms(s).ExportControl = Me.txtTest 'вот здесь получаю ошибку Forms(s).Visible = True Set f = Nothing End Sub Получаю ошибку Run-time error 2465, Application-defined or object-defined error Гуру, напишите, пожалуйста, в чем ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2012, 13:38 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
В форме, которая открывается, разве есть ExportControl ? Forms(s).ExportControl ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2012, 13:41 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
авторPublic Property Let ExportControl(ByVal vNewValue As Control) проперьтя, вроде, Set должна быть ... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2012, 13:43 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
Программист-Любитель, Хмм, нет. Есть в отдельном модуле как public. Суть я понял, натолкнете на мысль, как исправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2012, 13:51 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
qwerty112, Нет, здесь дело не в этом. Когда код находится в модуле самой формы, то все работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2012, 13:52 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
Хотите чтобы было в формах - всавляйте в каждую. Либо делайте свой класс и внем храните ссылку на обычную форму без добавленных пропертиз. Либо программно открываете форму в режиме конструктора и вкорячиваете в нее вба код, добавляющий свойтство. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2012, 13:54 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
ProfiMqwerty112, Нет, здесь дело не в этом. Когда код находится в модуле самой формы, то все работает. "поучи жену щи варить !" (с) авторProperty Let Statement Declares the name, arguments, and code that form the body of a Property Let procedure, which assigns a value to a property. Property Set Statement Declares the name, arguments, and code that form the body of a Property procedure, which sets a reference to an object. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2012, 13:59 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
qwerty112, Я нисколько не претендую на углубленное знание предметной области. В этом деле я новичок. Если Вам станет легче от осознания своего превосходства в вопросе владения навыками программирования VBA, то я их признаю и нисколько не оспариваю. Что касается Вашего совета, то он не помог. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2012, 15:45 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
Программист-Любитель, Спасибо за совет! Сейчас мне действительно проще будет держать такой код в каждой форме, благо их немного. Надеюсь, что когда дело дойдет до оптимизации кода, моих знаний уже будет достаточно, чтобы сделать универсальный метод. Еще раз спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2012, 15:48 |
|
всплывающая форма рядом с полем
|
|||
---|---|---|---|
#18+
Подниму старую тему, чтобы не создавать новую. Мне нужно в табличной форме вызывать форму календаря по двойному клику мыши. Координаты отрывающегося календаря нахожу таким путем: координату по вертикали тут все просто Код: vbnet 1.
с координатой по горизонтали посложнее Код: vbnet 1.
где Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Все это работает хорошо до тех пор, пока не получается таблица с большим количеством колонок, приходится прокручивать колонки вправо, получается, что колонки скрываются в форме, но функция расчитывает полную сумму всех колонок до выделенной. Это приводит к тому, что календарь может открыться правее нужного поля, либо за пределами экрана, что вызовет ошибку. Пытаюсь найти свойство поля на подобии ColumnHidden , показывающее, что поле было прокручено в сторону и на экране его сейчас не видно. Так же это актуально для закрепленных столбцов, когда прокручиваются средние колонки. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2016, 13:09 |
|
|
start [/forum/topic.php?fid=45&msg=39148288&tid=1614061]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 169ms |
0 / 0 |