спасибо за все вышеперечисленное. Посмотрим на это и, надеюсь, попытаться найти решение, ура.

аюсь вызвать событие, когда пользователь возвращает фокус приложению Access, когда открыта определенная форма. Следующее событие, похоже, не запускается вообще.

Private Sub Form_GotFocus()
    Call crtListDirectory
End Sub 

Есть ли у какого-либо органа какие-либо идеи относительно того, как я мог бы вызвать это событие, и когда / как событие Form_GotFocus действительно инициируется.

Заранее благодарю за любую помощь

Ноэль

 Lord Peter11 янв. 2011 г., 17:50
@glinch. Следующая (старая) ветка объясняет проблему -pcreview.co.uk/forums/thread-1078416.php - но не предлагает рабочего решения. Сожалею.
 noelmcg11 янв. 2011 г., 17:43
@ Лорд Питер попытался использовать Активировать, если вы видите мой комментарий ниже.
 David-W-Fenton11 янв. 2011 г., 23:33
Что делает crtListDirectory и зачем вам это нужно делать, когда вы возвращаетесь в Access / или в эту конкретную форму?
 noelmcg11 янв. 2011 г., 18:11
Убирайся! Ааа, ну, мне придется попытаться обойтись, спасибо за ссылку на объяснение @Lord Peter
 Lord Peter11 янв. 2011 г., 17:09
Попробуйте использовать событие Активировать форму?

Ответы на вопрос(1)

Решение Вопроса

Форма может получить фокус только в том случае, если все видимые элементы управления в форме отключены или в форме нет элементов управления.

Вы можете попробовать активировать.

РЕДАКТИРОВАТЬ комментарии

Единственный способ увидеть то, что вы, похоже, хотите, - это API-интерфейсы, которые немного беспорядочные. Чтобы продемонстрировать это, вам понадобится форма с двумя элементами управления Text0 и Text2 (это имена по умолчанию). Установите интервал таймера на что-то подходящее, скажем, 2000, а событие таймера на:

Private Sub Form_Timer()
Dim lngWin As Long
Dim s As String

    'This is just a counter to show that the code is running
    Me.Text2 = Nz(Me.Text2, 0) + 1

    'API
    lngWin = GetActiveWindow()
    s = GetWinName(lngWin)

    If s = "Microsoft Access" Then
        If Me.Text0 = "Lost Focus" Then
            Me.Text0 = "Focus returned"
        End If
    Else
        Me.Text0 = "Lost Focus"
    End If

End Sub

Теперь вам понадобится модуль для:

Option Compare Database

Declare Function GetActiveWindow Lib "user32" () As Integer
Declare Function GetWindowText Lib "user32.dll" Alias _
"GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As _
String, ByVal cch As Long) As Long
Declare Function GetWindowTextLength Lib "user32" Alias _
"GetWindowTextLengthA" (ByVal hwnd As Long) As Long

Function GetWinName(hw As Long)
    Dim lngText As Long ' receives length of text of title bar
    Dim strWinName As String ' receives the text of the title bar
    Dim lngWinText As Long ' receives the length of the returned string

    lngText = GetWindowTextLength(hw)
    strWinName = Space(lngText + 1)
    lngWinText = GetWindowText(hw, strWinName, lngText + 1)
    strWinName = Left(strWinName, lngWinText)
    GetWinName = strWinName
End Function

Это все очень, очень грубо, но это дает вам повод для ссоры.

 noelmcg11 янв. 2011 г., 17:42
Извините, я должен был проверить помощь более тщательно. Gotfocus действительно не применим тогда в этом случае. Я пытался использовать Activate, но это, похоже, срабатывает только тогда, когда я активирую форму после возвращения из другой формы, находясь в Access. Мне нужно, чтобы событие сработало, когда я вернусь к использованию Access из другого приложения.
 Fionnuala11 янв. 2011 г., 19:13
Хорошо, я добавил несколько заметок.
 noelmcg12 янв. 2011 г., 13:42
спасибо за все вышеперечисленное. Посмотрим на это и, надеюсь, попытаться найти решение, ура.

Ваш ответ на вопрос