Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 395
от 21.10.2006, 11:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 205, Экспертов: 31
В номере:Вопросов: 1, Ответов: 1


Вопрос № 59084: Уважаемые эксперты. У меня возникла такая проблема. Короче есть программа, где в ПикчерБоксе нужно чтобы по клику мышки в любом месте этого бокса появлялся чёрный кружок. Только дело в том, что этих кружков должно быть определённое количество и не бо...

Вопрос № 59.084
Уважаемые эксперты. У меня возникла такая проблема. Короче есть программа, где в ПикчерБоксе нужно чтобы по клику мышки в любом месте этого бокса появлялся чёрный кружок. Только дело в том, что этих кружков должно быть определённое количество и не больше. Я это решил таким способом:

Private Sub Pict_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

pp = pp + 1 ' рр - это глобально объявленная переменная
'IshDan.ChisloOtv - 'это забитое в структуру заданное число кружков
If pp = IshDan.ChisloOtv Then Command2.Visible = True
If pp > IshDan.ChisloOtv Then Exit Sub

mm = mm + 1 ' тоже глобальная переменная
ReDim Preserve mx(IshDan.ChisloOtv)' переобъявление глобальн.массива
ReDim Preserve vy(IshDan.ChisloOtv)
mx(mm) = X 'полученные координаты на каждый клик забиваются в массив и в дальнейшем используются
vy(mm) = Y
Pict.DrawWidth = 8 'толщина линии
Pict.Drawstyle="0" 'сплошная
Pict.Circle (X, Y), 3, RGB(0, 0, 0)
End Sub
Проблема в том что по первому разу это всё нормально работает, но если не закрывая программу это запустить ещё раз, то не работает. Пробовал:
If pp > IshDan.ChisloOtv Then pp = 0:mm = 0: Exit Sub
Тогда эта строчка на выход из события срабатывает только на один клик мышки, а со второго снова ставятся кружки. Пробовал вместо глобальных pp и mm ставить структурные: IshDan.pp и IshDan.mm
тогда не записывается
mx(mm) = X
vy(mm) = Y
Наверное не знаю какой-то мелочи, но вся прога срабатывает только на один раз, потом приходится её перезапускать, а это не очень удобно...
Отправлен: 16.10.2006, 11:24
Вопрос задал: Lesnoi (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Patriotix-N
Здравствуйте, Lesnoi!
Обнулять следует в той процедуре, из которой вызывается повторный цикл кликов.
Т.е. когда вы "не закрывая программу это запускаете ещё раз", то перед запуском вам следует обнулить перменные.
---------
Краткость - сестра таланта.
Ответ отправил: Patriotix-N (статус: 2-ой класс)
Ответ отправлен: 16.10.2006, 12:27
Оценка за ответ: 5
Комментарий оценки:
Действительно, всё правильно... Вот такая мелочь... Да и сам косячок нашёл: глобальные переменные объявил не в модуле, а в форме...


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное