Устройства ввода

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
Ответить
Developing
Сообщения: 6
Зарегистрирован: 01 окт 2013, 01:06

01 окт 2013, 01:07

Доброго времени суток, уважаемые пользователи!
Помогите разработать приложение, рисующее при нажатии левой кнопки мыши на форме красную горизонтальную линию, перемещающуюся при нажатии клавиш y,g,h,j с зажатой клавишей ctrl. Клавиша z — очистка формы.
Спасибо за внимание!
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

02 окт 2013, 10:51

Что именно непонятно?
Рисование линии - модуль graph.
Отслеживание нажатия клавиш - модуль crt или wincrt, функция, если не ошибаюсь, readkey.
Если readkey возврадает y,g,h,j - начертить линию цветом фона поверх старой (затереть старую), изменить координаты, начертить новую
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Developing
Сообщения: 6
Зарегистрирован: 01 окт 2013, 01:06

05 окт 2013, 17:38

Хыиуду писал(а):Что именно непонятно?
Рисование линии - модуль graph.
Отслеживание нажатия клавиш - модуль crt или wincrt, функция, если не ошибаюсь, readkey.
Если readkey возврадает y,g,h,j - начертить линию цветом фона поверх старой (затереть старую), изменить координаты, начертить новую

LineTo не подойдет?
Буквенно-цифровые клавиши не работают при написании констант vk. Нужно их заменять на ord?
Что такое readkey?
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

05 окт 2013, 18:48

LineTo - подойдет.
Что такое константы vk? Вообще проще всего сначала сделать небольшую вспомогательную программку, которая будет читать код пришедшей клавиши и его выдавать.
readkey - читает символ из буфера клавиатуры и возвращает его код
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Developing
Сообщения: 6
Зарегистрирован: 01 окт 2013, 01:06

05 окт 2013, 20:23

Константы vk_xxx - это виртуальные коды клавиш или же уникальный числовой идентификатор клавиши.

Не получается нарисовать горизонтальную линию.

Код: Выделить всё

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Form1.Canvas.Brush.Style:=bsSolid;
Form1.Canvas.Brush.Color:=clBtnFace;
Form1.Canvas.FillRect(Rect(0,0,Form1.ClientWidth,Form1.ClientHeight));
 Form1.Canvas.Pen.Color:=clRed;
Form1.Canvas.Brush.Style:=bsHorizontal;
Form1.Canvas.Brush.Color:=clred;
Form1.Canvas.LineTo(100,y);
Form1.Canvas.MoveTo(500,y);

end;
При нажатии левой кнопки на мыше линии возникают в произвольном порядке - иногда горизонтально, иногда со сдвигом на диагональ.
Как исправить это?
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

07 окт 2013, 10:40

Сначала MoveTo, потом LineTo.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить