Страница 1 из 1
Устройства ввода
Добавлено: 01 окт 2013, 01:07
Developing
Доброго времени суток, уважаемые пользователи!
Помогите разработать приложение, рисующее при нажатии левой кнопки мыши на форме красную горизонтальную линию, перемещающуюся при нажатии клавиш y,g,h,j с зажатой клавишей ctrl. Клавиша z — очистка формы.
Спасибо за внимание!
Re: Устройства ввода
Добавлено: 02 окт 2013, 10:51
Хыиуду
Что именно непонятно?
Рисование линии - модуль graph.
Отслеживание нажатия клавиш - модуль crt или wincrt, функция, если не ошибаюсь, readkey.
Если readkey возврадает y,g,h,j - начертить линию цветом фона поверх старой (затереть старую), изменить координаты, начертить новую
Re: Устройства ввода
Добавлено: 05 окт 2013, 17:38
Developing
Хыиуду писал(а):Что именно непонятно?
Рисование линии - модуль graph.
Отслеживание нажатия клавиш - модуль crt или wincrt, функция, если не ошибаюсь, readkey.
Если readkey возврадает y,g,h,j - начертить линию цветом фона поверх старой (затереть старую), изменить координаты, начертить новую
LineTo не подойдет?
Буквенно-цифровые клавиши не работают при написании констант vk. Нужно их заменять на ord?
Что такое readkey?
Re: Устройства ввода
Добавлено: 05 окт 2013, 18:48
Хыиуду
LineTo - подойдет.
Что такое константы vk? Вообще проще всего сначала сделать небольшую вспомогательную программку, которая будет читать код пришедшей клавиши и его выдавать.
readkey - читает символ из буфера клавиатуры и возвращает его код
Re: Устройства ввода
Добавлено: 05 окт 2013, 20:23
Developing
Константы 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;
При нажатии левой кнопки на мыше линии возникают в произвольном порядке - иногда горизонтально, иногда со сдвигом на диагональ.
Как исправить это?
Re: Устройства ввода
Добавлено: 07 окт 2013, 10:40
Хыиуду
Сначала MoveTo, потом LineTo.