Перейти к содержанию
Fire Monkey от А до Я

Лидеры

Популярный контент

Показан контент с высокой репутацией 25.12.2021 во всех областях

  1. Сделал так - это швах, но работает так что сильно не ругайте, лучше таки подскажите как сделать правильнее TMyFrame = class(TFrame) .... public Function GetControl(Control:TCustomScrollBox; SrcPoint:TPointF):TControl; .... end; implementation function TMyFrame.GetControl(Control: TCustomScrollBox; SrcPoint:TPointF): TControl; var i:Integer; fm:TFMXObject; vp,tp:TPointF; function GetChildControl(Control:TControl):TControl; var i:Integer; c:TControl; Begin result:=nil; if Control.ChildrenCount > 0 then begin for i:=0 to Control.ChildrenCount-1 do Begin if (Control.Children[i].Name<>'') then Begin c:=TControl(Control.Children[i]); if (c.position.X<tp.X) and ((c.Position.X+c.Width)>tp.X) and (c.position.Y<tp.Y) and ((c.Position.Y+c.Height)>tp.Y) then result:=c; End; if (TControl(Control.Children[i]).ChildrenCount>0) and (result=nil) then result:=GetChildControl(TControl(Control.Children[i])); End; end; End; begin vp:=Control.ViewportPosition; tp.X:=SrcPoint.X+vp.X; tp.Y:=SrcPoint.Y+vp.Y; result:=GetChildControl(Control); end; //узнаем какой контрол под кликом мышки procedure TMyFrame.HorzScrollBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); var Point:TPointF; c:TControl; begin Point.X:=X; Point.Y:=Y; c:=GetControl(HorzScrollBox1,point); // if c<>nil Then form1.Debug.Add(c.Name); end; //узнаем какой контрол под тапком procedure TMyFrame.HorzScrollBox1Tap(Sender: TObject; const Point: TPointF); var c:TControl; begin c:=GetControl(HorzScrollBox1,point); // if c<>nil Then form1.Debug.Add(c.Name); end;
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...