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

Dmitry_4501

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

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

  • Посещение

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

    9

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

  1. Здравствуйте, имеется такой вопрос: можно ли создавать компоненты не на картинках (TBitmapLinks) а например при помощи Rectangle?

    Просто хочу сделать плавную анимацию (например когда наводишь курсор на кнопку, когда нажимаешь). Знаю, что плавную анимацию можно сделать при помощи TColorAnimation и некоторые свойства менять через TFloatAnimation, но когда удаляю стандартный background в стиле и ставлю вместо него Rectangle кнопка перестает работать, как можно реализовать это?

  2. Так, допустим, создал красивый стиль, но мало его просто нарисовать, программы могут обладать красивыми анимациями, вот в чем собственно вопрос:

    Как сделать анимированную кнопку например?

    Четыре состояния

    1. обычное 2. выделенное 3. нажатое 4. заблокированное (например на этом компоненте как сделать хотя бы плавное изменение цвета, а еще лучше попробовать сделать увеличение текста на кнопке)

  3. Народ, не могу понять, что происходит с редактором стилей, меняю стиль ListBoxItem на свой, добавляю в стиль элементы, но он либо их не сохраняет либо не сохраняет измененные свойства, хотя в диалоговом окне о предложении применить стиль я нажимаю yes

  4. 7 часов назад, krapotkin сказал:

    интересно, какая еще есть работа тут кроме условного вывода всех текстовых констант и перевода всех caption, text, listitem.text,detail и других?

    и, судя по тексту, вторая часть ( компоненты ) у вас не реализована...

    при этом компоненты в библиотеке нужно прямо все перечислить. либо с RTTI вдоволь поиграться. Стоит ли оно того?

    Все, решил воспользоваться компонентом из стандартных

  5. В 04.01.2017 в 22:33, krapotkin сказал:

    я воспользовался способом "в лоб"

    в уже готовом приложении все, что нужно переводить, в коде заполнил через собственную функцию тем или иным значением

    ~25 форм - около 200-250 строк в словаре

    вся работа заняла около 2 дней. не так уж сложно, и точно все будет работать так как надо ))

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

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

    Чтобы не городить даже в самой библиотеке кучу условий, например

    if Comp.ClassName = 'TLabel' и т.д с каждым классом я решил использовать класс TPresentedTextControl, он является родителем для множества компонентов, и все работает прекрасно, когда все исполняется в самом приложении, но стоит только засунуть этот код в библиотеку, как тут же получаю ошибку Invalid Class Typecast.

    Хотя попробовал написать еще одну функцию, где в параметрах было указана четко Кнопка, Comp: TButton, все как ни странно сработало, не знаю в чем дело.

  6. 18 часов назад, Steepe_Hare сказал:

    а TLang, который идёт в упаковке Embarcadero?

    Решил не пользоваться компонентами из коробки, а написать свою библиотеку, она работает как надо, но вот не хочет менять свойства компонентов на форме

  7. Здравствуйте!

    Написал значит я приложение, для него мне необходима поддержка смены языка интерфейса.

    Не став использовать готовые компоненты я решил написать свою библиотеку. Все реализовал, но осталась одна функция, которая не хочет работать:

    т.к компонентов на форме может быть множество я решил воспользоваться перебором компонентов по форме.

    Вот код:

    Спойлер

    function SetLanguage(c: TFmxObject): boolean; stdcall; export;
      var
        UniqueID: string;
        Locale:
    string;
        cl:
    string;
     
    begin
            cl := c.ClassName;
           
    if (cl = 'TButton') or (cl = 'TLabel') or (cl = 'TCheckBox') or
              (cl = 'TRadioButton') or (cl = 'TSpeedButton') then
             
    begin
                UniqueID := (c as TPresentedTextControl).Text;
                Locale := getString(UniqueID);
                (c as TPresentedTextControl).Text := Locale;
             
    end;
           
    if (cl = 'TEdit') then
             
    begin
                UniqueID := (c as TCustomEdit).TextPrompt;
               
    if UniqueID <> '' then
                 
    begin
                    Locale := getString(UniqueID);
                    (c as TEdit).TextPrompt := Locale;
                 
    end;
             
    end;
           
    if (cl = 'TMenuItem') then
             
    begin
                UniqueID := (c as TMenuItem).Text;
               
    if UniqueID <> '' then
                 
    begin
                    Locale := getString(UniqueID);
                    (c as TMenuItem).Text := Locale;
                 
    end;
             
    end;
           
    if (cl = 'TTabItem') then
             
    begin
                UniqueID := (c as TTabItem).Text;
               
    if UniqueID <> '' then
                 
    begin
                    Locale := getString(UniqueID);
                    (c as TTabItem).Text := Locale;
                 
    end;
             
    end;
           
    if (cl = 'TForm') then
             
    begin
                UniqueID := (c as TForm).Caption;
               
    if UniqueID <> '' then
                 
    begin
                    Locale := getString(UniqueID);
                    (c as TForm).Caption := Locale;
                 
    end;
             
    end;
         
    end;
     

    Получилось весьма странно конечно, но вот:

  8. 13 минут назад, ZuBy сказал:

    такс, все неправильно.

    1) чтобы расставлять компоненты есть Align

    2) если хотите сделать два вида формы Альбомный и Портретный, можно кодом просто сменить Align для нужных компонентов или сделать через фреймы/формы

    3) В FMX используется одно активити, а формы это уже делфовые "приколы", но этот код form2.show сработает

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

  9. Здравствуйте, есть такие вопросы:

    Мне необходимо сделать приложение для Android, которое будет нормально размешать компоненты (кнопки, label и т.д.), не зависимо от размера экрана устройства, пока есть только одно возможное решение, которое я придумал (устанавливать позиции компонентов в самом коде, пример button.position.y := 100 и так для каждого типа устройств, для планшетов отдельные позиции, для больших телефонов от 5" например компоненты будут практически так же как и на планшете, но если устройство размером менее 5" то уже по центру все компоненты, надеюсь что меня правильно поймут. Допустим я это реализую, пусть это и сложный процесс (особенно процесс отладки), к тому же не каждому понравится, когда при запуске приложения происходит такая пляска компонентов с места на место, в следствии чего появился вопрос:

    Как можно реализовать в Design-Time расставить все компоненты и задать им необходимые параметры для разных размеров устройств? (Особенно это касается альбомной ориентации экрана, например в Android Studio было удобно, создаешь отдельное активити и назначаешь его на альбомную ориентацию, типа MainActivity, MainActivity_Album)

    И да, чуть не забыл: формы в delphi, это тоже самое что и activity в Android Studio, т.е если я вызову из одной формы другую примерно так: form2.show то сработает ли это?

  10. 22 часа назад, Brovin Yaroslav сказал:

    Обычно ошибки со стеком из RTL появляются из-за сторонних библиотек. Вы устанавливали ли в среду дополнительные пакеты, эксперты, дизайнеры?

    Могут также возникать и из-за багов в FMX, но в этом случае, нужно привести сценарий, как ее воспроизвести. Плюс, если только у вас она воспроизводится, то я бы вначале проверил первое предположение со сторонними либами.

    Нуу, установлено: TMS FMX, Alphacontrols и Jedi+JVCL

  11. 13 часов назад, Brovin Yaroslav сказал:

    Проектик в студию.

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

  12. Здравствуйте, у меня есть несколько проблем связанных с Firemonkey, а именно (на картинке), если ListBox растянуть методом Align то вот такая ерунда получается, если ListBox убрать то все нормально, полностью появляется

    1. MultiView появляется не полностью, а именно

    2. Проблемы с размерами и позицией элементов на разных размерах экрана

    Если использовать приложение на устройствах с разными размерами то кнопки и прочие элементы приложения то выходят за пределы, то становятся маленькими

    1.png

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