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

AngryOwl

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

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

  • Посещение

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

    45

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

  1. По поводу размера StatusBar посмотрите тут. (ссылка вроде уже не рабочая, а решение прикреплено).

    Что касается NavBar (я думаю Вы про TToolBar), думаю, Вам стоит копать в сторону изменения стиля именно компонента (или создать свой, с нужной высотой). Не уверен, но думаю копать в ту сторону)

    P.S. Кстати, есть еще вот такое решение.

  2. Попробуйте просто "обернуть" эту часть кода:

    Application.CreateForm(TForm27, Form27); // можно это тоже внутрь Synchronize поместить

    TThread.Synchronize(nil, procedure
    begin

      Form27.ProgressBar1.Visible := false;
      Form27.StartUpLabel.Text := 'Ждите...';
      Form27.Visible := true;

    end);

  3. Посмотрите в сторону "оберток". Например тут. Там есть файл android.hardware.fingerprint.pas (и не только). Вроде бы, есть все, что нужно. А уж как все это использовать - это другой вопрос, смотрите примеры.

  4. Добрый!

    Никак. Как и многие другие элементы...

    Решение, до сих пор, - создание своего компонента или модуля для мультиязычных приложений.

    Пример - Мультиязычность в андроиде.

    Код, конечно, давно изменился и оптимизировался не раз. Если будет свободное время - выложу как-нибудь последнюю версию.

  5. Сталкивался с подобным. В моем случае, решение было следующим: использовал не OnItemClick, а OnMouseDown.

    И у TListBox свойство MultiSelectStyle = None.

    Код, примерно, такой:

    procedure TfmMain.lbxCListMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
    var
      LI : TListBoxItem;
    begin
      if Assigned(Sender as TListBox) then
      begin
        LI := TListBox(Sender).ItemByPoint(X, Y);
    
        if Assigned(LI as TListBoxItem) and (Button = TMouseButton.mbLeft) then
        begin
          LI.IsSelected := True;
    
          TTask.Run(procedure
          begin
                DoSelectItemC(lbxCList, LI.Index); // тут Ваша процедура обработки выбранного TListBoxItem (если внутри DoSelectItemC работаем с GUI, то не забываем TThread.Synchronize()...)
          end);
        end;
      end;
    end;

     

  6. 6 минут назад, Дмитрий Ш. сказал:

    Такой проект не должен умереть без следа, подумайте, возможно исходники стоит положить на гитхаб. :)

    Насколько я знаю - исходники невозможно опубликовать по юридическим соображениям...

  7. Только что, Golovanyuk сказал:

    То есть достаточно сменить кабель и программа всегда будет запускаться со среды? А зависания приложения и вылет программы в безобидных случаях? Мне кажется, у меня с настройками Java не гуд.

    Кто-нибудь может разместить скрин идеальных настроек для Delphi 10.1? Спасибо.

    Я не утверждаю, что в Вашем случае - это решение вопроса. Я лишь констатирую факт того, что иногда, из-за некачественного кабеля могут возникать проблемы, которые никак не ассоциируются с кабелем (не запускается приложение, не деплоится и т.п.)

    У меня работает все при таких настройках

    Screen_01.JPG

    Screen_02.JPG

    Screen_03.JPG

  8. Отмечу, что сталкивался с такой проблемой - То работает запуск приложения на смартфоне, то не работает, то странности возникают еще при деплоее на смартфон... В общем скажу просто - проблема была в кабеле. Самое интересное, что при подключении смартфон "виделся", и вроде бы все ок, но постоянные глюки при запуске приложения привели к одному решению - смена кабеля и все заработало.

    Не скажу, что это панацея, но я в своей практике уже трижды сталкивался с подобным. Кабель может работать на подзарядке, и даже при работе с устройством в плане чтения и записи фалов, через проводник, но будет "глючить" при более "тонкой" работе.

  9. 57 минут назад, Rusland сказал:

    В какой момент это вызывать?

    Собственно это зависит от того как Вам требуется. У меня при нажатии на кнопку на форме.

  10. Мне помогло следующее:

      TThread.Synchronize(nil, procedure
      begin
        memoChatMessage.Text := ' ';
        memoChatMessage.SelectAll;
        memoChatMessage.DeleteSelection;
      end);

     

  11. 2 часа назад, dnekrasov сказал:

    А каким образом добраться до этих свойств в рантайме?

    Зачем?

    Все просто. Все описано - измените стиль. Не хотите менять стандартные? - создайте дубль, назовите иначе, измените свойства - используйте оба стиля, смотря какой когда нужен.

    Если нужно в рантайме, то все как обычно - используйте 

    StylesData['тут_имя_свойства'] := ...

     

  12. Я поступил проще - на Токио пока даже и не пробовал переходить... Берлин работает, как работает - устраивает. Пока Токио не допилят, пока об этом все не напишут, и пока не появится как минимум первый апдейт - даже и пробовать не буду.

    Политика Embarcadero мне понятна. Искренне надеюсь, что им хватит ума и бюджета на то, чтобы развивать продукт. Оставался и остаюсь приверженцем Delphi, и во многих случаях ему просто нет объективной замены/альтернативы. Но кидаться "в омут" (на каждую новую версию) - желания нет.

  13. 59 минут назад, Rusland сказал:

    Какой-то заброшенный форум )

    Есть такое дело. Он (Боян Митов) один автор сего продукта. Делает его ооооочень давно. В последнее время ударился в создание компонент и библиотек для работы с Arduino (почитать все новости можно в блоге). Недавно объявил о том, что скоро появится версия VideoLab для FMX с поддержкой не только Windows, но и MacOS и Android.

  14. 3 минуты назад, Rusland сказал:

    Вот я и смотрю что VideoLab VCL only ) Ну что ж, подождем FMX

    Нет нет. Есть и под FMX. Смотрите на странице загрузки - Firemonkey and VCL, Current Version Installers.

    Но проблемы все те же останутся. Только Windows и сложность организации rtmp-потоков.

  15. Называется VideoLab (библиотека для работы с видео)

    Проблем с ним несколько.

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

    Во-вторых - непосредственно сама эта либа работать с RTMP не может. Так-что прийдется использовать фильтры, которые еще найти надо будет, если они есть )))

  16. На случай "своими руками", я бы порекомендовал Вам копать в сторону WebRTC. Разумеется все зависит от конечных задач, стоящих перед Вашей программой. Судя по всему - это организация потокового видео в режиме реального времени на соответствующие сервисы. А это значит, что:

    - нужно организовать формирование и передачу RTMP (RTSP) потока, с чем в Delphi (если о нем речь идет) есть определенные сложности) (в ситуации с С++ будет немного проще);

    - нужно использовать кодеки (encoder), формат которых поддерживается теми системами, на которых вы хотите видеть воспроизведение потока. Аналогично, как и в вопросе с rtmp-потоком, ситуация с реализацией в Delphi будет сложнее (хотя тоже можно);

    - что касается конвертации кадров из одного формата в другой, то тут все немного проще. В интернете полно алгоритмов описывающих конвертацию битмапа из одного формата в другой. Разумеется - не все так просто. Поскольку необходимо не просто конвертировать кадры, перед тем как передать их энкодеру, но еще и правильно от энкодера получить сам поток и передать его. После энкодера, конечно, идут не просто "кадры". В зависимости от настроек энкодера, сначала идет "ключевой кадр" (и он повторяется с определенной периодичностью), а за ним последовательность "фреймов" - "описывающих" лишь изменения в "ключевом кадре".

    Кратко как-то так...

    В любом случае, я бы порекомендовал Вам сначала пошарить по ресурсу, описывающему работу с потоковым видео. Просто понять как это работает, в принципе. Ну и многое можно там же подчерпнуть. Например, просто как  оптимальнее настроить энкодер для трансляции того или иного видео.

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