Вопрос № 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 Комментарий оценки: Действительно, всё правильно... Вот такая мелочь... Да и сам косячок нашёл: глобальные переменные объявил не в модуле, а в форме...