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

Antonyan

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

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

  • Посещение

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

    1

Активность репутации

  1. Like
    Antonyan получил реакцию от Alisson R Oliveira в Обработчики событий OnTap, OnGesture для элемента стиля   
    Доброго времени суток !
    Вопрос #1
    Как назначить обработчик событий OnTap, OnGesture элементу стиля ? Либо, как еще отловить событие нажатие на элемент стиля, не путая скроллинг и tap?
    Подозреваю, что подобный подход не приемлем :
    ListBoxItem.StylesData['Rectangle.OnTap'] := TValue.From<TNotifyEvent>(..Myprocedure_OnTap...)
    ListBoxItem.StylesData['Rectangle.OnGesture'] := TValue.From<TNotifyEvent>(..Myprocedure_OnGesture...)
    Потому как, TNotifyEvent = procedure(Sender:TObject) of object;
    Вопрос #2.
    Насколько известно, android не различает скроллинг и tap. А как с этим в IOS ?
    Заранее благодарю
     
     
     
  2. Like
    Antonyan получил реакцию от Евгений Корепов в Firebird. Ошибка   
    Спасибо всем. Проблема устранена. Скачал кривоватый билд FB. Тему можно закрывать.
  3. Like
    Antonyan отреагировална Равиль Зарипов (ZuBy) в Как назначить событие KeyDown элементу стиля Edit   
    попробовать изменить так
    aItem.StylesData['Edit.OnKeyDown'] := TValue.From<TKeyEvent>(EditKeyDown(Self,key,KeyChar,Shift))  
  4. Like
    Antonyan получил реакцию от Равиль Зарипов (ZuBy) в Можно ли у TListViewItem при добавлении его в TListView установить свойство Accessory в None?   
    Как вариант, можно просто скрыть его
     
    Procedure XXX;
    Var
         LItem : TListViewItem;
     
    begin
     
              LItem := YourListView.Items.Add;
              LItem.Objects.AccessoryObject.Visible:=false;
     
    end;
  5. Like
    Antonyan получил реакцию от Rusland в Подключение справки для программы   
    Вызов конкретного топика (может кому пригодится) :
     
    ShellExecute(0, Pchar('open'),Pchar('hh.exe'),PChar(' -mapid 5 '+Extractfilepath(paramstr(0))+ 'ваш.chm'),nil,9);
     
    где, -mapid 5, команда, указывающая на вызов топика №5.
     
    Не забудьте добавить модуль ShellApi в uses
     
    С уважением.
  6. Like
    Antonyan отреагировална AngryOwl в Как свернуть форму, находящуюся в режиме FullScreen?   
    unit uHelpers; interface uses   FMX.Forms; type   TForm_Helper = class helper for TForm      procedure Minimize;      procedure SendToTaskbar;   end; implementation uses System.UITypes{$IFDEF MSWINDOWS}, Winapi.Windows, FMX.Platform.Win{$ENDIF}; { TForm_Helper } procedure TForm_Helper.Minimize; begin   Application.MainForm:= nil;   WindowState := TWindowState.wsMinimized; end; procedure TForm_Helper.SendToTaskbar; begin {$IFDEF MSWINDOWS}   SetWindowLong(WindowHandleToPlatform(Handle).Wnd, GWL_EXSTYLE,     GetWindowLong(WindowHandleToPlatform(Handle).Wnd, GWL_EXSTYLE) or WS_EX_APPWINDOW); {$ENDIF} end; end. у Вашей формы пишем
    type   TForm1 = class(TForm)   ........   protected     procedure CreateHandle; override;   private     ........   public   ......   end; implementation uses   uHelpers; {$R *.fmx} {это позволит сворачивать ваше окно на панель задач, независимо от количества окон в приложении} procedure TForm1.CreateHandle; begin   inherited CreateHandle;   SendToTaskbar; end; а Minimize свернет все как надо, независимо от того - какое у него "состояние".
  7. Like
    Antonyan отреагировална Error в [TEdit] Почему при изменении масштаба TEdit.Scale, могут появляться артефакты в виде линий?   
    9-path изображение из которых состоят все растровые скины, состоят из 9 кусочков, которые если компонент имеет дробные координаты или размер рисуются в дробных координатах, а сглаживание размазывает границы этих кусочков.
    Вариант решения: следить за тем, чтобы размеры и координаты компонентов были всегда целыми числами. (обычно проблемы могут возникать при расположении компонентов на различных Layout-ах типа  TGridLayout, TScaledLayout)
  8. Like
    Antonyan отреагировална d7d1cd в Как свернуть форму, находящуюся в режиме FullScreen?   
    Привет всем! Подскажите, как программно свернуть форму в панель задач, когда она развернута на весь экран (FullScreen = true)?
  9. Like
    Antonyan отреагировална Brovin Yaroslav в Рисование средствами iOSapi.CoreGraphics   
    Рисовать средствами iOSapiVoreGraphics можно только на нативном UIView. Поэтому для начала нужно создать на форме нативный UIView. Рисование возможно только в перекрытом методу UIView.drawRect. Поэтому создаем отдельный класс UIView и перекрываем метод DrawRect. 
     
    Ниже приведен код, оболочки UIView, который выполняет отрисовку, через событие OnPaint.
    unit FMX.DrawableView; interface uses System.Types, System.TypInfo, iOSapi.CoreGraphics, iOSapi.UIKit, Macapi.ObjectiveC; type IMyView = interface(UIVIew) ['{A7145466-B0FA-42C1-A588-E73D03FFEBF1}'] procedure drawRect(rect: CGRect); cdecl; end; TOnPaint = procedure (Sender: UIView; Context: CGContextRef; const Rect: CGRect) of object; TDrawableView = class(TOCLocal) private FOnPaint: TOnPaint; function GetView: UIView; protected function GetObjectiveCClass: PTypeInfo; override; public constructor Create(const AFrame: TRectF); procedure drawRect(rect: CGRect); cdecl; public property View: UIView read GetView; property OnPaint: TOnPaint read FOnPaint write FOnPaint; end; implementation { TMyView } constructor TDrawableView.Create(const AFrame: TRectF); var V: Pointer; begin inherited Create; V := View.initWithFrame(CGRectMake(AFrame.Left, AFrame.Top, AFrame.Width, AFrame.Height)); if GetObjectID <> V then UpdateObjectID(V); end; procedure TDrawableView.drawRect(rect: CGRect); var context: CGContextRef; begin context := UIGraphicsGetCurrentContext(); try if Assigned(FOnPaint) then FOnPaint(View, context, rect); finally CGContextClearRect(context, rect); end; end; function TDrawableView.GetObjectiveCClass: PTypeInfo; begin Result := TypeInfo(IMyView); end; function TDrawableView.GetView: UIView; begin Result := UIView(Super); end; end. После того, как у нас есть нативное UIView, мы должны его создать и повесить на наше введенное событие OnPaint обработчик отрисовки:
    private FView: TDrawableView; protected // Декларация обработчика рисования procedure DoPaint(Sender: UIView; Context: CGContextRef; const Rect: CGRect); uses FMX.Platform.iOS; constructor TForm1.Create(AOwner: TComponent); var iOSHandle: TiOSWindowHandle; begin inherited; FView := TDrawableView.Create(TRectF.Create(0, 0, 200, 200)); FView.OnPaint := DoPaint; iOSHandle := WindowHandleToPlatform(Handle); iOSHandle.View.addSubview(FView.View); end; // Пример отрисовки красного прямоугольника procedure TForm1.DoPaint(Sender: UIView; Context: CGContextRef; const Rect: CGRect); begin CGContextSetRGBFillColor(context, 255, 0, 0, 1); CGContextFillRect(context, CGRectMake(20, 20, 100, 100)); end; В итоге получаем встроенное представление в форму, с отрисованным красным квадратом:

     
    Демо проект: iOS_Draw_Rect.zip
    Подробности отрисовки: Введение в Core Graphics на iOS
  10. Like
    Antonyan отреагировална Brovin Yaroslav в Универсальный способ хранения настроек   
    Я бы воспользовался новым механизмом, появившимся в XE7 Save State. Унифицировано, гибко. Описание работы и примеры, в документации: FireMonkey Save State
  11. Like
    Antonyan отреагировална Brovin Yaroslav в Включение своих файлов в приложение   
    Добрый вечер,
     
    Тут есть два способа:
    Работа с Deployment менеджером. Он довольно подробно описан на Embarcadero Doc Wiki: http://docwiki.embarcadero.com/RADStudio/XE5/en/Deployment_Manager Работа через менеджер ресурсов и их получение через ResourceStream. Этот способ описал MyDelphiPw в сообщении выше тут. 1. Deployment Manager
    Специальная настройка проекта, которая позволяет указать, какие файлы нужно включить в состав пакета (Андроид) или бандла (iOS). Суть его работы простая, вы указываете какие файлы с вашего компьютера нужно перенести на устройство (в какое место). А далее работаете с ними из приложения так, как при обычной работе с файлами под Windows.
     
    На мобильных платформах нужно учесть специфику возможных местоположений файла. Пакет/Бандл (приложение) не допускает изменения внутренних файлов, потому что подписывается сертификатом. Поэтому теоретически при изменении файлов приложения, вы нарушаете целостность подписи. Именно по этому файлы внутри пакета/бандла доступны только на ЧТЕНИЕ.
     
    Однако, мобильные платформы предлагают широкий круг специальных мест для хранения (временные папки, песочницы, документы, карточка памяти и тд) изменяемых файлов (например файл локальной базы данных, или настройки в ini файле и тд).
     
    Описание всех вариантов местоположений с описанием путей есть в записе TPath (RTL): http://docwiki.embarcadero.com/RADStudio/XE5/en/Standard_RTL_Path_Functions_across_the_Supported_Target_Platforms. 

    Общие действия для использования менеджера развертывания такие:
    1. Открываем менеджер развертывания: Системное Меню -> Project -> Deployment.

    2. Выбираем в верхнем выпадающем меню платформу и конфигурацию сборки.

    3. Нажимаем кнопку добавить файл и выбираем нужный файл.
     
    4. Указываем местоположение файла, куда он должен поместиться после развертывания приложения на устройстве. Тут есть особенность, если файл нужен только на чтение, то пути менять не надо. Если возможна ситуация, когда файл может быт изменен, то файл нужно поместить под iOS в Startup\Documents\ (регистр важен)

    Под Андроид в assets\internal (регистр важен) - для внутреннего доступа из пакета приложения или assets - для внешнего доступа

    5. Получаем пути к расположению файлов:
    Под iOS:
    TPath.Combine(TPath.GetDocumentsPath, 'filename') Под Андроид:
    TPath.Combine(TPath.GetDocumentsPath, 'filename') { Внутренний доступ} TPath.Combine(TPath.GetSharedDocumentsPath, 'filename') { Внешний доступ } Полезные ссылки
    Подробное руководство по добавлению файлов для iOS: http://docwiki.embarcadero.com/RADStudio/XE5/en/Creating_an_iOS_App#Loading_and_Deploying_Files Подробное руководство по добавлению файлов для Android: http://docwiki.embarcadero.com/RADStudio/XE5/en/Creating_an_Android_App#Loading_and_Deploying_Files
  12. Like
    Antonyan получил реакцию от Brovin Yaroslav в Не получается запустить свое приложение на IPhone   
    estra, Brovin Yaroslav Огромное спасибо за помощь. Ну и с наступающим Новым годом !
  13. Like
    Antonyan получил реакцию от Brovin Yaroslav в Инструкция по установке набора компонентов FGX   
    Спасибо !
  14. Like
    Antonyan получил реакцию от Brovin Yaroslav в Как узнать позицию каретки в Edit в абсолютных координатах?   
    Огромная благодарность за помощь !
  15. Like
    Antonyan отреагировална AngryOwl в Анимация масштабирования   
    Попробуйте покрутить свойство Anchors (все в False, либо наоборот все в True)
    Думаю дело в этом
×
×
  • Создать...