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

AngryOwl

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

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

  • Посещение

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

    45

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

  1. Like
    AngryOwl получил реакцию от eser в Как программно добавить анимацию к TListBoxItem   
    TListBoxItem(ваш_item).Animate('Opacity', 0, 0.5); TListBoxItem(ваш_item).AnimateWait('Height', 0, 0.5); и только после этого удаляйте.
    Но здесь может возникнуть ряд проблем.
    Во-первых - оптимально делать синхронизацию. Во-вторых - ввиду "ряда особенностей" FMX все может работать на Windows 8, но не будет работать (или будет, но с ошибками) на Windows 7. А на Windows XP вообще может себя повести в "3-ем варианте"... ) Более стабильно будет работать на Маке и на Android ))) Вот такие чудеса могут быть.
     
    Чтобы всего этого избежать, Вам нужно точно определить ту последовательность, которую Вы хотите воспроизвести и сделать синхронизацию.
     
    Например, как писал выше:
    TListBoxItem(ваш_item).Animate('Opacity', 0, 0.5); TListBoxItem(ваш_item).AnimateWait('Height', 0, 0.5); // тогда Animate для 'Opacity' и 'Height' выполнится параллельно // а вот следующая процедура выполнится только после окончания AnimateWait 'Height' TThread.Synchronize(TThread.CurrentThread, тут_ваша_процера_удаления_item); Думаю, что корректно описал - как. Но было бы более точно и правильно, если бы на ваш вопрос ответил непосредственно Ярослав Бровин. Он все-таки более компетентен.
  2. Like
    AngryOwl отреагировална Brovin Yaroslav в [TTabControl] Красивое 3D переключение вкладок в TabControl   
    Можно сделать так:
    Делаем поворот TTabControl на от 0 до 90 градусов, чтобы он повернулся к пользователю ребром. По окончании первой анимации меняем активную вкладку в TTabControl. Делаем поворот TTabControl еще на 90 градусов от 270 до 360. В итоге TTabControl поворачивается к нам уже новой вкладкой.  Видео эффекта в действии: 

     
    Проект: TTabControl_3DRotationDemo.zip
  3. Like
    AngryOwl получил реакцию от Antonyan в Анимация масштабирования   
    Попробуйте покрутить свойство Anchors (все в False, либо наоборот все в True)
    Думаю дело в этом
  4. Like
    AngryOwl получил реакцию от Brovin Yaroslav в [Windows] Можно ли получить Handle компонента в FMX?   
    Никак. В FMX не может быть как такового Handle у TPanel.
    Если Вам очень нужно, то, думаю, можно как-то очень исхитриться и сделать типа так:
    - создать в RealTime панель (TPanel) подключив VCL (uses Vcl.Controls, Vcl.ExtCtrls и ряд других...)
    - получить хэндл окна и поместить панель на это окно
    - ну и дальше работать с ней как с панелью из VCL.
    Но не уверен, что все получится... И не уверен, что если получится, то результат Вас устроит.
     
    Я так понимаю - Вы пытаетесь вывести видео в "окно панели" передав хэндл панели для вывода видео фильтру из DirectX или VFW, как это делалось под VCL.
    В данном случае - у Вас ничего не получится таким образом. А если получится, то будет все очень "криво". Поверьте)
    Вам нужно использовать либо свой механизм вывода, либо использовать тот же Mitov VideoLab или подобные библиотеки.
  5. Like
    AngryOwl получил реакцию от Вячеслав в [Windows] Можно ли получить Handle компонента в FMX?   
    WindowHandleToPlatform(Self.Handle) - получите хэндл текущего окна приложения
  6. Like
    AngryOwl получил реакцию от Brovin Yaroslav в [Windows] Можно ли получить Handle компонента в FMX?   
    WindowHandleToPlatform(Self.Handle) - получите хэндл текущего окна приложения
  7. Like
    AngryOwl получил реакцию от Kitty в Извлечение имени каталога из любого места указанного пути   
    Ваш основной вопрос, как мне кажется, немного неуместен по отношению к FMX )
    А на счет "получить позицию каретки" - у TEdit есть свойство CaretPosition, которое и возвращает требуемое Вам значение.
  8. Like
    AngryOwl получил реакцию от Brovin Yaroslav в Как заставить написанное мной приложение не отключать подсветку, пока оно работает?   
    Если речь идет об Android, то смотрим здесь. (Android.JNI.PowerManager функции AcquireWakeLock и ReleaseWakeLock соответственно)
  9. Like
    AngryOwl отреагировална estra в Update for XE7   
    http://altd.embarcadero.com/download/radstudio/xe7/delphicbuilder_xe7_upd1_win.iso
    ftp://ftpd.embarcadero.com/download/radstudio/xe7/delphicbuilder_xe7_upd1_win.iso
  10. Like
    AngryOwl получил реакцию от antarey в Как заставить обычную форму отображаться как Popup?   
    Сдается мне что все очень просто... По крайней мере я данным решением пользовался не раз и оно прекрасно работает. А именно:
    - во-первых - есть уже на форуме подобное обсуждение, и если мне не изменяет память, то было и еще!
    - во-вторых: (если очень грубо....)
    ........... var   p : TPointF;   function GetMousePos: TPointF;   var     Platform: IInterface;   begin     Result.Create(0, 0);     Platform := TPlatformServices.Current.GetPlatformService(IFMXMouseService);     if Platform <> nil then       Result := (Platform as IFMXMouseService).GetMousePos;   end; begin   p := GetMousePos;   ваша_форма.Left := round(p.X);  // тут уж вы сами решайте - как вам ее "сдвинуть"   ваша_форма.Top := round(p.Y) + ваша_форма.Height;  // ну аналогично сдвинуть по вертикали.....   ваша_форма.Show; end; только это все грубо. сами решайте что и куда сдвигать и что еще учитывать.
     
    Т.е. надо обрабатывать событие OnClick вашей кнопочки, а внутри обработчика то что написано выше.
    Типа как-то так для вашего случая)
  11. Like
    AngryOwl получил реакцию от Kitty в Сохранение значений   
    Ну без записи в файл/БД сложно себе представить - куда можно сохранить значение, кроме как следующие варианты:
    если речь идет о Windows - сохраняйте в реестр. если речь о Android - SharedPreferences.
  12. Like
    AngryOwl получил реакцию от Kitty в Как заставить обычную форму отображаться как Popup?   
    Сдается мне что все очень просто... По крайней мере я данным решением пользовался не раз и оно прекрасно работает. А именно:
    - во-первых - есть уже на форуме подобное обсуждение, и если мне не изменяет память, то было и еще!
    - во-вторых: (если очень грубо....)
    ........... var   p : TPointF;   function GetMousePos: TPointF;   var     Platform: IInterface;   begin     Result.Create(0, 0);     Platform := TPlatformServices.Current.GetPlatformService(IFMXMouseService);     if Platform <> nil then       Result := (Platform as IFMXMouseService).GetMousePos;   end; begin   p := GetMousePos;   ваша_форма.Left := round(p.X);  // тут уж вы сами решайте - как вам ее "сдвинуть"   ваша_форма.Top := round(p.Y) + ваша_форма.Height;  // ну аналогично сдвинуть по вертикали.....   ваша_форма.Show; end; только это все грубо. сами решайте что и куда сдвигать и что еще учитывать.
     
    Т.е. надо обрабатывать событие OnClick вашей кнопочки, а внутри обработчика то что написано выше.
    Типа как-то так для вашего случая)
  13. Like
    AngryOwl получил реакцию от Kitty в Как заставить написанное мной приложение не отключать подсветку, пока оно работает?   
    Если речь идет об Android, то смотрим здесь. (Android.JNI.PowerManager функции AcquireWakeLock и ReleaseWakeLock соответственно)
  14. Like
    AngryOwl отреагировална Kitty в [XE7] [Отклонение] Не удается запустить приложение на Android 5.0   
    Тут человека писал похожее и у него вроде все решилось: http://www.sql.ru/forum/1127246/obnovil-svoy-nexus-do-andriod-5-i-prilozheniya-na-delphi-perestali-rabotat
  15. Like
    AngryOwl получил реакцию от Kitty в Как задать форме размер больше размера экрана?   
    Добрый!
     
    Без проблем!
    Если форма будет иметь следующие свойства (пишу только измененные по умолчанию):
    Border.Styling = False BorderStyle = None то форма может иметь любые размеры и перемещать Вы ее можете как угодно - она не будет "прилипать".
     
    Жесты обрабатываются нормально, но для этого нужно:
    расположить на форме любой "контейнер" (TPanel например), задать ему свойство Align = Contents, Установите HitTest = True. Все элементы расположите на "контейнере". В нашем приложении Sphere Live при отключенных рамках (в настройках можно включить/отключить стандартные рамки окна) мы так и делаем.
    (кстати в нашем приложении работает именно тот пример, который Вы и описали, в случае полноэкранного)
      P.S. Вам ведь не нужны рамки формы? Т.к. Вы хотите размеры формы больше размеров экрана... При том, что это не ограничивает Вас в функциях изменения размеров и перемещения формы (размеры менять TSizeGrip, а перемещать за любой компонент на форме, если у него стоит свойство HitTest = True, а в обработчике OnMouseDown просписано StartWindowDrag;)
  16. Like
    AngryOwl отреагировална Kitty в Update 1 Fix List   
    Update 1 Fix List for RAD Studio XE7, Delphi XE7, and C++ Builder XE7
    http://edn.embarcadero.com/article/44156
  17. Like
    AngryOwl отреагировална brunnengi в [Android] Возможно ли наложить маску на видео?   
    Сразу извиняюсь сам не тестил, но может просто положить сверху TLayout, в него TText или TLabel.
    Будет слой поверх видео, а в нем уже текст с ценой.
  18. Like
    AngryOwl отреагировална Andrey Efimov в [Android] [XE7] Создание Папки   
    Файлы/папки созданные в каталоге "/data/data/приложение/***" не будут видны с компьютера, т.к. это защищённый каталог.
    Создавать в run-time можно (уверен почти на 100%) только файлы, со всеми ограничениями для этого каталога.
    Если необходимо создать файл/папку доступные извне, то создайте их тут:
    Внутренняя память: /sdcard/Android/data/приложение/*** Внешняя память: /внешняя карта/Android/data/приложение/***  
    Создавать точно можно так:
    Папка: TDirectory.CreateDirectory(Полный путь до новой папки); Файл: TFile.Create(Полный путь до нового файла);  
    Иногда, после создания файла/папки, если в этот момент устройство было подключено к ББ, необходимо переподключать устройство, т.к. некоторые девайсы при подключении к ББ блокируют работу с памятью.
     
    Полезное: Storage Options
  19. Like
    AngryOwl отреагировална Andrey Efimov в Как узнать, что экран устройства повернулся?   
    Первое, что пришло в голову:
    Когда происходит смена ориентации, срабатывает событие OnResize, вот в нём и сравнивать ширину и высоту формы.
     
    Upd.
    Глянул пример, вот этот "C:\Users\Public\Documents\Embarcadero\Studio\15.0\Samples\Object Pascal\Mobile Samples\User Interface\Forms". Там сделано так же.
  20. Like
    AngryOwl получил реакцию от Andrey Efimov в Как работать с Bluetooth?   
    Первое что попалось "под руку" при поиске:
    http://community.embarcadero.com/index.php/blogs/entry/bluetooth-le-support-in-rad-studio-xe7
    http://www.youtube.com/watch?v=LcACJNNCkFo
    http://www.youtube.com/watch?v=oeyGzuC_QqU
     
    А вообще - гугл в помощь ("delphi xe7 Bluetooth")
  21. Like
    AngryOwl отреагировална Alex Bozhko в TNotificationCenter. Можно ли изменить иконку?   
    Собствено, сабж. Можно ли изменить пиктограмму для нотификатора вообще и в Андроид в частности? По умолчанию,  показывается иконка приложения, а мне надо показывать несколько разных иконок.
     
    Спасибо.
  22. Like
    AngryOwl отреагировална ruslan в [Юмор] Очень серьезно   
    Как Вы думаете, к чему приведет выполнение следующего кода ?
    StartTime:= Now; while ( not Embarcadero.EOF ) or ( Embarcadero.Bugs.Count > 0 ) do begin   Trolling;   if MonthBetween(Now, StartTime) > 12 then   Embarcadero.Destroy; end; if ( Embarcadero.Bugs.Count > 0 ) then begin   while Embarcadero.Members.Count > 0 do   Embarcadero.Members[0].Destroy;      Mozg.Delete( Mozg.IndexOf('Delphi') ); end else exit;  
  23. Like
    AngryOwl отреагировална Brovin Yaroslav в Как открыть PDF в стандартном приложении просмотра PDF файлов?   
    Открытие любого файла в подходящем приложении в операционной системе Андроид выполняются одинаковым способом.
    Путем посылки намерения (Интент) с указанием файла и типа данных. Далее система ищет по указанному типу файла, какие приложения зарегистрированы на обработку файлов этого типа, Если приложение, которое может обработать этот файл, одно, то запускает активити приложения и передает туда ваш файл/данные. Если приложений несколько - запускает диалоговое окно выбора приложения, которое будет выполнять обработку вашего файла. Резюмируя это, смотрим на код:
    uses System.IOUtils, FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText; procedure TForm7.btnOpenPDFClick(Sender: TObject); const SAMPLE_PDF_FILENAME = 'example.pdf'; var Uri: Jnet_Uri; OpenLinkIntent: JIntent; PDFFileName: string; begin PDFFileName := TPath.Combine(TPath.GetDocumentsPath, SAMPLE_PDF_FILENAME); { Внутренний доступ} Uri := StrToJURI(PDFFileName); // Формируем намерение об открытии файла в стандартном приложении OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri); // Устанавливаем тип данных OpenLinkIntent.setType(StringToJString('application/pdf')); OpenLinkIntent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP); // Запускаем приложение и передаем ему наше намерение try SharedActivity.startActivity(OpenLinkIntent); except on E: Exception do ShowMessage('Не удалось открыть PDF. В системе нет доступных приложения для просмотра pdf'); end; end; В этом код pdf файл берется из самого пакета приложения (я включил pdf файл в пакет приложения).
    Если вам нужно вытащить файл в любом другом месте, просто укажите в PDFFileName полный путь к файлу в файловой системе вашего устройства.
     
    Проект доступен тут: OpenPDF.zip
  24. Like
    AngryOwl получил реакцию от Brovin Yaroslav в Развернуть TListBoxItem на всю форму   
    Доброй ночи!
    Я не стал динамически создавать элементы "меню". Просто накидал их на форму.
    Можно сильно "помудрить", чтобы привести все возможные варианты к единому коду, но что-то мне влом было писать (смотрите заремленный кусочек). А для примера использовал свойство HelpContext...
    Вообщем все в приложении. Думаю, там все достаточно просто и понятно. Все раскрывается так, как Вы описали, с анимацией.

    MenuEx.zip
  25. Like
    AngryOwl отреагировална ruslan в Push в Android   
    День добрый. Прошу совета.
    Необходимо реализовать получение push-сообщений на андроиде.
     
    Присутствует следующее:
    - проект в Google Console. Имеются project id и project number;
    - клиентское приложение на FM
    - работающий ruby-скрипт,который можно привязать к любому AppID, способный отправлять пуши через GCM(Google Cloud Messanging)  на конкретный device_token  и доказавший свою корректную работу.
     
    Про стандартные BAaS, вроде Kinvey и Parse, кот. раздают СВОИ token'ы слышал -> смотрел -> делал -> не понравилось.
    Мне не нужен чужой промежуточный не дешевый AppServer только для отправки push-уведомлений.
     
    И так, каким образом я могу реализовать регистрацию устройства напрямую в GCM, получить оттуда DeviceToken, и подписаться на push'и.
     
    P.S. Дай бог здоровья человеку, который знает решение данного вопроса и готов им поделится !
×
×
  • Создать...