суббота, 2 ноября 2013 г.

Написал бы я, что мне в этом коде не нравится, но ведь всё равно дураком назовут

procedure TStyledWindowBorder.MouseMove(Shift: TShiftState; X, Y: Single);
var
  P: TPointF;
  Obj: IControl;
  SG: ISizeGrip;
  NewCursor: TCursor;
  CursorService: IFMXCursorService;
begin
  NewCursor := crDefault;
  TPlatformServices.Current.SupportsPlatformService(IFMXCursorService, IInterface(CursorService));
  FMousePos := PointF(X, Y);
  if Assigned(FCaptured) then
  begin
    if Assigned(CursorService) then
    begin
      if ((FCaptured.QueryInterface(ISizeGrip, SG) = 0) and Assigned(SG)) then
        CursorService.SetCursor(crSizeNWSE)
      else
        CursorService.SetCursor(FCaptured.Cursor);
    end;
    P := FCaptured.ScreenToLocal(PointF(FMousePos.X, FMousePos.Y));
    FCaptured.MouseMove(Shift, P.X, P.Y);
    Exit;
  end;
 
  Obj := ObjectAtPoint(FMousePos);
  if Assigned(Obj) then
  begin
    SetHovered(Obj);
    P := Obj.ScreenToLocal(PointF(FMousePos.X, FMousePos.Y));
    Obj.MouseMove(Shift, P.X, P.Y);
    if ((Obj.QueryInterface(ISizeGrip, SG) = 0) and Assigned(SG)) then
      NewCursor := crSizeNWSE
    else
      NewCursor := Obj.Cursor;
  end
  else
    SetHovered(nil);
  // set cursor
  if Assigned(CursorService) then
    CursorService.SetCursor(NewCursor);
  FDownPos := FMousePos;
end;
....
Посему - предлагаю просто получить эстетическое удовольствие.

Комментариев нет:

Отправить комментарий