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

Kitty

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

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

  • Посещение

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

    16

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

  1. Like
    Kitty отреагировална Brovin Yaroslav в Выравнивание текста по обеим сторонам   
    Нет, поддержки выравнивания текста по ширине контейнера нету.
  2. Like
    Kitty отреагировална Brovin Yaroslav в Вторичное окно программы без передачи ему фокуса   
    У попап формы было свойство отвечающее за то будет ли она закрываться при смене фокусе, перемещении родительского окна и тд или нет. Что-то вроде StayOpened.
  3. Like
    Kitty отреагировална Brovin Yaroslav в Применение эффекта к форме   
    Эффекты могут быть применены только к контролам. Поэтому, в вашем случае достаточно:
    Положить промежуточный контейнер (TLayout) в вашу форму Переместить все контролы формы в контейнер Кинуть в контейнер эффект.
  4. Like
    Kitty отреагировална AngryOwl в [XE7-XE8] [Android] Highscreen Spider   
    Были проблемы с поиском драйверов для этого устройства под Windows 7/8/10 (x64)
    Поэтому выложу сюда дрова, для тех кому могут понадобиться.
    AndroidUSB Google (x86-64).zip
     
  5. Like
    Kitty отреагировална AngryOwl в [XE7-XE8] [Android] SONY   
    Для чего использовались драйвера (Windows 7/8/10 (x64)):
     
    Sony Xperia SP
    Sony Xperia L
    Sony Xperia Tablet Z
    и в архиве еще туча райверов для других девайсов от Sony ( размер архива 400 Mb !)
     
    https://drive.google.com/open?id=0B5LS-2rAfJMDVkIycVlOQ1hqejA
     
    P.S. Здесь и сделаю примечание по работе с данными девайсами.
    В случае попытки работы с графическими примитивами, рисование закрашенных градиентом примитивов, возникает "баг" - вместо того чтобы рисовать, например, прямоугольник залитый градиентом, рисуется прямоугольник цветом "Fuchsia".
    Чтобы избежать этого, рекомендую использовать обычные PNG.
    Например:

  6. Like
    Kitty отреагировална AngryOwl в [XE7-XE8] [Android] Fly IQ4516 Tornado Slim Octa   
    Аналогично, как и с другими "нестандартными" девайсами - почти пол дня потратил на поиски дров под Windows 7/8/10 для данного девайса. Ничего не помогло, кроме данной программки.
    Устанавливаем ее - она дает возможность работать с тел.: контакты, файловый менеджер и т.д. и т.п.
    А главное - ставит драйвера для него!
    mobilego_setup_full818.zip
     
    З.Ы. после установки программу можно и удалить - главное дрова поставит...
  7. Like
    Kitty отреагировална xenon54 в [TListBox] Как отобразить итемы в виде панелей?   
    50 элементов для ListBox в мобильной платформе это ооочень много. Вообще, где-то писали что ListBox следует использовать не более чем как для меню, т.е. количество элементов не более десятка, на вскидку. Если у вас список более 10 элементов, листбокс лучше не использовать. ListView очень хорош с большим количеством элементов. Основная его фишка ускорения работы, как я  понял, это то что он не держит кучу чилдрен контролов у себя и всю отрисовку делает только он сам, а вот листбокс это куча контролов, каждый из которых занимается отрисовкой. Есть у тебя 50  итемов, на них на каждом по 3 контрола, считай метод отрисовки вызовется 201 раз (1=сам листбокс, 50 это каждый итем, и еще 150 это по 3 контрола в каждом итеме).
  8. Like
    Kitty отреагировална Brovin Yaroslav в Аналог Post в FMX android   
    С моей точки зрения, метод TThread.Queue имеет один весомый недостаток. А именно:
    Если вызов метода TThread.Queue идет в главном потоке, то код будет вызыван немедленно. class procedure TThread.Queue(const AThread: TThread; AMethod: TThreadMethod); var LSynchronize: PSynchronizeRecord; begin if AThread <> nil then AThread.Queue(AMethod) else begin New(LSynchronize); try LSynchronize.FThread := nil; LSynchronize.FSynchronizeException := nil; LSynchronize.FMethod := AMethod; Synchronize(LSynchronize, True); // <-- Смотрим сюда finally if MainThreadID = CurrentThread.ThreadID then Dispose(LSynchronize); end; end; end; А потом на кусочек этого кода:
    class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False); var SyncProc: TSyncProc; SyncProcPtr: PSyncProc; begin if CurrentThread.ThreadID = MainThreadID then begin if Assigned(ASyncRec.FMethod) then ASyncRec.FMethod() else if Assigned(ASyncRec.FProcedure) then ASyncRec.FProcedure(); end else Из реализации метода Synchronize, как раз и видно, что код будет вызван немедленно, если текущий тред - это главный поток. 
     
    Итог
    TThread.Queue заменяет PostMessage, если вызов идет не из главного потока. Если вызов TThread.Queue идет из главного потока, то это равносильно прямому вызову процедуры или метода.  
  9. Like
    Kitty отреагировална xenon54 в ListViewItem Transpatent, как?   
    У стиля листвью есть объект "itembackground" : TColorObject. Выставляете у него свойство "Color" в нужное вам значение с альфа каналом (как пример $11FF0000) и будет вам счастье. 
  10. Like
    Kitty отреагировална Brovin Yaroslav в FGX. Индикация хода выполнения длительных операций, виртуальная клавиатура и ActionSheet   
    Добавлена новая версия расширения компонентов FireMonkey. Новый пакет поддерживается только для XE6. 
     
    Список возможностей:
    Progress Dialog - Добавлены события OnShow, OnHide. Progress Dialog - Исправлены утечки памяти на Андроид и IOS TfgProgressDialog - Добавлен метод для немедленного сброса прогресса без анимации ResetProgress. TfgActionSheet - Добавлена поддержка действий TAction. Так же теперь можно указать только по одной кнопке деструктивного и отменного типа. TfgColorsPanel - Добавлен новый контрол для выбора цветов из готовых пресетов. Поддерживает следующие наборы цветов: WebSafe, X11. Позволяет указывать свои наборы цветов. TfgGradientEdit - Добавлен новый контрол для задания градиента. TfgLinkedLabel - Добавлен новый контрол - метка со ссылкой. Открывает указанную ссылку в стандартном браузере. Поддерживает все платформы. Добавлены и улучшены примеры каждых контролов. Добавлен набор хелперов И другие улучшения на уровне кода. TfgActivityDialog
    Работа под iOS:

    Работа под Андроид (Выше, чем GingerBread 2.3):

    Работа под Андроид (GingerBread 2.3):

    TfgProgressDialog
    Работа под iOS:

    Работа под Андроид (Выше, чем GingerBread 2.3):

    Работа под Андроид (GingerBread 2.3):
    TfgActionSheet


    TfgColorsPanel

    TfgLinkedLabel

  11. Like
    Kitty отреагировална Brovin Yaroslav в Странное поведение XE8   
    Добрый день,
     
    Да, ошибку исправлю. Используйте 
    ComboBox.Clear; Вместо:
    ComboBox.Items.Clear;
  12. Like
    Kitty отреагировална Skyline в [Android] Подключение MediaPlayer с Android API   
    Вопрос решён.
    Для воспроизведения/открытия/просмотра аудио/видео встроенными средствами написал такую функцию:
    void HiddenPlay(String FileName) {     _di_JMediaPlayer Player = TJMediaPlayer::JavaClass->init();     Player->setDataSource(StringToJString(FileName));     Player->prepare();     Player->start(); } Для воспроизведения/открытия/просмотра любого файла установленными на устройстве программами такая функция:
    void PlayMulti(String FileName, String MimeType) {     _di_JIntent Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW);     _di_Jnet_Uri Data = StrToJURI(FileName);     Intent->setDataAndType(Data, StringToJString(MimeType));     SharedActivity()->startActivity(Intent); } Вторым аргументом надо передать mime-type файла.
    Пример вызова:
    PlayMulti("test.jpg", "image/jpeg");
  13. Like
    Kitty отреагировална Кривяков Виталий в TUITabControl   
    Добрый день!
     
    В теме про наш продукт http://fire-monkey.ru/topic/1519-1c-papyc-mobilnoe-prilozhenie-dlia-masterov-priemschiko/ меня просили поделиться исходным кодом компонента TabControl с поддержкой слайда табов пальцем. С удовольствием делюсь
    В составе архива сам компонент и пример его использования.
    FMXUI.zip
  14. Like
    Kitty отреагировална Brovin Yaroslav в [Aeronavigator] Три мобильных приложений для гражданской авиации на ОС Windows, Android, iOS.   
    Официальный сайт: http://aeronavigator.ru/index.php/ru/products Автор: Aeronavigator Ссылка на приложения: Google Play, App Store Подробное описание: aeronavigatorstory-ru.pdf  


  15. Like
    Kitty отреагировална Brovin Yaroslav в [TWebBrowser] [iOS] Открытие прикрепленной html страницы в TWebBrowser   
    Добрый день,
     
    Прикрепляю проект, где все загружается корректно (iOS Simulator). WebBrowserLoadLocalFile.zip
    Внимательно проверьте место назначения развертывания файла и факт того, что он задеплоился:
    Обязательно слэш в конце: "Startup\Documents\" Строка с файлом в Deployment Manager не должна быть серой!  
    Загрузка идет таким способом:
    uses System.IOUtils; procedure TForm15.FormCreate(Sender: TObject); begin WebBrowser1.URL := 'file:/' + TPath.Combine(TPath.GetDocumentsPath, 'DemoPage.html'); end; P.S. Сделано все по руководству Включение своих файлов в приложение
  16. Like
    Kitty отреагировална Brovin Yaroslav в [1C-Papyc] Мобильное приложение для мастеров-приемщиков сервсиных автоцентров на ОС Android   
    Официальный сайт: https://rarus.ru/1c-auto/alfa-avto-mobilnyy-priemshchik/ Автор: 1C-Pарус Ссылки на приложение: Google Play Подробное описание: 1С_Рарус.pdf  
     




  17. Like
    Kitty отреагировална antarey в Проблемы со стилями и релиз конфигурацией XE8 &C++   
    Написал Ярославу, говорит взяли на заметку, правда когда поправят не уточнил
  18. Like
    Kitty отреагировална Brovin Yaroslav в Удаление формы из back-стека   
    Например, у нас есть 3 формы MultipleForms.zip
    Главная (Form1) Форма ввода пароля (Form2) Третья форма (Form3) Form2 в момент открытия Form3 должна поставить себя в очередь на самоудаление (Release). Чтобы когда откроется Form3, Form2 была уже разрушена. В этом случае после закрытия Form3, вы вернетесь в Form1.
     
    Код открытия Form3 из Form2:
    procedure TForm2.Button2Click(Sender: TObject); begin Form3.Show; Release; end; procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := TCloseAction.caFree; end;
  19. Like
    Kitty отреагировална Brovin Yaroslav в [TListBox] Как отобразить итемы в виде панелей?   
    TListView хорош для отображения большого объема данных. Но он с точки зрения добавления отдельных полей внутрь итемов, требует дополнительных знаний. ПОэтому если данных не много, то для этих вещей хорошо подходит TListBox, с которым проще работать.
     
    Поэтому нужно смотреть по ситуации.
    Много итемов и мобильные платформы -> TListView Мало итемов или настольные платформы -> TListBox
  20. Like
    Kitty отреагировална Brovin Yaroslav в Шторка TMultiView залезает на Toolbar   
    По идеи если вы хотите, чтобы у вас тулбар распологался сверху относительно всего остального, то TMultiView и TargetControl должны лежат в отдельном контейнере. Например так:

    Потому что TMultiView в режиме Drawer распологается в ручную относительно своего родителя. На моем примере Drawer будет вытянут по высоте Layout1. Если же TMultiView лежит на форме, то он будет растягиваться по высоте формы.
  21. Like
    Kitty отреагировална UniSoft в Проблемы со стилями и релиз конфигурацией XE8 &C++   
    ну исходники библиотек то одни...
    а вот в x64 не проявляется...
    да и еще этот баг там не единственный, понизив приоритет инициализатора все запускается нормально,
    но падает уже при закрытии и в каком-то другом модуле.
     
    патч fmx.lib и cw32mt.lib решают проблему... 
    http://rghost.net/6rNpG5LlC 
    но я бы не рекомендовал это использовать, высока вероятность, 
    что может начать конфликтовать с какими либо другими модулями.
     
    как устроена инициализация, и о каких приоритетах идет речь, 
    можно посмотреть тут: функция _init_exit_proc() 
    C:\Program Files (x86)\Embarcadero\Studio\16.0\source\cpprtl\Source\startup\initexit.c 
    C:\Program Files (x86)\Embarcadero\Studio\16.0\source\cpprtl\rtlinc\_startup.h 
     
    по хорошему, нужно бы отправить баг-репорт, ведь баг то критический,
    но у меня нет EDN аккаунта.
  22. Like
    Kitty отреагировална Brovin Yaroslav в [TMultiView] Как избежать задержки при первом появлении TMultiView?   
    Так, я посмотрел. Сохраняем себе такую процедуру:
    procedure PreloadContent(const Control: TControl); var I: Integer; begin if Control is TStyledControl then TStyledControl(Control).ApplyStyleLookup; for I := 0 to Control.ControlsCount - 1 do PreloadContent(Control.Controls[I]); end; Она форсирует загрузку стилей. Задержка при появлении TMutliView заключается в том, что стиль загружается не сразу у любого контрола, а только по мере появления контрола. Обычно это происходит при первой отрисовки. Это правило касается всех контролов.
     
    Поэтому, в этом случае, вам нужно форсировать загрузку стилей. Это можно сделать при помощи моей процедуру PreloadContent.
    Добавьте в TForm.OnCreate и это решит задержку при первом появлении:
    PreloadContent(MultiView1);
  23. Like
    Kitty отреагировална UniSoft в Проблемы со стилями и релиз конфигурацией XE8 &C++   
    Проблема в инициализации модулей, точнее в последовательности их инициализации.   FMX.Types.pas initialization     ...     // <<< тут проблема,      // на момент вызова этого конструктора, инициализация модуля System.Rtti.pas     // еще не выполнялась...     // т.е. модуль System.Rtti.pas инициализируется после FMX.Types.pas     SharedContext := TRttiContext.Create;     ...   System.Rtti.pas class function TRttiContext.Create: TRttiContext; begin   EnsurePoolToken(@Result.FContextToken); end;   constructor TPoolToken.Create; begin   TMonitor.Enter(PoolLock); // вот тут то и падение, модуль еще не инициализирован и PoolLock = nil   try     if Pool = nil then     begin       Pool := TRttiPool.Create;       PoolRefCount := 1;     end     else       Inc(PoolRefCount);   finally     TMonitor.Exit(PoolLock);   end; end;   procedure EnsurePoolToken(TokenRef: PInterface); var   sample: Pointer;     procedure DoCreate;   var     tok: IInterface;   begin     tok := TRttiContext.FGlobalContextToken;     if tok = nil then       tok := TPoolToken.Create;     if AtomicCmpExchange(PPointer(TokenRef)^, Pointer(tok), sample) = sample then     begin       // We won the race to initialize the TokenRef location, so       // zero-out interface reference without decrementing reference count.       PPointer(@tok)^ := nil;     end;   end;   begin   sample := PPointer(TokenRef)^;   if sample <> nil then     Exit;   DoCreate; end;   initialization   ...   PoolLock := TObject.Create;   Есть еще один нюанс, инициализация System.Rtti.pas зачем-то выполняется два раза, к краху это не приведет, но небольшой (не накопительный) memleak будет.   Проблема в библиотеках, и похоже только Win32   ЗЫ. к стилям никакого отношения не имеет... достаточно одной строчки:  void __fastcall TForm1::FormCreate(TObject *Sender) { TValue::From<String>("test"); }
  24. Like
    Kitty отреагировална Gingercat в Впечатления от Update1 в C++ Builder XE8   
    Хм - видимо нужно прекращать разговор - я не пойму чего вы хотите. Волшебной кнопки - написать программу не существует. С чего вы взяли, что VS неудобная? С чего взяли,            что большинство программ написаны  В, ЕЩЕ РАЗ ПОДЧЕРКНУ - В, а не на (НА языке пишут В среде разработки) - кто вам выдал, под страхом смерти, такую секретную информацию)))) Писать можно и в нотепаде - это лишь вопрос удобства и не более.
     
    Большинство программ пишутся на плюсах и си (хотя, как я подозреваю, понятие - программа - у нас разные), и поверьте - далеко не в VS (есть более достойные и бесплатные кандидаты).
  25. Like
    Kitty отреагировална zairkz в Более быстрая альтернатива DrawBitmap   
    Попробуй движок Shadow Engine для Firemonkey, FPS впечатляет.
    https://www.youtube.com/watch?v=w6lGasU61HQ
     
    Gihub: https://github.com/dimsa/ShadowEngine
×
×
  • Создать...