El error con sgiZoom que mencionas puede deberse a que estás utilizando un valor incorrecto o no definido en la versión de Delphi que estás usando. sgiZoom no es un identificador estándar en todas las versiones de Delphi.
Para resolver este problema, en lugar de utilizar sgiZoom, deberías usar el valor correcto que está predefinido en Delphi para identificar gestos de zoom. Los identificadores de gestos en Delphi suelen estar definidos en la unidad FMX.Types, y el gesto de zoom puede ser identificado mediante la constante igiZoom (Interactive Gesture ID Zoom).
Aquí te doy una versión modificada de tu código que debería funcionar:
Código Delphi
[-]uses
FMX.Types, FMX.Gestures;
procedure TF_Foto.Image1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
var
ZoomFactor: Single;
begin
if EventInfo.GestureID = igiZoom then
begin
ZoomFactor := EventInfo.Distance / 100;
Image1.Width := Round(Image1.Width * ZoomFactor);
Image1.Height := Round(Image1.Height * ZoomFactor);
Image1.Position.X := Image1.Position.X - (Image1.Width * (ZoomFactor - 1)) / 2;
Image1.Position.Y := Image1.Position.Y - (Image1.Height * (ZoomFactor - 1)) / 2;
Handled := True; end;
end;
Pasos a seguir:
Importar las unidades correctas: Asegúrate de que tienes las unidades FMX.Types y FMX.Gestures en la cláusula uses.
Reemplazar sgiZoom: Cambia sgiZoom por igiZoom, que es el identificador correcto para el gesto de zoom multitáctil.
Verifica que el componente TGestureManager esté configurado: Asegúrate de que tu componente TGestureManager esté correctamente vinculado al control y que el gesto de zoom esté habilitado.
Este enfoque debería solucionar el problema y permitir que tu código detecte el gesto de zoom correctamente.