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

enatechno

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

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

  • Посещение

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

    26

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

  1. libmidas.dylib - это только для IOS-симулятора. Для реальных iOS устройств нужно деплоить libmidas.a:
    C:\Program Files (x86)\Embarcadero\Studio\<версия RAD>\lib\iosDevice64\release\libmidas.a
    C:\Program Files (x86)\Embarcadero\Studio\<версия RAD>\lib\iosDevice32\release\libmidas.a
    http://docwiki.embarcadero.com/RADStudio/Berlin/en/DbExpress_Supported_Database_Management_Systems
     

  2. 11 минуту назад, Winexcel сказал:

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

    Суть второго метода в том, что вы делаете недоступными все контролы на форме, накрывая их полупрозрачным (или даже прозрачным) TRectangle (который Align=Contents) и Вам будут доступны только контролы лежащие на втором (непрозрачном) Rectangle. В событии OnClick полупрозрачного Rectangle делаете скрытие всего этого "модального окна". Т.е. если кликните за пределами непрозрачного TRectangle, то окно "закроется" вместе с полупрозрачным/прозрачным фоном.
    Тут есть похожая реализация, за исключением, что окно закрывается при нажатии на кнопку Cancel.
    Дополнительно, закрытие окна можно сделать при нажатии на "физичеcкую" кнопку Back в Android.

  3. Ваш пример работает нормально на 10 Seattle.
    На Берлине действительно AV. Похоже ошибка в исходниках:

    function TMenuItem.HasOffsetOfGlyph: Boolean;
    begin
      Result := (FGlyph <> nil) and FGlyph.BitmapExists and not FGlyphObject.IsChild(FGlyph);
    end;

    здесь FGlyphObject = nil.
    Либо надо править исходники, либо ждать что скажет @RoschinSpb

  4. 2 часа назад, Winexcel сказал:

    findStyleResourceAndClone

    Я так понимаю, Вы имели ввиду FindAndCloneStyleResource? Этот метод не возвращает копию стиля. Он возвращает копию объекта(элемента) стиля.
    Например,  если Вы хотите напрямую изменить элемент стиля (например цвет фона кнопки), то делаете:
     

      AObject := Button1.FindStyleResource('background');
      if (AObject is TRectangle) then
        TRectangle(AObject).Fill.Color := TAlphaColorRec.Aqua;

    И Button1 изменит цвет.
    Но, если после этого сделать Layout1.AddObject(AObject); то кнопка Button1  не будет больше иметь элемент 'background', родителем этого объекта станет Layout1

     Что касается

      AObject := Button1.FindStyleResource('background', True);
      if AObject <> nil then
        Layout1.AddObject(AObject);

    или

      if Button1.FindAndCloneStyleResource('background', AObject) then 
        Layout1.AddObject(AObject);

    то вы просто создаете новый объект AObject типа TRectangle со всеми свойствами как у стилевого элемента 'background', за исключением StyleName (у вновь созданного AObject будет  StyleName = ''). В нашем примере этот новый объект (TRectangle) будет помещен на Layout1. При этом 'background' кнопки не изменится.
     

  5. В папке C:\Users\Public\Documents\Embarcadero\Studio\<версия>\Styles лежат файлы стилей.
    Вам надо смотреть в этой папке файлы *.style. Загрузите любой из них в StyleBook.
    Обычно стиль контрола имеет название <имя класса без Т>+'style'. Например editstyle, buttonstyle. Но есть и исключения из правил, как например <menu...>, но их тоже не сложно найти.
    Прямо в StyleBook вы можете менять параметры объектов стиля и смотреть, как они влияют на внешний вид контролов.

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

  6. 1 час назад, Илья Захаров сказал:

    Как сделать так чтобы картинка притягивалась к правому краю главной формы с определёнными отступами и при этом находилась на панельке

    1). Если в design-time: Задайте для ImageViewer: Align - None, Anchors - [akTop,akRight] и разместите ImageViewer на нужном месте (с необходимыми отступами).
    tmp01.png

     

    1 час назад, Илья Захаров сказал:

    чтобы она была всегда поверх всех компонентов на форме...

    2). Если не ошибаюсь, то нет свойства позволяющего сделать объект постоянно поверх все компонентов, поэтому рекомендую при добавлении компонентов перекрывающих ImageViewer делать ImageViewer.BringToFront;
     

    1 час назад, Илья Захаров сказал:

    Так же при масштабировании на разные экраны она уменьшалась и увеличивалась пропорционально

    3). Пропорционально относительно чего? Если пропорционально размера формы, то самостоятельно пересчитывайте размер ImageViewer в TForm.OnResize
     

    1 час назад, Илья Захаров сказал:

    вопрос по панелькам как изменять их цвет чтобы у разных панелей разный цвет.

    4). Если речь идет о TPanel, то это стилевой объект и его цвет меняется через стиль. Более простой вариант -  в качестве "панелек" использовать "не стилевой" TRecangle. Цвет TRectanle можете задать и в design-time и runtime (Rectangle1.Fill.Color := TAlphaColorRec.White)

    И кстати, почему ImageViewer? Может TImage будет достаточно?

  7. 33 минуты назад, denprox сказал:

    кинуть текстуру облачности поверх основной картинки, и подобрать прозрачность 

    Хорошая идея. Я бы еще дополнительно изменил яркость/контрастность основной картинки с помощью TGloomEffect (или TBloomEffect).
    Есть неплохое демо, в котором можно поэкспериментировать с настройками эффектов:

    C:\Users\Public\Documents\Embarcadero\Studio\<версия>\Samples\Object Pascal\Multi-Device Samples\User Interface\ShaderFilters

  8. К сожалению тут не многие пишут на с++ для IOS. Трудно гадать, в чем у Вас проблема. Варианты могут быть разные... (Как вариант: русская буква 'х' в названии файла).
    Приложите демонстрационный проект. Форма + TImage и загрузка задеплоенной картинки в TImage в runtime.

  9. 3 часа назад, chaplin.u@gmail.com сказал:

    Какого лешего у меня Containers... влезает

     

    5 часов назад, chaplin.u@gmail.com сказал:

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


    путь для IOS7 и более ранних:  /var/mobile/Applications/<application ID>  
    путь для IOS8 и выше /var/mobile/Containers/Data/Application/<application ID>

  10. 1 час назад, Major сказал:

    Фреймов будет много и они будут не такими голыми, как в тестовом примере, поэтому скрывать/показывать - не подойдет (думаю, что быстро кончится память).

    Тут нужна золотая середина. Если фрейм на устройстве будет строится более 0.1 сек, то рекомендую использовать скрытие.

  11.  

    1 час назад, Major сказал:

    а как можно решить эту проблему? как перейти из фрейма на главную вкладку не только через vkHardwareBack?

    1 Вариант. Заменой удаления фреймов на скрытие (подправленный проект приложил).
    2 Вариант. Расположить панель с кнопкой Back на главной форме, а не дублировать ее в каждом фрейме. (При необходимости саму кнопку Back можно скрывать при возврате на первый таб).
    3 Вариант. Использовать отложенное удаление фрейма).
     ...
    и еще много разных вариантов.

    1 час назад, Major сказал:

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

        Click;
        FPressed := False;
        StartTriggerAnimation(Self, 'Pressed')

    Отладчик выдал ошибку в методе объекта TControl (в Вашем случае это кнопка SpeedButton1 на фрейме). В этом методе в Click вы удаляете Frame, а значит и кнопку на ней. А в строке StartTriggerAnimation(Self, 'Pressed'); вы обращаетесь к этой удаленной кнопке (Self). Здесь и происходит AV.

    test2.zip

  12. 3 часа назад, Major сказал:

    А если через кнопку внутри фрейма

    
      Form1.TabControl1.ActiveTab := Form1.TabItem1;

     

    1). Я так понимаю эта строка в модуле фрейма? Похоже на циклическую ссылку. Uses в модуле фрейма ссылается на Form1, а Form1 ссылается на модуль фрейма?
    2). Вы создаете фрейм каждый раз при открытии TabItem2? Много ли контролов на фрейме? Создание фрейма с контролами в рантайм на андроиде - затратная по времени операция. Если программа использует не много фреймов, то я бы не создавал/удалял каждый раз фрейм при смене таба, а использовал фрейм созданный один раз. Это улучшит отзывчивость программы.

    Ну а причина зависания - то, что вы в процедуре обработчика кнопки фрейма OnClick вызываете TForm1.TabControl1Change и там удаляете этот фрейм и саму кнопку.

  13. 6 минут назад, AlexG сказал:

    Если не ошибаюсь, то у стандартного стиля для Panel - TRectangle - это и есть весь стиль ))) Потому и не может быть Visible=False )

    Так уберите у него заливку, сделав ее прозрачной. И все.

    Полностью согласен. panelstyle - это и есть только один TRectangle. StyleEditor не позволяет его сделать Visible=false. Но можно менять Opacity. Если нужна невидимая панель, то лучше использовать обычный TLayout, который вообще не использует стиль.
    Работа с background в TGroupbox зависит от платформы. Посмотрите в редакторе стилей на дефолтный groupboxstyle:
    - для платформы Windows: текст, используемый для заголовка группы, расположен на объекте background. Если Вы будете менять видимость или прозрачность background, то текст тоже будет невидимым/прозрачным.
    - для платформы Android: текст расположен на отдельном layout. В этом случае изменение видимости/прозрачности background не влияет на отображение текста заголовка.

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