powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
40 сообщений из 40, показаны все 2 страниц
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32625070
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые!
Точно знаю, что был топик, в котором обсуждалась проблема размещения кнопок на тулбаре, насколько я помню, там еще указывалась причина — чтобы при нажатии на кнопку фокус с контрола не уходил.
Не могу никак найти.
Люди, у кого поиск работает лучше, чем у меня, киньте ссылкой, пожалуйста.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32625451
RVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32625469
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ага, подразобрался.
Вопрос другой поймал:
Определяю screen.activeform.name и screen.activecontrol.name
потом с ними работаю всяко, все ОК.

Код: plaintext
1.
2.
3.
a=screen.activeform.name 
b=screen.activecontrol.name
...
forms(a).controls(b).value=...

Но если вдруг activecontrol оказывается на подчиненной форме? то ессесно, ничего не работает.

Вопрос: как бы покрасивше сделать?
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32625481
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RVI, не, не то.
Мне, собссно, было просто лениво хелп читать, но пришлось.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32625631
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fundddМне, собссно, было просто лениво хелп читать...
Это плохо :)
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32626018
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но пришлось же :)
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32628385
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сорри, ап.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630303
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, я наверное, не очень четко вопрос сформулировал.

В общем, звучит он так:
Как определить полное имя контрола, начиная с Forms!
?
или так:
Как определить, находится ли контрол на подчиненной форме?
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630323
___Dmitry___
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Примерно так
Forms("Name_of_Parent_Form")!Name_Of_Child_Form.Form.Name_Of_Controll
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630397
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ООЧЧЧЕНь содержательный ответ!

Смею уверить, что, хоть я и полный дуб, FAQ по Access и по его формам я прочитал.

Меня не интересует, как ОБРАТИТЬСЯ к контролу.
Меня интересует, как УЗНАТЬ его имя.

Я делаю это через Screen.Activeform и Screen.ActiveControl.
Но в случае с подчиненной формой обращение Forms(Screen.Activeform).Controls(Screen.ActiveControl) не проходит, потому что не указана подчиненная.
Извиняюсь, что коряво спрашиваю.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630401
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fundddМеня не интересует, как ОБРАТИТЬСЯ к контролу.
Меня интересует, как УЗНАТЬ его имя.

в случае с подчиненной формой обращение Forms(Screen.Activeform).Controls(Screen.ActiveControl) не проходит
MsgBox Screen.ActiveControl.Name
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630402
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот эта процедура выдает список всех форм, начиная с самой внутренней:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub Try()

Dim f As Form

On Error GoTo err_Try

Set f = Screen.ActiveControl.Parent
Do
    Debug.Print f.Name
    Set f = f.Parent
Loop

err_Try:
Exit Sub

End Sub
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630408
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир СанычВот эта процедура выдает список всех форм, начиная с самой внутренней:
...
Ой ли? :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  Dim ctl As Access.Control
  Dim frm
  
  On Error Resume Next
  Set ctl = Screen.ActiveControl
  Set frm = ctl.Parent
  If Err.Number <>  0  Then Exit Function
  If frm.Form.Name = "" Then
  End If
  Do While Err.Number <>  0  And Len(frm.Name) >  0   ' в frm находится, например, ссылка на вкладку
 
    Set frm = frm.Parent
    Err.Clear
    If frm.Form.Name = "" Then
    End If
  Loop
После этого в ctr живет ссылка на активный контрол, а в frm - на содержащую его форму, если таковая есть.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630412
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
GeoОй ли? :)
А запустить лениво было?

GeoПосле этого в ctr живет ссылка на активный контрол, а в frm - на содержащую его форму, если таковая есть.
В frm - на самую внешнюю из форм. Но по дороге цикл проходит через их все, начиная с самой внутренней. (По крайней мере в том варианте, который я привел.)
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630413
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВС
Если контрол находится на вкладке, то в frm у тебя будет класться ссылка на вкладку, которая для контрола будет .parent'ом. И ошибка возникнет.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630414
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
P.S.

Geoв frm находится, например, ссылка на вкладку
На вкладку - не может быть. Вкладка - не форма.

Geoа в frm - на содержащую его форму, если таковая есть.
Что значит если? Контрол не может быть без формы. Или ты имеешь в виду случай, когда он в отчете?
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630415
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Geo2ВС
Если контрол находится на вкладке, то в frm у тебя будет класться ссылка на вкладку, которая для контрола будет .parent'ом. И ошибка возникнет.
А. Теперь понял. Да, этот случай надо обработать отдельно. А также, видимо, случай, когда контрол сидит в группе.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630416
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имею в виду случай, например, если в форме нет записей, и запрещено добавление.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630417
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
GeoЯ имею в виду случай, например, если в форме нет записей, и запрещено добавление.
Тогда ActiveControl сразу вернет ошибку, наверно...
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630418
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вернет, поэтому ее тоже надо ловить.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630419
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ОК, сейчас сделаю другую версию.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630421
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот она.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub Try()

Dim f As Object
On Error GoTo err_Try
Set f = Screen.ActiveControl
Do
    Debug.Print TypeName(f), f.Name
    Set f = f.Parent
Loop

err_Try:
Exit Sub

End Sub

Если текущего контрола нет, то сразу выход по ошибке. В предыдущей версии тоже так было.
Если текущий контрол в группе, то Screen.ActiveControl сразу возвращает группу, т.ч. проблемы нет.
Если текущий контрол на вкладке, то проверяется TypeName(f).

Пример запуска:

Код: plaintext
1.
2.
3.
4.
5.
Try
Textbox       t
Page          p2
TabControl    TabCtl10
Form_f        f
Form_ff       ff
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630426
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот оно. Вроде проверил на разных случаях - работает. Выдает полный путь к текущему контролу.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Function CurrentControlPath() As String

Dim f As Object, f0 As Object, c As Control, s As String

On Error GoTo err_CCP

Set f = Screen.ActiveControl
s = f.Name
Do
    Set f0 = f
    Set f = f.Parent
    Select Case TypeName(f)
        Case "Page", "TabControl"
        Case Else
            For Each c In f
                If TypeName(c) = "SubForm" Then If c.Form Is f0 Then s = c.Name & ".Form!" & s
            Next
    End Select
Loop

err_CCP:
If s = "" Then
    CurrentControlPath = ""
Else
    CurrentControlPath = "Forms!" & f.Name & "!" & s
End If
Exit Function

End Function
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630439
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, ты же вначале ПРОЩЕ написал, зачем исправил?

У тебя вот как было

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
On Error Resume Next
  
   Dim tObj As Object
   Dim strCandidate As String

   Set tObj = ActiveControl

   Do While Not tObj Is Nothing
     Set tObj = tObj.Parent
     If Err.Number <>  0  Then
       Err.Clear
       Exit Do
     End If
     
      'кто не любит лайк - поменяет на комбинацию Left, StrComp
 
     If TypeName(tObj) Like "Form*" Then
       strCandidate = tObj.Name
     End If
       
   Loop

   sRet = strCandidate
   Debug.Print sRet
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630440
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Саныч, извини. Видно я не читатель по субботам. По остальным дням тоже.
Пошел глазки протирать...
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630441
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Глазки протер и возник вопрос.
Саныч, вот это

If TypeName(c) = "SubForm"

работать не будет - нет такого типа - SubForm
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630443
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Victoshaработать не будет - нет такого типа - SubForm
У меня работает. Видать, нечистая сила сегодня со мной...
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630444
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а на вопрос в первоначальной постановке - определить, накодится ли активный контрол на подформе, ответит такая функция

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Public Function IsControlOnSubForm() As Boolean
  On Error Resume Next
  
   Dim tObj As Object
   Dim formLevel As Long
   
   
   Set tObj = ActiveControl
   
   Do While Not tObj Is Nothing
     Set tObj = tObj.Parent
     
     If Err.Number <>  0  Then
       Err.Clear
       Exit Do
     End If
     
     If TypeName(tObj) Like "Form*" Then
       formLevel = formLevel +  1 
     End If
       
     IsControlOnSubForm = formLevel >  1 
   Loop
   
   

End Function
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630578
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мать-мать-мать!!!

Ух ты!

Вот спасибо!

Да, в принципе, у меня был частный случай, но и за глобальное ее решение, и за "IsControlOnSubForm = formLevel > 1" спасибо!





NB. Форум — плохая вещь. Не будь его, сидел бы неделю, и допер бы до отлова ошибки. А так, вопрос написал, ручки на пузе сложил, сиди и жди, пока добрые зубры все за тебя сделают. Плохо это. Мозги, получается, не нужны — достаточно того, что они есть у Victosh'и и ВС. Горе мне.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630584
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victosha
...
If TypeName(tObj) Like "Form*" Then
...


Маленькое уточнение: в A97 TypeName(tObj) для формы вернет IForm_ИмяФормы
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630653
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Serge GAvrilov
понял

2 funddd

сочтемся - мне тоже ручки на пузе рано или поздо сложить придется...

А идея - это Geo+Саныч
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630743
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, столкнулся еще с проблемой отлова пробелов и зажима их в квадратные скобки.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32630760
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ээээ....
а как бы это содержимому контрола, полное имя которого мы знаем, присвоить значение какое-нить? Через Eval оно только достается... Или нет?
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32631034
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
fundddээээ....
а как бы это содержимому контрола, полное имя которого мы знаем, присвоить значение какое-нить? Через Eval оно только достается... Или нет?
Наверно, надо этот полный адрес не в стринг запихивать, а по частям в коллекцию или в массив. И обращаться так:

forms(переменная)(переменная).form(переменная).form(переменная).form(переменная)
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32631099
AlTis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 funddd

Не знаю полностью задачу, но может подойдёт:

Код: plaintext
1.
2.
3.
4.
Dim ctl as control

set ctl = screen.activecontrol
ctl.value=...

+ обработчик ошибок
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32631133
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2ВС: я по этому принципу и делал сначала. :)

2AITis: ты полностью убедил меня в моем идиотизме.
Правда, я уже две ночи не спал.

Спасибо всем!
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32631140
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир Саныч fundddээээ....
а как бы это содержимому контрола, полное имя которого мы знаем, присвоить значение какое-нить? Через Eval оно только достается... Или нет?
Наверно, надо этот полный адрес не в стринг запихивать, а по частям в коллекцию или в массив. И обращаться так:

forms(переменная)(переменная).form(переменная).form(переменная).form(переменная)

Если не секрет, а зачем это?
Неужели нельзя в данном случае написать просто
screen.activecontrol.value = "значение"
?
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32631149
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
:^) Geo прав. Я чешу левой рукой правое ухо.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32631221
Фотография funddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В тот момент, когда надо изменять значение, он уже не active.
...
Рейтинг: 0 / 0
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
    #32631233
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fundddВ тот момент, когда надо изменять значение, он уже не active.
Но в какой-то момент, например, в тот, где ты берешь его имя, он активный? Так запоминай не имя, а ссылку:

dim c as access.control
set c = screen.activecontrol
...
' переводим фокус еще куда-то
...
c.value = "значение"
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]