Возможно дурацкий вопрос, но... (использование переменной не объявленной в форме)
Кто-нибудь, пожалуйста, помогите разобраться с моей проблемой.
Заключается она вот в чем:
Есть у меня mdi форма, дочерняя форма с кнопками выбора инструмента рисования (далее панель) и форма с picturebox.
Логика такова:
Пользователь кликает по одной из кнопок на панели, в зависимости от кнопки, переменной tool приваивается определенное значение. Теперь, (допустим, при клике по picturebox) нужно вызвать определенную процедуру, которая зависит от переменной tool.
Но как это сделать? Где объявить эту переменную? В модуле пытался я объявить, но в формах ее не видно, в mdi форме тоже пытался объявлять и обращаться к ней из других форм таким образом if mdiform1.tool =..., но получается ошибка.
Всем зарание спасибо
Всем привет!
Кто-нибудь, пожалуйста, помогите разобраться с моей проблемой.
Заключается она вот в чем:
Есть у меня mdi форма, дочерняя форма с кнопками выбора инструмента рисования (далее панель) и форма с picturebox.
Логика такова:
Пользователь кликает по одной из кнопок на панели, в зависимости от кнопки, переменной tool приваивается определенное значение. Теперь, (допустим, при клике по picturebox) нужно вызвать определенную процедуру, которая зависит от переменной tool.
Но как это сделать? Где объявить эту переменную? В модуле пытался я объявить, но в формах ее не видно, в mdi форме тоже пытался объявлять и обращаться к ней из других форм таким образом if mdiform1.tool =..., но получается ошибка.
Всем зарание спасибо
Организуй в модуле процедуру обработки всех вариантов при помощи Select Case,и передавай в эту процедуру свою переменную параметром.
Public Sub Procedura(ByVal tool As Integer)
Select Case tool
Case 1
'Обработка первый вариант
Case 2
'Обработка второй вариант
Case 3
'Обработка третий вариант
End Select
End Sub
Что-то мне кажеться, что ты меня не правильно понял. ... Или я тебя...
-->Организуй в модуле процедуру обработки всех вариантов
Вариантов чего???
-->и передавай в эту процедуру свою переменную параметром.
А что делать с этой переменной дальше? Если ты предложил процедуру, которая уже выбирает чем рисовать на форме в зависимости от значения tool, то для начала, нужно как-то присвоить tool какое-нибудь значение.
Скрин вложу, может понятнее будет.
Где должна быть объявлена переменная tool я не знаю, но факт в том, что при клике по какой-нибудь из кнопок на панели (форме с кнопками), этой переменной должно присвоиться определенное значение, а уже, при клике по форме для рисования, нужно проверить чему равна эта переменная и вызват процедуру рисования того или иного объекта.
Спасибо Host!
Что-то мне кажеться, что ты меня не правильно понял. ... Или я тебя...
Если переменная tool у тебя - строка, тогда делай так:
Public Sub Procedura(ByVal tool As String)
Select Case tool
Case "pen"
'Обработка первый вариант-процедура рисования точек
Case "line"
'Обработка второй вариант - процедура рисования линий
Case "..."
'Обработка третий вариант - что там у тебя еще
End Select
End Sub
при нажатии на кнопку:
'выбран инструмент "pen"
Private Sub Button1_Click()
Procedura "pen"
End Sub
'выбран инструмент "line"
Private Sub Button2_Click()
Procedura "pen"
End Sub
и т.д.
--------------------------------------------------
Public Sub Procedura(ByVal tool As String)
Select Case tool
Case "pen"
'Обработка первый вариант-процедура рисования точек
Case "line"
'Обработка второй вариант - процедура рисования линий
Case "..."
'Обработка третий вариант - что там у тебя еще
End Select
End Sub
--------------------------------------------------
'Обработка первый вариант-процедура рисования - что именно это такое??? Если это равносильно тому, чтобы на форме нарисовалась линия или появился квадрат или круг, то мне не это нужно.
Мне не нужно, чтобы при клике по кнопкам на панели моментально рисовались фигуры, их я должен рисовать.
Рисование заключается в том, чтобы зажать левую кнопку мыши (установится начальная для линии точка), переместить мышь и отпустить кнопку (нарисуется линия из начальной точки в конечную).
По моему алгоритм такой:
1. Зажата левая кнопка
2. 'Проверка на то, чему равна tool
3. Если tool равна "line" тогда вызвать процедуру, которая установит начальную точку
4. отпускание кнопки мыши
5. вызов процедуры для установки конечной точки и рисования этой линии.
Но может я тебя не могу понять, и как-то можно узнать чему равна эта переменная.
Я прилагаю простой пример, где я использовал твою процедуру и с помощью нее присваиваю значение, но я не могу понять, как узнать значение этой переменной в другой форме. Может ты исправишь этот пример и выложешь его тут?
Зарание спасибо!
Так, теперь переменной tool стало присваиваться значение, но от этого особого толка я не вижу, так как узнать не могу, чему она равна, для вызова процедуры рисования той или иной штуковины.
--------------------------------------------------
'Обработка первый вариант-процедура рисования - что именно это такое??? .
Но может я тебя не могу понять, и как-то можно узнать чему равна эта переменная.
Ты чего пристал к человеку ? Тебе же все объяснили. Переменная tool равна "pen", "square", "line" и т.д.
Далее, тебе надо вызвать определенную процедуру, которая зависит от переменной tool. Так вот 'Обработка первый вариант-процедура рисования' это и есть определенная процедура, которая зависит от переменной tool (тобой определенная !!!). Определяй и рисуй на здоровье.
-->Далее, тебе надо вызвать определенную процедуру, которая зависит от переменной tool.
Да! Мне нужно вызвать определенную процедуру, но не из procedura!!! Мне нужно вызвать зависящую от значения tool процедуру рисования при событии происходящем в другой форме!!!
Вот, пользователь кликнул по кнопке на панели, переменной tool присвоилось значение "line" (Procedura "line")
Далее пользователь может передумать и выбрать другой инструмент, но если он решит не менять инструмент, переместит указатель мыши на ДРУГУЮ ФОРМУ, зажмет левую кнопку мыши, произойдет проверка значения переменной tool, если значение будет равно "line" тогда вызовется процедура установки начальной точки для линии.
И как мне тут может помочь "Обработка первый вариант-процедура рисования" из procedura??? Вы предлагаете мне при событии MouseDown вызывать procedura??? И с каким же параметром интересно???
А-а-а-а-а...
Вы предлагаете мне при событии MouseDown вызывать procedura??? И с каким же параметром интересно???
Я предлагаю при событии MouseDown анализировать переменную tool, которая должна быть определена на уровне модуля как Public и в зависимости от ее значения действовать так, как ты считаешь нужным.
-->которая должна быть определена на уровне модуля как Public
Это именно то, что мне было нужно, начиная с самого первого сообщения!!! Ура! Ура!!!
Спасибо! Спасибо Tiraspolsky!!!
-->которая должна быть определена на уровне модуля как Public
Это именно то, что мне было нужно, начиная с самого первого сообщения!!! Ура! Ура!!!
Вот подправленный код, думаю разберешся. Почитай про области видимости переменных (см вложение).
Очень полезный текстовик ты написал, теперь я разрулил с доступностью переменных (областью видимости).
И за алгоритм рисования объектов тоже спасибо, я то сразу после того, как мне Tiraspolsky ответил, где лоджна быть объявлена tool, написал эту прогу, но когда посмотрел на твой алгоритм рисования, понял что твой алгоритм более понятен и удобочитаем, хотя и есть недостатки. В общем исправил я недостатки и переписал свою прогу.