Try to use Lib_sensor. You can download this lib below.
List of new functions:
- init
- integer pointer_state
- integer pointer_pressed_x
- integer pointer_pressed_y
- integer pointer_dragged_x
- integer pointer_dragged_y
- integer pointer_released_x
- integer pointer_released_y
- integer has_pointer_events
- integer has_pointer_motion_events
Here some examples:
Program PointerTest;
Uses sensor;
Var ox, oy, px, py, state: integer;
Begin
sensor.init; // Инициализация библиотеки
repeat // Бесконечный цикл
state:=pointer_state; // Читаем состояние сенсора
if state=1 then // Если нажали, то...
begin
if (ox=0) and (oy=0) then
begin
ox:=pointer_dragged_x; oy:=pointer_dragged_y;
end;
px:=pointer_dragged_x; py:=pointer_dragged_y; // Выясняем куда именно нажали (координаты)
DrawLine(ox,oy,px,py); // Рисуем линию
ox:=px; oy:=py; // Запоминаем предыдущую точку для рисования следующей линии
end;
else begin ox:=0; oy:=0; end; // Если ничего не нажали - сбрасываем координаты в 0
Repaint; Delay(20); // Отрисовка линии и небольшая пауза
until false;
End.
Program PointerTest2;
Uses sensor;
Var xx, yy, state, key: integer;
Procedure DrawButtons; // Вспомогательная процедурка, которая рисует на экране кнопки
begin
SetColor(255,255,255); // Белый цвет
if key=1 then SetColor(255,0,0); // Если была нажата кнопка 1 - ставим красный цвет
if key=2 then SetColor(0,255,0); // Если кнопка 2 - зеленый
FillRect(0,0,GetWidth,GetHeight); // Закрашиваем весь экран выбранным цветом
SetColor(0,0,0); // Ставим черный цвет
DrawRect(10, 10, 100, 25); DrawText('Button 1', 15, 15); // Рисуем первую кнопку
DrawRect(10, 40, 100, 25); DrawText('Button 2', 15, 45); // Рисуем вторую кнопку
DrawRect(10, 70, 100, 25); DrawText('Quit', 15, 75); // Рисуем третью
Repaint; // Окончательный вывод всего нарисованного на дисплей
end;
Begin // Начало нашей программы
sensor.init; // Инициализация библиотеки
DrawButtons; // Рисуем кнопки на экране (см. процедуру выше)
repeat // Начинаем бесконечный цикл
state:=pointer_state; // Читаем состояние сенсора
if state=1 then // Если произошло нажатие, то...
begin
xx:=pointer_pressed_x; yy:=pointer_pressed_y; // Считываем координаты нажатия
if (xx>9) and (xx<111) then // Проверяем сначала x координату...
begin
if (yy>9) and (yy<36) then key:=1; // Нажали на кнопку 1
if (yy>39) and (yy<66) then key:=2; // Нажали на кнопку 2
if (yy>69) and (yy<96) then Halt; // Нажали на кнопку 3 (Выход)
DrawButtons; // Рисуем кнопки
end;
end;
Delay(30);
until false;
End.