Неправильный вызов процедуры или аргумент - PullRequest
0 голосов
/ 26 ноября 2010

m получаю ошибку при использовании Text1.SetFocus ошибка неверный вызов процедуры или аргумент

Ответы [ 2 ]

1 голос
/ 26 ноября 2010

Если вы вызываете это из модуля, то есть не из кода формы, вам нужно сослаться на объект формы, где лежит text1.Еще одна вещь, которую вам, возможно, понадобится сделать, - это получить несколько таблеток для настойчивости, чаще нажимать клавишу F1 и использовать слова в изобилии при обращении за помощью.

0 голосов
/ 18 апреля 2012

Вам нужно сослаться на Text1.SetFocus из Form_Activate, а не из Form_Load -

http://www.vb6.us/tutorials/understanding-forms-vb6-tutorial

Form_Load против Form_Activate

В событии Form_Load вы обычно выполняете задачи типа инициализации, как и должны. Однако некоторые типы действий не могут быть выполнены в событии Load, поскольку форма полностью загружается только после завершения события Load. Во-первых, печать в форму не будет работать, когда выполняется событие Load. Кроме того, если вы попытаетесь установить фокус на конкретный элемент управления в форме во время события Load, вы получите сообщение «Ошибка времени выполнения« 5 »: недопустимый вызов процедуры или аргумент». Например, предположим, что у вас есть текстовое поле с именем Text1 в форме. Следующий код приведет к этой ошибке:

Private Sub Form_Load()

' other initialization stuff

Text1.SetFocus ' causes an error

End Sub

Причина ошибки заключается в том, что поскольку форма загружена не полностью, на ней нет ни одного элемента управления, и вы не можете установить фокус на элемент управления, который еще не доступен. Чтобы устранить эту проблему, вы должны использовать одно из других событий формы, например, событие «Активировать». (Когда VB загружает форму, он фактически циклически проходит через ряд событий, таких как: инициализация, загрузка, изменение размера, активация, GotFocus и Paint. Из них, вероятно, наиболее часто используются загрузка и активация.) Размещение кода установить фокус на элемент управления будет работать в событии Form_Activate:

Private Sub Form_Activate()

' other statements

Text1.SetFocus ' no problem here

End Sub

Предупреждение о событии активации: оно будет срабатывать всякий раз, когда ваше приложение переключается на эту форму. Например, если вы переключаетесь между Form1 и Form2, помните, что любой код, который вы можете иметь в событиях Activate для этих форм, будет выполняться при переключении на эту форму. Поэтому, если у вас есть код в событии Activate, который вы хотите выполнить только «в первый раз», вам нужно будет контролировать выполнение с помощью логического переключателя. Например, в общих декларациях вашей формы вы можете определить следующую переменную:

Private mblnFormActivated As Boolean ' will be initialized to False by default

Затем вы можете использовать этот переключатель в событии Activate следующим образом:

Private Sub Form_Activate()

If mblnFormActivated Then Exit Sub

' statements you only want to execute once, including the following
' statement to turn the switch on:

mblnFormActivated = True

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...