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

snake

Пользователи
  • Постов

    6
  • Зарегистрирован

  • Посещение

  • Победитель дней

    1

Сообщения, опубликованные snake

  1. Пытаюсь откомпилировать приложение под симулятор iPhone. Delphi 10.4.

    Симулятор выдает сообщение, что дескать надо перекомпилировать для этой iOS.

    Screenshot_2.png.4ec7b985472e41a60b5447435b0d9fbc.png

    На Mac, стоит BigSur, xCode 13.2,  iOS 15.2. В Delphi тоже стоит iPhoneSimulator 15.2

    Screenshot_3.thumb.png.5ccbd1d37d448a6e5c874e1aaa1c4d0a.png

    Файлы для SDK обновлены. PAServer 21 - запущен.

    598943691_ScreenshotatJan0616-42-59.thumb.png.389190993d3cc2a6de8233a1c12b1fd1.png

     

    Пробовал компилировать под эмулятор iOS 13.2, - в логах ошибка - ругается что нет модуля поддержки процессора x86.

    2039572005_ScreenshotatJan0614-58-52.thumb.png.b877ff842f17b734ee72270c075d0d68.png

     ЧТО необходимо сделать, чтобы откомпилировать проект под iPhoneSimulator ??

    Я уже не говорю, про реальный яблофон, тут хоть бы под эмулятором запустить :((

    Пробовал другие версии xCode ставить - результат такой же.

     

  2. 4 часа назад, Dynamo сказал:

    сам с собой беседу ведет)

    так никто не отвечает. приходится искать и выдумывать самому.
    хотя наверняка на эти грабли уже наступали 100500 раз.

    мало того, но я написал как решил проблему сам и попросил "подскажите как сделать правильнее ", т.е. может Вы просто не внимательно читаете ;)

  3. Сделал так - это швах, но работает :)

    так что сильно не ругайте, лучше таки подскажите как сделать правильнее :)

     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;

     

  4. блин, все равно - засада.
    Если следовать

    Цитата

    - Надо убрать Pan в InteractiveGestures THorzScrollBox
    - Всем внутренним объектам назначить HitTest = False

    Теперь будет работать и внутренний и сквозной скроллинг

    Да - супер! начинают работать оба скрола - НО, код приведенный далее с двумя фунциями AllHitTrue и AllHitFalse ни как не помогает отследить объект на котором был Tap или Click.

    Цитата

    Obj:= self.ObjectAtPoint(ClientToScreen(Point));  // Получаем объект

    вот тут - всегда получаем объект на котором расположен HorzScrollBox, причем даже не его родителя, а родителя его родителя :((
    т.е. у меня есть TabControl, на котором есть VertScrollBox, внутри которого есть TPanel на котором лежит HorzScrollBox, а объект который возвращается по ObjectAtPoint - всегда TabControl1

     

    Если отключаю эти методы по нахождению объекта, и ставлю всем дочерним объектам HorzScrollBox - свойство HitTest:=true, то они отлично работают, но перестает скролится горизонтальный скрол, т.к. он не обрабатывает Pan.....

    Подскажите, как же победить это??

    Если бы в том примере получить объект который внутри горизонтального скрола, а не его пра-пра-пра-родителя - это решило бы проблему. Или если бы при установке HitTest для контролов внутри горизонтального скрола - работал бы и сам скрол, то тоже бы решило проблему.

     

    Пожалуйста, помогите разобраться.


     

  5. Есть VerticalScrollBox, внутри которого есть несколько панелей выравненных по Top

    На одной из панелей есть HorzScrollBox.

    Если начинать прокручивать VerticalScrollBox вне HorzScrollBox, то контент прокручивается, но если начать прокрутку из области HorzScrollBox, то вертикальная прокрутка не отрабатывает - только горизонтальная.

    Как сделать, чтобы HorzScrollBox передавал управление прокруткой VerticalScrollBox, если это не горизонтальная прокрутка?

    Screenshot_1.png

×
×
  • Создать...