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

estra

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

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

  • Посещение

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

    20

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

  1. В принципе есть и бесплатная дорога, вот ее описание для XE2. Возможно с тех пор чтото и изменилось, и придется немного погуглить, но в целом направление там описано верное...

  2. Как поставлять?

    1. Отдавайте пакет *.app.
    2. dmg - это образ данных диска (аналогично iso, nrg и т.п.) для Mac OS X. Для чтения данных с этого образа его необходимо смонтировать на виртуальное устройство.

    Как создать инсталятор приложения для OSX?

    • Спросить у Google?
    • Вот пара ссылок с первой страницы результатов поиска: тынц и тынц.

  3. Эта DLL у меня тут: C:\Program Files (x86)\Embarcadero\Studio\15.0\bin

    Размер 1 Мг. Куда выслать?

     

    Странно, как она там оказалась, у меня ничего подобного нет. Выкладывайте здесь, думаю не мне одному пригодится.

     

    P.S.

    А вот в bin64 имеется cc64160mt.dll. Еще один интересный вопрос к разработчикам - почему у разных пользователей после инсталляции вашего продукта разный набор файлов?

  4.  

    Microsoft Security Essentials - вирусов нет (ВирусТотал: https://www.virustotal.com/ru/file/1953ba40db388eac65a53bf677a5bbf5dbf8ae12bf375081cac97b199c32105b/analysis/1419343955/)

    brunnengi, Проверяйте комп.

     

    Windows 7 Pro (32 bit): Ошибка

    ---------------------------

    ChessForThree.exe - Системная ошибка

    ---------------------------

    Запуск программы невозможен, так как на компьютере отсутствует CC32160MT.DLL. Попробуйте переустановить программу. 

    ---------------------------

    ОК   

    ---------------------------

     

     

     Такая же фигня, хотя и Win7 64... В пору задаться вопросом - есть ли перспектива у FM? Kitty, раз у вас запустилось, значит и dll соответствующая имеется, не поделитесь?

  5. BluetoothAdapter по умолчанию выдает только подключенные устройства (ScanMode = Connectable), а нужно чтобы выдавал все обнаруженные (ScanMode = Discoverable). Но свойство ScanMode только для чтения. Как изменить режим поиска устройств?

    Тут написано, что на андроиде можно работать с неподключенными (Discoverable) устройствами, но как заставить адаптер их находить?

  6. Ни у кого нет проблем с компиляцией под эту версию? У меня после запуска черный экран и через секунду приложение закрывается... (SDK в RAD Studio обновил)

  7. У меня тестовый контрол был симметричным.. Твой код хорош, только мне нужно сохранить центр вращения.

    procedure TForm1.Button2Click(Sender: TObject);
    var
      Center: TPointF;
    begin
       Center.X := Button1.Position.X + ( Button1.Width / 2 );
       Center.Y := Button1.Position.Y + ( Button1.Height / 2 );
       Button1.RotationAngle := Button1.RotationAngle + ( 90 - Button1.RotationAngle );
       Button1.Position.X := Center.X - ( Button1.Width / 2 );
       Button1.Position.Y := Center.Y - ( Button1.Height / 2 );
    end;
    
  8. Так и в Вашем абстрактном примере компонент после поворота смещается черт знает куда... Если бы вы еще описали как после поворота компонент должен позиционироваться... А то остается только гадать, а я, увы, не телепат...

    procedure TForm1.Button2Click(Sender: TObject);
    var
      X, Y: Single;
    begin
       X := Button1.Position.X;
       Y := Button1.Position.Y + Button1.Height;
       Button1.RotationCenter.X := 0;
       Button1.RotationCenter.Y := 0;
       Button1.RotationAngle := Button1.RotationAngle + ( 90 - Button1.RotationAngle );
       Button1.Position.X := X + Button1.Height;
       Button1.Position.Y := Y - Button1.Width;
    end;
    
  9. Вопрос в продолжении темы Как определить пересекаются ли два контрола или нет (так как та тема уже закрыта). Рекомендуемая функция IntersectsWith не учитывает, что прямоугольник может быть повернут на какой либо угол, в связи с чем результат может отличаться от ожидаемого.

     

    6596879.png

     

    Имеется ли в FM метод, корректно обрабатывающий проиллюстрированный выше случай?

  10. Всем привет!

     

    Столкнулся с проблемой при использовании WebBrowser на Android, прошу помощи в ее решении. В двух словах ситуация такая - есть TabControl с 2 вкладками. На одной вкладке WebBrowser, в котором есть ссылка. При клике на эту ссылку происходит переход к другой вкладке. После этого нужно вернуться на первую вкладку нажатием системной кнопки vkHardwareBack. Но событие OnKeyDown приходит только со второго нажатия. Причину такого поведения понять и устранить пока не получилось, нужна ваша помощь.

     

    Если перемещаться между вкладками не используя WebBrowser, проблема не возникает.

    WebBrowser.zip

  11. Может есть стандартная функция получения подстроки заключенную в разделители?

     

    Не уверен, что правильно понял вопрос... Вы не это имели ввиду?

    procedure TForm1.Button1Click(Sender: TObject);
    const
      Path = 'c:\temt\1.txt';
    var
      st: TStrings;
      s: string;
    begin
       st := TStringList.Create;
       st.Delimiter := '\';
       st.DelimitedText := Path;
       for s in st do
          ShowMessage( s );
       st.Free;
    end;
    
  12. Может это вам чем нибудь поможет.
     
    fwvistapathedit_big.png

     

    Программный класс для вывода пути в стиле Vista/Windows 7. Оригинальный контрол, используемый в данных ОС представляет из тебя стандартный ToolbarWindow32 отрисованный с применением стилей, поэтому пришлось писать с нуля, т.к. такую отрисовку будет достаточно проблематично отобразить на ХР и ниже. Исходный код показывает принципы написания составных компонентов. В частности данный компонент может работать как в режиме графического отображения, так и в режимах EDIT и COMBOBOX.
     
    Правда он для VCL, но может он вас на какие нибудь интересные идеи наведет.
  13. Не получается разобраться как добавить к главной форме приложения UIApplicationDelegate. Написал так:

    unit Unit2;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
      System.Actions, FMX.ActnList,
      Macapi.ObjectiveC, iOSapi.UIKit, iOSapi.Foundation, iOSapi.CoreGraphics, iOSapi.CocoaTypes,
      System.Sensors, System.Sensors.Components;
    
    type
      TOnOpenURL = procedure (const URL: NSURL) of object;
    
      UIAppDelegate = interface( IObjectiveC )
      ['{91C422D1-5D97-4258-B2A8-EF46852364B2}']
        function application_handleOpenURL(Sender: UIApplication; handleOpenURL: NSURL): Boolean; cdecl;
      end;
    
      TUIAppDelegate = class( TOCLocal, UIAppDelegate )
      strict private
        FOnOpenURL: TOnOpenURL;
      public
        [MethodName('application:handleOpenURL:')]
        function application_handleOpenURL( Sender: UIApplication; handleOpenURL: NSURL ): Boolean; cdecl;
        property OnOpenURL: TOnOpenURL read FOnOpenURL write FOnOpenURL;
      end;
    
      TForm2 = class(TForm)
        Label1: TLabel;
        procedure FormCreate(Sender: TObject);
      private
        UIAppDelegate: TUIAppDelegate;
        procedure DoOpenURL (const URL: NSURL);
      public
        { Public declarations }
      end;
    
    var
      Form2: TForm2;
    
    implementation
    
    {$R *.fmx}
    
    uses
      FMX.Helpers.iOS, Macapi.ObjCRuntime;
    
    function OpenURL(const AUrl: string): Boolean;
    var
      Url: NSURL;
    begin
      Url := TNSUrl.Wrap(TNSUrl.OCClass.URLWithString(NSStr(AUrl)));
      Result := SharedApplication.openUrl(Url);
    end;
    
    procedure TForm2.DoOpenURL(const URL: NSURL);
    begin
       Label1.Text := '123';
    end;
    
    procedure TForm2.FormCreate(Sender: TObject);
    begin
       UIAppDelegate := TUIAppDelegate.Create;
       UIAppDelegate.OnOpenURL := DoOpenURL;
    end;
    
    { TUIAppDelegate }
    
    function TUIAppDelegate.application_handleOpenURL(Sender: UIApplication;
      handleOpenURL: NSURL): Boolean;
    begin
       MessageDlg( 'hi', TMsgDlgType.mtInformation, [TMsgDlgBtn.mbOK], 0 );
    end;
    
    end.
    

    Только метод делегата не срабатывает. Подскажите, как заставить делегат работать?

  14. В моем приложении реализована custom URL scheme. Как мне получить данные, передаваемые вызывающей программой? В iOS это делается при помощи метода

    - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url  

    а как это делается в Delphi?

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