-
Постов
2 124 -
Зарегистрирован
-
Посещение
-
Победитель дней
390
Весь контент Brovin Yaroslav
-
Набросал вам программу для просмотра дерева стиля. StyleTreeViewer.zip Открываете файл стиля и смотрите из каких объектов он состоит и какие имена нужно присваивать узлам дерева стиля. Каждый контрол может поддерживать разные варианты реализации стилей. Поэтому используйте в качества примера тот, который вам больше подходит. Так же рекомендую использовать растровые стили. Они значительно быстрее работают на мобильных платформах.
-
Типы координат В FIreMonkey различают три вида координат: Локальные - это координаты в системе координат контрола. Абсолютные - это координаты в системе координат клиентской части формы. Экранные - это координаты в системе координат экрана. Соответственно, если речь идет о форме, то позиция формы задается в экранных координатах. Если речь идет о контролах, то в локальных координатах своего родительского контрола. Конвертация Локальные -> Абсолютные TControl.LocalToAbsolute(TPointF): TPointF Абсолютные -> Локальные TControl.AbsoluteToLocal(TPointF): TPointF Абсолютные -> Экранные TControl.Scene.LocalToScreen(TPointF): TPointF; Экранные -> Локальные TControl.Scene.ScreenToLocal(TPointF): TPointF;
-
Вам надо сконвертировать абсолютные координаты кнопки в экранные. О том, как это сделать ответ тут: О видах координат в FireMonkey и конвертации между ними
-
Что мешает самому задать для формы позицию под кнопкой?
-
Начиная с версии RAD Studio XE6, в каждой колонке таблицы существует только один контрол. Он создается через метод: function CreateCellControl: TStyledControl; Этот контрол отображается только в текущей выделенной строке. В остальных ячейках колонка просто рисует копию изображения этого контрола. За отрисовку копии отвечает интерфейс IDrawableCell. Вам нужно подмешать этот интерфейс в ваш TSwitchCell и реализовать его методы. P.S. В качестве примера, посмотрите на то, как реализован TCheckCell. Там как раз есть пример того, как получить изображения контрола и нарисовать его на канве.
-
У TChangeTabAction есть свойство TChangeTabAction.CustomText Оно служит для указания надписи на кнопках.
- 5 ответов
-
- TActionList
- CustomText
- (и ещё 4 )
-
Нет, такого компонента пока нету.
-
У формы есть свойство FormStyle в нем нужно указать TFormStyle.Popup. В этом случае окно должно быть поверх.
-
Все типы начинающиеся с буквы "J" - это соответствующие типы Android API. Смотрите developer.android.com Правила трансляции Android API название в Delphi названия: Добавить приставку "J" к типу. Например: Cursor (В Android API) -> JCursor (В Delphi) Если тип вложенный в другой тип, то вставить разделитель "_" между родительским типом и вложенным. Например: CallLog.Calls (В Android API) -> JCallLog_Calls (В Delphi) Аналогично в обратную сторону
-
Добрый день, SharedActivity - это вспомогательная функция, введенная в FMX для удобного доступа к экземпляру активити. На счет алгоритма поиска соответствующего заголовочного файла - правил нету. Так как, зависимости модулей в Delphi отличаются от механизма пакетов Java. Поэтому в Delphi физически не получится сделать такое же соответствие названий юнитов, как в Java - пакеты. Поэтому пользуйтесь поиском по заголовочным файлам C++ Builder для поиска. P.S. Здесь представлены правила трансляции классов в делфовые юниты (Актуально для XE7): Ветка Unit - содержит название юнита (хедера), внутренние ветки типы из Android API, которые будут помещены в этот юнит. <units> <unit name="Androidapi.JNI.VideoView"> <class name="android.widget.VideoView" /> <class name="android.widget.MediaController$MediaPlayerControl" /> <class name="android.widget.MediaController" /> </unit> <unit name="Androidapi.JNI.Java.Security"> <class name="java.security.*" /> </unit> <unit name="Androidapi.JNI.JavaTypes"> <class name="java*" /> <class name="org*" /> </unit> <unit name="Androidapi.JNI.GraphicsContentViewText"> <class name="android.graphics*" /> <class name="android.content*" /> <class name="android.view*" /> <class name="android.text*" /> <class name="android.database*" /> </unit> <unit name="Androidapi.JNI.Os"> <class name="android.os*" /> </unit> <unit name="Androidapi.JNI.Webkit"> <class name="android.webkit*" /> </unit> <unit name="Androidapi.JNI.Telephony"> <class name="android.telephony*" /> </unit> <unit name="Androidapi.JNI.Location"> <class name="android.location*" /> </unit> <unit name="Androidapi.JNI.App"> <class name="android.app*" /> </unit> <unit name="Androidapi.JNI.Widget"> <class name="android.widget*" /> </unit> <unit name="Androidapi.JNI.Util"> <class name="android.util*" /> </unit> <unit name="Androidapi.JNI.Media"> <class name="android.media*" /> </unit> <unit name="Androidapi.JNI.Provider"> <class name="android.provider*" /> </unit> <unit name="Androidapi.JNI.Support"> <class name="android.support*" /> </unit> <unit name="Androidapi.JNI.Net"> <class name="android.net*" /> </unit> <unit name="Androidapi.JNI.Dalvik"> <class name="dalvik*" /> </unit> <unit name="Androidapi.JNI.Hardware"> <class name="android.hardware*" /> </unit> <unit name="Androidapi.JNI.InputMethodService"> <class name="android.inputmethodservice*" /> </unit> <unit name="Androidapi.JNI.Embarcadero"> <class name="com.embarcadero.firemonkey*" /> </unit> <unit name="Androidapi.JNI.OpenGL"> <class name="android.opengl*" /> </unit> <unit name="Androidapi.JNI.AdMob"> <class name="com.google.android.gms.ads.*" /> </unit> <unit name="Androidapi.JNI.PlayServices"> <class name="com.google.android.gms*" /> </unit> <unit name="Androidapi.JNI.PlayServices.GCM"> <class name="com.embarcadero.gcm*" /> </unit> <unit name="Androidapi.JNI.Analytics"> <class name="com.google.analytics*" /> </unit> <unit name="Androidapi.JNI.ApkExpansion"> <class name="com.android.vending.expansion*" /> <class name="com.google.android.vending.expansion*" /> <class name="com.embarcadero.expansion*" /> </unit> <unit name="Androidapi.JNI.Licensing"> <class name="com.google.android.vending.licensing*" /> </unit> <unit name="Androidapi.JNI.InAppBilling"> <class name="com.android.vending.billing.*" /> </unit> <unit name="Androidapi.JNI.Print"> <class name="android.print*" /> </unit> <unit name="Androidapi.JNI.Bluetooth"> <class name="android.bluetooth.*" /> </unit> </units>
-
Как я правильно заметил, в вашем случае не был загружен стиль ваших меток. По этому вы обращались к размерам, вычисленным для настроек текста по умолчанию. А после загрузки стиля, вы уже не обновляли позицию. На Windows настройки текста по умолчанию совпадают с настройками текста в стиле. Поэтому работает так, как вы и полагаете. Решения Делать перерасчет позиции в OnApplyStyleLookup или OnResize у TLabel. Принудительно загрузить стиль: NeedApplyStyleLookup; ApplyStyleLookup;
- 7 ответов
-
- TLabel
- ApplyStyleLookup
-
(и ещё 4 )
C тегом:
-
Свойства компонентов используют все те же элементы рассчета метрик текста. Поэтому нужно полностью убедиться, что стиль загружен. Попробуйте загрузить стили перед заданием позиции через вызов NeedApplyStyleLookup; ApplyStyleLookup;
- 7 ответов
-
- TLabel
- ApplyStyleLookup
-
(и ещё 4 )
C тегом:
-
Важно убедиться, что стили для этих меток загружены. Так как стиль содержит настройки текста. И если вычислять размеры до загрузки стиля, то скорее всего будут использованы другие размеры текста.
- 7 ответов
-
- TLabel
- ApplyStyleLookup
-
(и ещё 4 )
C тегом:
-
В какой момент идет присваивание новой позиции для FactoryIDValue?
- 7 ответов
-
- TLabel
- ApplyStyleLookup
-
(и ещё 4 )
C тегом:
-
Добрый вечер, Для режима Custom у текста есть свойство Width, позволяющее указать ширину текста. Поэтому вам нужно указать требуемую ширину, через это свойство (При условии, что ItemAppearance.ItemAppearance = Custom): ItemObjects.Text.Width Для того, чтобы корректировать ширину области вывода текста на разных устройствах, я рекомендую использовать событие TListView.OnResize. Которое вызывается в момент изменения размера контрола. И в нем основываясь на ширине TListView вычислить размер области текста.
-
TBitmap Как сделать пиксель прозрачным?
Brovin Yaroslav ответил brunnengi вопрос в Доступ к пикселям
Добрый день, Получить доступ к пикселям битмапа: Доступ к пикселям Получив доступ, изменить требуемые пиксели (в том числе прозрачность) Записать измененные данные обратно, используя функцию Unmap var Data: TBitmapData; Bitmap: TBitmap; begin Bitmap := Image1.Bitmap; if Bitmap.Map(TMapAccess.ReadWrite, Data) then try Data.SetPixel(10, 10, TAlphaColorRec.null); finally Bitmap.Unmap(Data); end; end; -
Добрый день, Рабочее решение - это задавать позицию компонентов в дизайнере, используя свойств инспектора объектов: Position, Size, Align, Anchors. В этом случае у вас есть возможность перемещать компоненты в стиле.
- 8 ответов
-
- xe7
- Style Designer
-
(и ещё 1 )
C тегом:
-
[Android] Странное поведение модальной формы
Brovin Yaroslav ответил antarey вопрос в Модальные окна
Добрый вечер, На сколько я вижу исходники, могу сказать, что это актуально только для Android платформы. Поэтому на других нужно использовать старый подход с ShowModal без параметров. -
Да, масштабирование дизайнера была бы полезная фича. Я попробую предложить. Поясните по подробнее на счет границ контролов. Я не до конца понял. Что требуется именно, для чего и в подробных примерах.
-
Если вы хотите, использовать режим Native для DropDownKind, то лучше рассмотрите переопределение сервиса пиккеров FMX.PickersIFMXPickerService. Возьмите за основу нашу реализацию, отнаследуйтесь и добавьте требуемое поведение. Либо можете сделать свой вариант реализации пикеров. iOS: List Picker: UIPickerView Date/Time Picker: UIDatePicker Android: List Picker: DialogFragment Date Picker: DatePickerDialog Time Picker: TimePickerDialog