powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / имитация нажатия на форме экселя
12 сообщений из 12, страница 1 из 1
имитация нажатия на форме экселя
    #38882694
занудка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
7, 2007
в книге есть форма, на ней кнопки, списки, List/ComboBox и т.д.....
Проблема:
хочу написать тест проверки, для этого в коде надо прописать имитацию:
нажатия кнопки

выделение строк в ListBox(приход)....
Код: vbnet
1.
2.
приход.Selected(10)   ' задаю выделенную строку
Run "приход_DblClick" ' запускаю макрос 


не получается...
Исправьте, плз, или подскажите
Спасибо
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38882913
Казанский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. У формы ShowModal=False
2. В коде формы у нужных процедур изменить Private Sub ... на Public Sub ...
3. При наборе имени процедуры с точкой эти паблики появятся в выпадающем списке как методы -> MyForm.приход_DblClick
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38883031
занудка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Казанский,

Спасибо, но форма должна оставаться модальной - с нее и запуск теста
MyForm.приход_DblClick пробовал - не проходит
А за паблик - лтдельное спасибо, забыл - уже когда-то нгаступал на эти грабли
исчо раз спасибо
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38884801
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так и получается.....
Кто подскажет - как используются параметры ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Мне нужно обратиться к нажатию в Form1.ListBox1_DblClick(????? ?????? ....????) но какие параметры надо ввести - не понимаю....
подскажите, плз.
Спасибо
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38885111
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stepler,

Никакие не надо и никакие нельзя. Эти параметры передаются формой в событие и не допускается передача своих параметров.
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38885113
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_Prist,

А сам параметр Cancel отвечает за действие ОТМЕНЫ события.
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38885513
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
  Dim x As MSForms.ReturnBoolean
  Call Form1.ListBox1_DblClick(x)
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38885568
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необязательно.
Можно передать, например, 0, если проверка проводиться не будет.
А можно в объявлении указать Optional и вообще ничего не передавать.
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38885589
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Необязательно.
Можно передать, например, 0, если проверка проводиться не будет.
А можно в объявлении указать Optional и вообще ничего не передавать.
Нет. Проверьте сами
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38885595
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давно не программировал, а проверять не на чем.
Однако не вижу причины, почему не будет работать.
При написании классов или ActiveX я в подобных событиях всегда объявлял Optional Cancel As Boolean = False и это прекрасно работало.
В декларации события указано ByVal, поэтому передавать можно любой тип данных, хоть Null.
Ну а Optional структуру декларации не меняет, внутри процедуры вообще не имеет значения, аргумент был Optional или нет.
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38885897
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Однако не вижу причины, почему не будет работатьПотому что данные события на форме можно сказать зарезервированы и не подлежат изменению. Это внутри своих собственных процедур Вы можете добавлять и изменять аргументы - здесь так не получится. Можете передать аргумент строго типизированный, что в большинстве случаев не надо - проще прямо внутри процедуры сделать все нужные обработки(по количеству кода будет столько же).
Alibek B.В декларации события указано ByValByVal не разрешает передать любой тип данных. Он лишь указывает будет ли создан новый экземпляр в памяти или же обращение будет идти к первоначально созданному. Он позволит, если изначально процедура принимает параметр As Variant. А т.к. там уже строго указан тип данных - то при попытке передачи параметра с иным типом данных получите ошибку.

Вы все же сначала попробуйте свои советы на практике...Людей же в заблуждение вводите - будут сейчас тыркаться и получать ошибки.
...
Рейтинг: 0 / 0
имитация нажатия на форме экселя
    #38885961
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The_PristПотому что данные события на форме можно сказать зарезервированы и не подлежат изменению.
Действительно.
Видимо память подводит и я перепутал с самописными компонентами.

The_PristByVal не разрешает передать любой тип данных. Он лишь указывает будет ли создан новый экземпляр в памяти или же обращение будет идти к первоначально созданному
ByVal или ByRef означает, будет ли передаваться аргумент по значению или по ссылке.
Для скаляров передача по значению одновременно осуществляет приведение типов (если оно возможно).
MSForms.ReturnBoolean, как оказалось, является объектом (Class), а не перечислением (Enum), поэтому мой совет действительно невыполним.

The_Pristбудут сейчас тыркаться и получать ошибки.
Это не всегда плохо.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / имитация нажатия на форме экселя
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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