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.
Ein Therapeut entspricht 1024 Gigapeut.