Страница 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.