Hab mal ein bissl am Exceptionhandling rumgespielt.
TouchPointToPoint wird in den Private-Abschnitt der TForm1 verschoben.
Und die angesprochenen Form1 entfernt.
Delphi-Quellcode:
procedure TForm1.WMGestureNotify(
var Msg: TWMGestureNotify);
begin
Msg.Result := DefWindowProc(
Handle, Msg.Msg, Msg.Unused, Longint(Msg.NotifyStruct));
end;
procedure TForm1.WMGesture(
var Msg: TMessage);
begin
Msg.Result := DefWindowProc(
Handle, Msg.Msg, Msg.WParam, Msg.LParam);
end;
procedure TForm1.WMTabletFlick(
var Msg: TMessage);
begin
Msg.Result := DefWindowProc(
Handle, Msg.Msg, Msg.WParam, Msg.LParam);
end;
function TForm1.TouchPointToPoint(
const TouchPoint: TTouchInput): TPoint;
begin
Result := Point(TouchPoint.X
div 100, TouchPoint.Y
div 100);
PhysicalToLogicalPoint(
Handle, Result);
end;
procedure TForm1.WMTouch(
var Msg: TMessage);
var
TouchInputs:
array of TTouchInput;
counter: Integer;
Point: TPoint;
begin
SetLength(TouchInputs, Msg.WParam);
GetTouchInputInfo(Msg.LParam, Msg.WParam, @TouchInputs[0], SizeOf(TTouchInput));
try
for counter := 0
to High(TouchInputs)
do begin
Point := TouchPointToPoint(TouchInputs[counter]);
// ...
end;
finally
CloseTouchInputHandle(Msg.LParam);
end;
inherited;
end;
Tipp: Verschiebe einfach mal diese globale Variable aus deiner
Unit in die
DPR.
Bzw. lösch diese aus deinen
Unit und erstelle eine
Dummy: TForm;
in deiner
DPR und benenne alle Form-Variablen in diese um.
Wenn danach dein Programm noch funktioniert, dann hast du es richtig gemacht.
Diese Globale ist einfach nur was Schreckliches und gehört abgeschafft.