![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
blackhard |
![]()
Сообщение
#1
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Задача такова: Написать программу построения чертежей планиметрии "протягиванием" от выбранной точки с изображением ее промежуточного положения с возможностью обозначения точек и проведения стандартных линий в треугольнике.
Как это сделать я впринципе знаю но есть 1 проблема это работа с указателем мыши.Для начала я попытался сделать так чтобы при нажатии на изображение рисовалась линия из текущего положения курсора в положение указателя мыши procedure TForm1.Image1Click(Sender: TObject);получается чето не то линия проводится явно не к указателю мыши.Может это связано с масштабом Image1 (833x533)?подскажите.И еще какие свойства в Tmouse отвечают за нажатые кнопки мыши? |
![]() ![]() |
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Сэр знаком с таким знаком препинания как запятая?
Очень тяжело читать. Если ты и программы так же пишешь, не удивляюсь, почему они не работают. Значит, вводим состояния: 0. Неопределенное состояние - на всякий случай: если вдруг переменная примет это значение, будем знать, что где-то эта переменная портится. 1. "свободная мышь" - нигде ничего не рисуем. 2. нажата кнопка мыши. 3. мышь "тянет линию". 4. таймаут после двойного щелчка (кто знает, сколько сообщений о нажатии/отпускании мыши мы получим во время двойного щелчка - чтобы они нам не мешали) Мышь находится в одном из приведенных состояний, в начале - "1". Мы отслеживаем сообщения: A - перемещение мыши, B - нажатие мыши, C - отпускание мыши, D - двойной щелчок. В зависимости от того, в каком состоянии мы находились, получая то или иное сообщение, мы выполняем определенное действие (в частном случае - ничего не делаем) и переходим в другое состояние. Осталось расписать таблицу переходов и записать ее на любимом ЯВУ. Например, для 1: 1A - ничего не делаем, 1B - переходим в режим 2, 1C - невозможная комбинация - сообщаем об ошибке, 1D - ничего не делаем. для 2: 2A - стираем старую линию и рисуем новую, 2B - невозможная комбинация - сообщаем об ошибке, 2C - переходим в режим 3, 2D - переходим в режим 4. для 3: 3A - стираем старую линию и рисуем новую, 3B - отрисованную линию оставляем и запоминаем точку нажаия новой линии, 3C - переходим в режим 2, 3D - переходим в режим 4. для 4: 4A - ничего не делаем, проверяем, не вышел ли таймаут, если вышел, переходим в состояние 1, 4B - ничего не делаем, проверяем, не вышел ли таймаут, если вышел, переходим в состояние 1, 4C - ничего не делаем, проверяем, не вышел ли таймаут, если вышел, переходим в состояние 1, 4D - возобновляем таймаут. PS. Писал особенно не продумывая, просто для иллюстрации. Сообщение отредактировано: andriano - 24.04.2008 19:03 |
blackhard |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 151 Пол: Мужской Реальное имя: иван Репутация: ![]() ![]() ![]() |
Сэр знаком с таким знаком препинания как запятая? Очень тяжело читать. Если ты и программы так же пишешь, не удивляюсь, почему они не работают. Значит, вводим состояния: 0. Неопределенное состояние - на всякий случай: если вдруг переменная примет это значение, будем знать, что где-то эта переменная портится. 1. "свободная мышь" - нигде ничего не рисуем. 2. нажата кнопка мыши. 3. мышь "тянет линию". 4. таймаут после двойного щелчка (кто знает, сколько сообщений о нажатии/отпускании мыши мы получим во время двойного щелчка - чтобы они нам не мешали) Мышь находится в одном из приведенных состояний, в начале - "1". Мы отслеживаем сообщения: A - перемещение мыши, B - нажатие мыши, C - отпускание мыши, D - двойной щелчок. В зависимости от того, в каком состоянии мы находились, получая то или иное сообщение, мы выполняем определенное действие (в частном случае - ничего не делаем) и переходим в другое состояние. Осталось расписать таблицу переходов и записать ее на любимом ЯВУ. Например, для 1: 1A - ничего не делаем, 1B - переходим в режим 2, 1C - невозможная комбинация - сообщаем об ошибке, 1D - ничего не делаем. для 2: 2A - стираем старую линию и рисуем новую, 2B - невозможная комбинация - сообщаем об ошибке, 2C - переходим в режим 3, 2D - переходим в режим 4. для 3: 3A - стираем старую линию и рисуем новую, 3B - отрисованную линию оставляем и запоминаем точку нажаия новой линии, 3C - переходим в режим 2, 3D - переходим в режим 4. для 4: 4A - ничего не делаем, проверяем, не вышел ли таймаут, если вышел, переходим в состояние 1, 4B - ничего не делаем, проверяем, не вышел ли таймаут, если вышел, переходим в состояние 1, 4C - ничего не делаем, проверяем, не вышел ли таймаут, если вышел, переходим в состояние 1, 4D - возобновляем таймаут. PS. Писал особенно не продумывая, просто для иллюстрации. Спасибо огромное ![]() Так? Специальной ф.и я найти не могу. |
![]() ![]() |
![]() |
Текстовая версия | 24.06.2025 14:47 |