Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Панель инструментов и кнопки на ней (+ путь от контрола к главной форме) / 25 сообщений из 40, страница 1 из 2
28.07.2004, 13:21:50
    #32625070
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
Уважаемые!
Точно знаю, что был топик, в котором обсуждалась проблема размещения кнопок на тулбаре, насколько я помню, там еще указывалась причина — чтобы при нажатии на кнопку фокус с контрола не уходил.
Не могу никак найти.
Люди, у кого поиск работает лучше, чем у меня, киньте ссылкой, пожалуйста.
...
Рейтинг: 0 / 0
28.07.2004, 15:01:26
    #32625451
RVI
RVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
...
Рейтинг: 0 / 0
28.07.2004, 15:05:16
    #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
28.07.2004, 15:07:22
    #32625481
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
RVI, не, не то.
Мне, собссно, было просто лениво хелп читать, но пришлось.
...
Рейтинг: 0 / 0
28.07.2004, 15:52:36
    #32625631
Темный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
fundddМне, собссно, было просто лениво хелп читать...
Это плохо :)
...
Рейтинг: 0 / 0
28.07.2004, 18:01:33
    #32626018
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
но пришлось же :)
...
Рейтинг: 0 / 0
30.07.2004, 08:17:40
    #32628385
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
сорри, ап.
...
Рейтинг: 0 / 0
31.07.2004, 05:16:35
    #32630303
funddd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
Хм, я наверное, не очень четко вопрос сформулировал.

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

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

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

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

в случае с подчиненной формой обращение Forms(Screen.Activeform).Controls(Screen.ActiveControl) не проходит
MsgBox Screen.ActiveControl.Name
...
Рейтинг: 0 / 0
31.07.2004, 15:34:54
    #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
31.07.2004, 15:40:48
    #32630408
Geo
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
31.07.2004, 15:48:54
    #32630412
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
GeoОй ли? :)
А запустить лениво было?

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

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

Geoа в frm - на содержащую его форму, если таковая есть.
Что значит если? Контрол не может быть без формы. Или ты имеешь в виду случай, когда он в отчете?
...
Рейтинг: 0 / 0
31.07.2004, 15:52:01
    #32630415
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
Geo2ВС
Если контрол находится на вкладке, то в frm у тебя будет класться ссылка на вкладку, которая для контрола будет .parent'ом. И ошибка возникнет.
А. Теперь понял. Да, этот случай надо обработать отдельно. А также, видимо, случай, когда контрол сидит в группе.
...
Рейтинг: 0 / 0
31.07.2004, 15:52:01
    #32630416
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
Я имею в виду случай, например, если в форме нет записей, и запрещено добавление.
...
Рейтинг: 0 / 0
31.07.2004, 15:53:05
    #32630417
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
GeoЯ имею в виду случай, например, если в форме нет записей, и запрещено добавление.
Тогда ActiveControl сразу вернет ошибку, наверно...
...
Рейтинг: 0 / 0
31.07.2004, 15:55:53
    #32630418
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
Вернет, поэтому ее тоже надо ловить.
...
Рейтинг: 0 / 0
31.07.2004, 16:01:59
    #32630419
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
ОК, сейчас сделаю другую версию.
...
Рейтинг: 0 / 0
31.07.2004, 16:10:30
    #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
31.07.2004, 16:48:29
    #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
31.07.2004, 17:18:04
    #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
31.07.2004, 17:20:27
    #32630440
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Панель инструментов и кнопки на ней (+ путь от контрола к главной форме)
Саныч, извини. Видно я не читатель по субботам. По остальным дням тоже.
Пошел глазки протирать...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Панель инструментов и кнопки на ней (+ путь от контрола к главной форме) / 25 сообщений из 40, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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