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

d7d1cd

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

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

  • Посещение

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

    7

Весь контент d7d1cd

  1. d7d1cd

    Serial port

    @destroyer86, спасибо. Сейчас возникла необходимость в этом. Но мне надо завести это в C++Builder. Не поможете? Jar файл я в свой проект добавил, обертку скомпилировал и получил плюсовой hpp хедер, который приинклудил в коде. Как мне получить список доступных COM портов?
  2. d7d1cd

    Serial port

    А не будете ли Вы так любезны и не выложите ли сюда jar-файл и файл обертки?
  3. d7d1cd

    Serial port

    Получилось использовать COM порт в Android?
  4. Вот код добавления кнопки и ее удаление без условной компиляции, который работает и на Windows и на Android, а так же, когда при создании указывается владелец: // btn объявлен в описании класса TForm1 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { btn = 0; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { btn = new TButton(this); btn->Text = L"Created!"; btn->Parent = this; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { if(!btn) return; btn->Parent = 0; RemoveComponent(btn); delete btn; btn = 0; }
  5. Счётчик увеличивается на 2 потому что одну ссылку хранит владелец, а вторую указатель bi. Тут я не прав. Есть статья Бровина Ярослава. Там сказано, что каждый компонент с фокусом получает дополнительную ссылку. Я проверил, так происходит только тогда, когда при создании объекта указывается его владелец. Поэтому не указывай владельца при создании объекта. Владелец нужен только для автоматического удаления того, кем он владеет при удалении его самого. У тебя же не тот случай.
  6. Owner объявлен как __unsafe для того, чтобы объекты не увеличивали счетчик ссылок у их владельцев. То есть, это для того, чтобы когда мы пишем, например: TButton *btn = new TButton(Form1), то счетчик ссылок у Form1 не изменился. Когда мы указываем владельца при создании объекта, то он (создаваемый объект), попадает в список того, чем владеет владелец, поэтому счетчик ссылок создаваемого объекта увеличивается.
  7. Приветствую всех. Есть код: std::vector<TControl*> ctrls; ctrls.push_back(Layout1); При компиляции под Виндоус все работает. При компиляции под Андроид ошибка на этапе компиляции: Как это можно победить?
  8. Применил программно стиль, используя код Ярослава, но не до (как советовал Barbanel), а после назначения родителя фрейму (иначе все равно тормозит). То есть, добавил вкладку в табконтрол (метод Add), создал динамически фрейм, назначил ему родителем созданную вкладку и применил стиль ко всем компонентам, начиная с фрейма. Если открыть приложение и выбрать из списка задачу, то теперь при открытии "окна" этой задачи наблюдается незначительная не плавность появления (гораздо меньше, чем до использования предварительной загрузки стиля). Возврат на "экран" со списком задач происходит плавно. И если снова выбрать задачу, то ее "окно" уже появляется без тормозов. То есть, первая смена вкладок с момента запуска приложения чуть-чуть подтормаживает. Затем все работает плавно. Пробовал заранее применять стиль ко всему табконтролу и его содержимому, но это не помогло.
  9. Приветствую всех. Подскажите, зачем нужно свойство Locked? Точнее по справке я знаю для чего оно: "A locked control cannot be modified at design time.". Однако если установить у компонента галку Locked (тестировал на TLayout), то компонент только переместить нельзя. Все остальное с ним делать можно.
  10. Подскажите, как заранее присвоить стиль программно. P. S. Смена табов рывками происходит только на Андроид. На Windows все плавно.
  11. Реализовал вышеуказанное за некоторым исключением. При выборе пользователем задачи, вкладка в TTabControl создается динамически. Элементы управления для определенного "экрана" хранятся на фрейме, который тоже создается динамически. При этом владельцем указывается ранее созданная вкладка. Затем вкладка делается родителем фрейма и она (вкладка) анимированно отображается. При возврате на "экран" со списком задач вкладка удаляется из TTabControl и память занятая ею удаляется оператором delete (а так как вкладка была владельцем фрейма, то и он освобождает память). Все работает как задумано, но смена вкладки со списком задач на вкладку с фреймом происходит рывками, а не плавно. При этом обратная смена проходит плавно. Может кто-то знает как это исправить или это глючность TTabControl?
  12. Спасибо за помощь. Подскажите, с чего начать делать стиль...
  13. Спасибо. А скажите, чем TText отличается от TLabel?
  14. То есть, самому рисовать фон, утопленность и сам текст?
  15. Приветствую всех. Нужно отобразить простой текст, но при этом он должен быть в утопленном в форму поле, которое имеет настраиваемый цвет фона. Как такое реализовать на Андроид?
  16. Приветствую всех. Создаю мобильное приложение для Андроид. Основа - TTabControl на главной форме с двумя вкладками, заголовки вкладок скрыты. На первой вкладке список задач, которые может выполнять приложение. При выборе задачи анимарованно (используя SetActivTabWithTransition) открывается вторая вкладка с элементами управления для выбранной задачи. Элементы управления для каждой задачи реализованы на отдельных формах: на форму кладется TVertScrollBox (Align = Client), а в него уже необходимые элементы управления. Когда пользователь выбирает задачу, то нужная форма создается динамически, родитель TVertScrollBox у этой формы меняется на вторую вкладку TTabControl и вызывается SetActivTabWithTransition. Когда пользователь жмет кнопку "Назад" (аппаратную или программную), то, опять же анимированно, открывается первая вкладка (со списком задач), родитель у TVertScrollBox обратно меняется на созданную ранее форму, форма удаляется оператором delete. Подскажите, не будет ли при таком подходе утечек памяти? На Windows уверен, что не будет, а вот на Андроид не знаю... Кроме этого, целесообразно ли применять форму? Или лучше использовать фрейм? Или же изложенный мной подход вообще не заслуживает реализации? ?
  17. Решение в видео по ссылке Dev интересное, но мне не подходит. Поэтому буду использовать TTabControl. Всем спасибо!
  18. Я тоже его использую, но подумал, что кто-то для этих целей применяет другой подход.
  19. Спасибо за разъяснение!
  20. Приветствую всех. Подскажите, как реализуется функционал смены форм (или фреймов) в приложениях на Андроид. Например, когда в Телеграм выбирается ранее созданный чат, то форма этого чата как бы всплывает и одновременно движется справа налево. Если нажать кнопку "Назад", то происходит обратный эффект. Или в WatsApp при выборе чата его окно выезжает справа налево, при этом список чатов тоже движется влево, но медленнее, чем окно чата. Как сделать такое же в C++Builder?
  21. Приветствую всех. Написал тестовое приложение с формой FullScreen = true (чтобы занять весь экран), запустил на смартфоне. По нажатию кнопки определю размеры формы и узнаю, что ее ширина и высота ровно в 2 раза меньше, чем разрешение экрана смартфона. Объясните, почему так происходит?
  22. Это очевидно... Попытался начать. Здесь результат...
  23. d7d1cd

    Serial port

    Прошу прощения за поспешный вопрос. После прочтения этого топика и нескольких других, у меня возник вопрос: нельзя ли осуществить работу с последовательным портом не используя код на Java? Так как C++Builder предоставляет несколько стандартных модулей для работы с Android API, стал пытаться. За основу взял известный код на гитхабе. Решил начать с поиска всех подключенных к USB устройств. В файле UsbSerialProber.java из вышеуказанной библиотеки, код которого выполняет поиск устройств, подключены 2 модуля: import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbManager; В C++Builder подключил файл Androidapi.Hardware.hpp, так как он более всего подходит по названию к подключаемым модулям в Java коде. И, собственно, на этом все. В этом файле я не нашел никакого упоминания о USB и, тем более, о UsbDevice и UsbManager. Видимо, надо подключать файлы Android.Hardware.Usb.UsbDevice и Android.Hardware.Usb.UsbManager, но их нет в C++Builder. Наверное, это означает, что необходимо, все таки, писать код на Java и создавать обертку...
  24. Надо еще проверить, существуют ли там необходимые модули. Как раз этот код и хочу использовать.
×
×
  • Создать...