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

AngryOwl

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

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

  • Посещение

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

    45

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

  1. Like
    AngryOwl отреагировална Brovin Yaroslav в [XE7] Что использовать вместо TFmxObject.AnimateXXX в XE7?   
    Добрый вечер,
     
    Эти методы были перенесены в класс FMX.ANi.TAnimator. Теперь эти методы классовые, поэтому в качестве первого параметра нужно указывать объект, для которого анимируются свойства. Так же в него вошли дополнительные методы по запуску триггеров и анимации по названию.
  2. Like
    AngryOwl получил реакцию от Kitty в У меня некачественно отображаются контролы в TLayer3D   
    Рискну предположить, что Вам вряд-ли кто-то мог подсказать, если сам с подобным не сталкивался.
    Ну вот я сталкивался, но не с таким, а подобным, и не стал ничего писать дабы не вводить в заблуждение...
    Однако, после Вашего второго коммента я вспомнил про "системы" и т.п.
     
    "это зависит от системы или от видеокарты?"
    От системы! А если точнее - от версии DirectX или GDI+.
    И это наблюдается именно в XP. Хотя и там, если я правильно помню, можно поправить положение путем манипуляций с параметрами приложения.
    В коде проекта надо типа такого:
    begin   GlobalUseDX10 := False;   GlobalUseDX10Software := True;   Application.Initialize;   Application.CreateForm(TfmMain, fmMain);   Application.Run; end. но тут многое зависит от того - чего Вы хотите от приложения. Качества? Скорости? Стабильности? Гарантии работы везде?
    Тогда комбинируйте. Если в этом есть необходимость...
    Но я бы оставил как есть.
     
    P.S. Не хочу никоим образом обидеть "обладателей" XP ), но она уже "пережиток" и отходит... И я бы не стал делать на ней упор. Хотя ее поддержка нужна однозначно!
  3. Like
    AngryOwl получил реакцию от Kitty в [iOS] Ориентация приложения при запуске.   
    А разве не получается в DesignTime определить - как она должна "стартануть" ?
    FormFactor.Orientations = .... и ставьте как надо, а остальное отключите.
     
    А если не срабатывае, или нужно в процессе фиксировать определнную ориентацию, то непосредственно в коде можно типа так:
    Application.FormFactor.Orientations := [TFormOrientation.soLandscape]; Это точно работает.
     
    Думаю, что правильно Вас понял.
  4. Like
    AngryOwl получил реакцию от Brovin Yaroslav в [iOS] Ориентация приложения при запуске.   
    А разве не получается в DesignTime определить - как она должна "стартануть" ?
    FormFactor.Orientations = .... и ставьте как надо, а остальное отключите.
     
    А если не срабатывае, или нужно в процессе фиксировать определнную ориентацию, то непосредственно в коде можно типа так:
    Application.FormFactor.Orientations := [TFormOrientation.soLandscape]; Это точно работает.
     
    Думаю, что правильно Вас понял.
  5. Like
    AngryOwl получил реакцию от Brovin Yaroslav в [Windows] Возможно ли получить номер жесткого диска?   
    Без WMI никак не получится.
    Но в данном случае не совсем понятно - что Вас так смущает?
    Вы же конкретизировали свой вопрос - он находится в разделе "Windows"...

    А в FMX данной возможности нет, думаю, из-за того, что это все-таки FMX )))
    Т.е. - кроссплатформенная библиотека. А с учетом того, что HDD в мобильниках и планшетах (в большинстве) отсутствует, то тем-более было бы не совсем уместно, с точки зрения разработчиков FMX, такие "изюминки" реализовывать.

    Так-что таких оберток нет и Вам придется, судя по всему, делать это самому...
  6. Like
    AngryOwl получил реакцию от zairkz в Как программно добавить анимацию к TListBoxItem   
    "Height - не работает"
    а в Вашем TListBox, в котором Вы меняете Item'ы, свойство ItemHeight случаем <> 0 ?
    В смысле - если ItemHeight <> 0, то изменение свойства Height для любого TListBoxItem работать не будет
     
    P.S. Вот простой пример, который только-что опробовал и он прекрасно работает именно так, как Вам нужно
    (удаляет выбранный элемент списка с анимацией)
    ... TListBoxItem(TListBox(Sender).Selected).AnimateFloat('Opacity', 0, 0.3); TListBoxItem(TListBox(Sender).Selected).AnimateFloatWait('Height', 0, 0.3); TListBox(Sender).Items.Delete(TListBox(Sender).Selected.Index); ... P.P.S. проверил - все работает и на Windows и на Android. корректно и с анимацией
  7. Like
    AngryOwl получил реакцию от zairkz в Как программно добавить анимацию к TListBoxItem   
    Не за что. Удачи!
  8. Like
    AngryOwl отреагировална Andrey Efimov в [iOS, Android] Как узнать MAC адрес?   
    Для Андроид: можно воспользоваться классами для работы с "Wi-Fi", конкретно методом "getMacAddress". Полную обёртку для работы с Wi-Fi я уже написал, так что вам остаётся только подключить её (Пример и обёртка лежат тут: Android API: package "android.net.wifi" или обёртка для работы с Wi-Fi)
  9. Like
    AngryOwl получил реакцию от shershen в Как работать с Drag and Drop?   
    "Проблема" обсуждалась уже на форуме в "Drag and Drop TListBoxItem между двумя TListBox".
    Достичь рабочего варианта возможно (на XE6. XE7 - пока разбираемся).
  10. Like
    AngryOwl отреагировална Danm в Где хранить настройки?   
    Запись, например в виндовые program files, запрещена для не админа. В osx аналогично. Это уже несколько оффтоп и на эту тему масса информации в интернете. (UAC, права,и.т.д..)
     
    Для osx я уже выше написал что делать, для виндоса же можно использовать GetSpecialFolderPath()
  11. Like
    AngryOwl получил реакцию от Brovin Yaroslav в Почему с каждой новой версией, размер изготавливаемого продукта становится все больше и больше?   
    Уважаемый "d7d1cd"!
    Вы пытаетесь "сравнивать сладкое с мягким"...
    И на Delphi и на CBuilder в RAD Studio можно создать подобное приложение, которое будет объемом в несколько десятков килобайт...
    А оно Вам надо?
    И это принципиальный вопрос!
    Если вы хотите написать элементарное приложение, в смысле GUI, - пишите все "ручками". И тогда у Вас получится минимальный объем.
    Ведь ясно, что в исполняемый файл Delphi или CBuilder, по умолчанию включены библиотеки например RTTI. Именно они весят больше всего. (при желании - Вы их можете отключить! и тогда объем бинарника уменьшится! Но тогда Вам придется отказаться от многих весьма удобных механизмов...)
    Если вы создаете приложение с формами, разрабатываемыми в DesignTime, а не "ручками" в RealTime, то и это несет с собой много библиотек.
    Меня вот, например, как программиста, более чем устравивает объем получаемых бинарников, компилируемых RAD Studio.
    И все дело в том, что чем больше программа по функционалу и содержимому, то тем меньше становится ее объем по отношению к аналогам созданным в других средах и языках. И, наконец, наступает тот момент, когда сравнение по объему полученного "бинарника" идет уже в обратную сторону...
     
    А при современных объемах доступной оперативной памяти, я бы на Вашем месте, переживал не за объем бинарника, а за объем "пожираемой" им памяти.
  12. Like
    AngryOwl получил реакцию от Kitty в Где хранить настройки?   
    Ну под Windows и MacOS можно типа так:
    function GetMyINIPath(const ASubdir: string = ''): string; begin   try     if ASubdir = '' then     Result :=       IncludeTrailingPathDelimiter({$IFDEF MACOS}'/Users/Shared/'{$ELSE}GetHomePath{$ENDIF}) +       ChangeFileExt(ExtractFileName(ParamStr(0)), '')     else     Result :=     IncludeTrailingPathDelimiter({$IFDEF MACOS}'/Users/Shared/'{$ELSE}GetHomePath{$ENDIF}) +       ChangeFileExt(ExtractFileName(ParamStr(0)), '') + PathDelim + ASubdir;     if not DirectoryExists(Result) then       ForceDirectories(Result);   except     Result := '';   end; end; А использовать, соответственно, так:
    TPath.Combine(GetMyINIPath, _ваш_файл_); А под Android, например, еще проще можно:
    TPath.Combine(TPath.GetDocumentsPath, _ваш_файл_); Может не слишком "красиво", но работать все должно.
  13. Like
    AngryOwl отреагировална Brovin Yaroslav в FGX. Индикация хода выполнения длительных операций, виртуальная клавиатура и ActionSheet   
    Я в процессе создания версии для XE7... 
    Постараюсь на следующей неделе доделать.
  14. Like
    AngryOwl получил реакцию от Kitty в Как задать форме размер больше размера экрана?   
    Добрый!
     
    Без проблем!
    Если форма будет иметь следующие свойства (пишу только измененные по умолчанию):
    Border.Styling = False BorderStyle = None то форма может иметь любые размеры и перемещать Вы ее можете как угодно - она не будет "прилипать".
     
    Жесты обрабатываются нормально, но для этого нужно:
    расположить на форме любой "контейнер" (TPanel например), задать ему свойство Align = Contents, Установите HitTest = True. Все элементы расположите на "контейнере". В нашем приложении Sphere Live при отключенных рамках (в настройках можно включить/отключить стандартные рамки окна) мы так и делаем.
    (кстати в нашем приложении работает именно тот пример, который Вы и описали, в случае полноэкранного)
      P.S. Вам ведь не нужны рамки формы? Т.к. Вы хотите размеры формы больше размеров экрана... При том, что это не ограничивает Вас в функциях изменения размеров и перемещения формы (размеры менять TSizeGrip, а перемещать за любой компонент на форме, если у него стоит свойство HitTest = True, а в обработчике OnMouseDown просписано StartWindowDrag;)
  15. Like
    AngryOwl получил реакцию от Brovin Yaroslav в Как задать форме размер больше размера экрана?   
    Проверить на XE5 уже нет возможности. Но на XE6-XE7 все работает. Однозначно.
  16. Like
    AngryOwl получил реакцию от Brovin Yaroslav в Возможно ли запустить анимацию с задержкой на время анимации?   
    Andrey Yefimov написал Вам правильное решение.
    У любого объекта-анимации есть событие OnFinish.
    Вам нажно назначить (либо переопределить) обработчик этого события.
    Т.е. решение, примерно, такое:
    нажимая на кнопку, запускаете анимацию (и не нужно ничего больше выполнять, так как нужно дождаться когда анимация закончится) когда анимация закончится (возникнет событие OnFinish), выполните необходимые действия (вызовите в обработчике данного события процедуры/функции) и никаких ModalResult в данном случае не нужно...
     
    P.S. И еще. Если нужно, чтобы при нажатии на кнопку сначала что-то отработало в GUI (какой-то код, например, та же анимация), а лишь потом выполнить что-то далее (в том же обработчике нажатия на кнопку), то Вам требуется синхронизация в основном потоке.
  17. Like
    AngryOwl отреагировална Brovin Yaroslav в Заставка приложения для Android   
    В XE7 появилась функция задания заставки приложения для андроид устройств. Если раньше пользователям приходилось создавать свои решения этой задачи (Как создать заставку для андроид приложения?), то теперь заставку можно легко указать в настройках проекта:

  18. Like
    AngryOwl отреагировална Andrey Efimov в Как узнать, что приложение меняет свое состояние?   
    Вообще не рассчитывайте так на фоновую работу приложения без Сервиса. Андроид может завершить ваше приложение в любой момент, система сама решает можно ли оставить приложение в фоне или лучше освободить оперативу.
     
    По вашему вопросу:
    Первое что приходит в голову – это отлавливать события, которые происходят при работе с приложением. В блоге, я дал вам ссылку на статью Жизненный цикл мобильного приложения.
     
    Ярослав уже привёл пример такой ловли событий.
  19. Like
    AngryOwl отреагировална Brovin Yaroslav в Как узнать, что приложение меняет свое состояние?   
    В XE6 появился специальный сервис для контролирования смены состояния приложения IFMXApplicationEventService. Он позволяет задать свой обработчик на событие смены состояния. Всего поддерживаются следующие типы состояний TApplicationEvent:
    FinishedLaunching - приложение запущено BecameActive - приложение стало активным, после того, как до этого было свернутым. WillBecomeInactive - приложение будет активировано EnteredBackground - приложение свернулось WillBecomeForeground - приложение будет свернуто WillTerminate - приложение будет завершено LowMemory - Нехватка памяти OpenURL - открытие приложение по ссылке. 1 Способ. Запрос сервиса IFMXApplicationEventService
    Соответственно, чтобы узнать о смене состояния нужно:
    Запросить сервис:
    uses FMX.Platform; var ApplicationService: IFMXApplicationEventService; begin TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, ApplicationService); Создать свой обработчик и задать его при помощи полученного сервиса:
    function TForm1.ApplicationEventChanged(AAppEvent: TApplicationEvent; AContext: TObject): Boolean; begin // Здесь получаем новое состояние приложения end; var ApplicationService: IFMXApplicationEventService; begin TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, ApplicationService); if ApplicationService <> nil then ApplicationService.SetApplicationEventHandler(ApplicationEventChanged); end; 2 Способ. Подписка на получение сообщения:
    Вместе со сменой состояния платформа FMX осуществляет широковещательную рассылку сообщения о смене состояния: TApplicationEventMessage
    Второй способ заключается в подписке на это сообщение:
    Подписываемся на получение сообщения TApplicationEventMessage:
    uses System.Messaging; // Подписка TMessageManager.DefaultManager.SubscribeToMessage(TApplicationEventMessage, DoApplicationEventChanged); Получаем сообщения
    procedure DoApplicationEventChanged(const Sender: TObject; const Message: TMessage); begin end; Не забываем отписаться от сообщений, когда это больше уже не нужно:
    // Отписка TMessageManager.DefaultManager.Unsubscribe(TApplicationEventMessage, DoApplicationEventChanged);
  20. Like
    AngryOwl отреагировална estra в [Windows] Как определить путь к исполняемому файлу приложения?   
    Судя по разделу речь идет не о мобильных платформах. Тогда определить путь к исполняемому файлу приложения можно так:
    ParamStr( 0 );
    Если обратиться к справке, там написано:
    Returns a specified parameter from the command line.
    ParamStr returns the parameter from the command line that corresponds to Index, or an empty string if Index is greater than ParamCount. For example, an Index value of 2 returns the second command-line parameter.
    Note: ParamStr(0) returns the path and file name of the executing program (for example, C:\TEST\MYPROG.EXE).
    Другими словами - параметром для функции ParamStr является индекс параметра командной строки. Нулевой индекс всегда возвращает полный путь к файлу. Если вы запустили исполняемый файл с параметром (например: c:\app.exe param), то:
    ParamStr(0) = 'c:\app.exe'
    ParamStr(1) = 'param'
    Узнать количество параметров командной строки можно с помощью функции ParamCount.
  21. Like
    AngryOwl отреагировална Andrey Efimov в [Android] Как скрыть/показать системный Status Bar?   
    XE7 хорошо! Вот написал на скорую руку статейку для XE6.
     
    эм...
    или это не то?
  22. Like
    AngryOwl отреагировална Brovin Yaroslav в [Android] Как скрыть/показать системный Status Bar?   
    С учетом того, что XE7 официально анонсирована. Возможность скрытия и отображения статус бара на Андроиде была добавлена и реализована в XE7.
  23. Like
    AngryOwl получил реакцию от sviat9440 в Можно ли задать минимальные размеры для формы?   
    Я думаю со мной согласится абсолютное большинство, что ограничение размеров формы - это проблема!
    Причем проблема с "большой буквы".
    Как это сделать в VCL - все в курсе.
    Предвидя ответ, что это можно сделать самому "ручками", спрошу - почему все должны лезть в исходники Firemonkey и править "родные" модули, дабы достичь нужного результата?
    Вроде это самые элементарные свойства (предопределение минимальных/максимальных размеров формы).
    Поэтому очень хотелось бы вынести это "обсуждение"/проблему на рассмотрение Embarcadero. И, конечно, хотелось бы чтобы они эту проблему решили и решили в срочном порядке.
     
    Согласитесь (думаю и наши уважаемые гуру согласятся), что этот вопрос относится к элементарным и основным проблемам.
    Представьте себе любого начинающего FMX-прогера, который в первом же своем FMX-проекте столкнется с данной проблемой...
     
    P.S. Как крайний вариант - рассматриваю коллективное обсуждение и решение этой задачи с публикацией кода.
  24. Like
    AngryOwl получил реакцию от Kitty в [TWebBrowser] Когда появится поддержка TWebBrowser для Windows и OSX?   
    Что значит "когда" ?
    Вообще-то текущая версия (собственно как и предыдущие) поддерживает и Windows и MacOS.
    Поэтому Ваш вопрос либо не понятен, либо неуместен вовсе.
  25. Like
    AngryOwl отреагировална Brovin Yaroslav в Мировой тур RAD Studio XE7   
    Предложение хорошее. Я сделаю отдельную ветку в разделе "Дополнительные ресурсы по FireMonkey" -> "Информация о версиях RAD Studio"
    Ветка сделана: http://fire-monkey.ru/forum/165-xe7/
×
×
  • Создать...