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

Brovin Yaroslav

Администраторы
  • Постов

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

  • Посещение

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

    390

Весь контент Brovin Yaroslav

  1. Я сделаю новый раздел "Дополнительные материалы" -> "Шаблонные проекты", куда пользователи смогут выкладывать свои шаблоны.
  2. Нужно указать способ соединения линий: PaintBox.Bitmap.Canvas.Stroke.Join := TStrokeJoin.Bevel;
  3. Подумайте самостоятельно, где взять ту константу, которую вы сами же у себя использовали. А еще бывает полезно пользоваться встроенными средствами Delphi для выяснения, где находится декларация того или иного объекта и тд Refactor -> Find Unit ... (Ctrl+A)
  4. Поменялась логика работы грида. Теперь он самостоятельно отрисовывает ячейки и не создает для каждой ячейки отдельный контрол. Поэтому старый способ работать не будет. Новый вариант решения - это самостоятельно нарисовать ячейку грида: uses FMX.TextLayout, System.UIConsts; procedure TForm2.Grid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); const HorzTextMargin = 2; VertTextMargin = 1; var TextLayout : TTextLayout; TextRect: TRectF; begin // Здесь определяем какую ячейку будем перерисовывать if (Column = StringColumn1) and (Row = 1) then begin TextRect := Bounds; TextRect.Left := TextRect.Left + 1; TextRect.Bottom := TextRect.Bottom -1; TextRect.Inflate(-HorzTextMargin, -VertTextMargin); Canvas.FillRect(TextRect, 0, 0, AllCorners, 1); TextLayout := TTextLayoutManager.DefaultTextLayout.Create; try TextLayout.BeginUpdate; try TextLayout.WordWrap := False; TextLayout.Opacity := Column.AbsoluteOpacity; TextLayout.HorizontalAlign := StringGrid1.TextSettings.HorzAlign; TextLayout.VerticalAlign := StringGrid1.TextSettings.VertAlign; TextLayout.Trimming := TTextTrimming.Character; TextLayout.TopLeft := TextRect.TopLeft; TextLayout.Text := Value.ToString; TextLayout.MaxSize := PointF(TextRect.Width, TextRect.Height); { Пользовательские настройки отрисовки } TextLayout.Font.Family := 'Times New Roman'; TextLayout.Font.Style := [ TFontStyle.fsBold ]; TextLayout.Font.Size := 14; TextLayout.Color := claBlueViolet; finally TextLayout.EndUpdate; end; TextLayout.RenderLayout(Canvas); finally TextLayout.Free; end; end; end;
  5. Тут нужно уточнить, что именно защищать вы собираетесь?
  6. Нужно помнить, что StylesData при запросе значения свойства какого-либо объекта стиля всегда возвращает TValue. Поэтому например в вашем случае вы допускаете сразу две ошибки по одной в каждом варианте: Ошибка 1 Не правильно: ListBoxItem.StylesData['text.width'].asInteger Свойство Width вещественного типа, поэтому при попытке конвертировать TValue в Integer этим способом приведет к ошибке "Invalid class typecast", так как представления вещественного и целого чисел отличаются. Правильно: ListBoxItem.StylesData['text.width'].AsExtended Ошибка 2 Не правильно: ListBoxItem.StylesData['text.text'].asString В этом случае вы пытаетесь представить содержимое TValue, как строка. Но при таком обращении через методы, начинающиеся с приставки "As", идет попытка конвертации чистого значения вещественного числа (указатель в памяти) в строку. Естественно, что такая конвертация пройдет не правильно и закончится все той же ошибкой "Invalid class typecast" Правильно: ListBoxItem.StylesData['text.text'].ToString
  7. Выделение вопроса от Nixon в отдельную тему, В общем, я пытаюсь на основании этой статьи, сделать автоматический пересчет высоты объекта, в зависимости от содержания с учетом изображений и т.д. Для этого мне необходимо получить ширину и высоту конкретного текстового элемента в стиле. Как бы это не звучало странно, но ListBoxItem.StylesData['text.width'].asInteger постоянно возвращает нуль. Естественно пытаюсь получить размеры после того, как ListBoxItem создан и размещен на родителе. И ListBoxItem.StylesData['text.text'].asString не возвращает текст. Это может быть связано с тем что text это TActiveStyleTextObject ? RAD Studio XE6
  8. Сжатие работает. Проверил на Samsung S3. Код использования: ChangeQuality(ImageBefore.Bitmap, ImageAfter.Bitmap, 10); P.S. Чтобы Bitmap можно было передать вторым параметром в вашей процедуре убрал модификатор доступа var. Результат сжатия
  9. Почему Не все Android API включено в RTL Это АПИ, как и другое, специально не включено в состав RTL. Поскольку в RTL включены только те классы и пакеты, которые непосредственно используются и нужны для корректного функционирования FireMonkey. Вторая не менее важная причина - это прирост размера выходного файла вашего приложения. Проблемы трансляции всех модулей Android API нету. Главная причина в том, что мост вызовов между Delphi и Android программный, и поэтому включение огромного числа дополнительных интерфейсов Android API влечет значительный прирост конечного исполняемого файла. Так как он будет содержать всю ту часть модулей, которые не используются. Решение 1. Переводим нужную часть Android API. Делаем по аналогии, как переведены другие классы и пакеты, сравнивая документацию Андроида и аналогичные обертки на Delphi AndroidApi.JNU.* Androidapi.JNI.Speech.pas.zip 2. Пишем реализацию на Delphi: uses Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Speech, Androidapi.Helpers, FMX.Helpers.Android; procedure OpenSpeechRecognizer; var Intent: JIntent; begin Intent := TJIntent.JavaClass.init(TJRecognizerIntent.JavaClass.ACTION_RECOGNIZE_SPEECH); Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_PROMPT, StringToJString('Голосовой поиск Inforino')); Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_LANGUAGE_MODEL, TJRecognizerIntent.JavaClass.LANGUAGE_MODEL_WEB_SEARCH); Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_MAX_RESULTS, 1); Intent.putExtra(TJRecognizerIntent.JavaClass.EXTRA_LANGUAGE, StringToJString('ru-RU')); SharedActivity.startActivityForResult(Intent, 1); end;
  10. Добрый день, Смотрите ответ в теме только на примере TProgressBar, это руководство подходит для всех аналогичных ситуаций: [Android] Не получается увеличить высоту TProgressBar
  11. Место проведения: Москва Сроки проведения: 19 мая 2014, 9:00 - 19:00 (Весь день) Ссылка на мероприятие: http://forum.apps4all.ru/ Новость позаимствована от сюда: http://apps4all.ru/post/05-05-14-pyatyj-mezhdunarodnyj-forum-razrabotchikov-prilozhenij-apps4all 19 мая 2014 года сообщество разработчиков Apps4All, совместно с агентством «Полилог», компанией Samsung Electronics и Сбербанком России соберет на площадке Digital October более 1000 представителей экосистемы разработки приложений, специалистов крупнейших IT-корпораций и ведущих экспертов в сфере мобильных технологий. Пятый юбилейный форум Apps4All будет включать в себя конференцию, состоящую из четырех треков деловой программы, выставку высоких технологий и устройств, финал Ежегодного конкурса разработчиков Apps4All, а также традиционный фуршет для участников и гостей. Мероприятие пройдёт при поддержке Высшей Школы Бизнес-Информатики и Стартап Академии Сколково. Деловая программа мероприятия включает в себя секции по продвижению приложений, удержанию пользователей, аналитике рынка и мобильной рекламе. В дискуссионных панелях участники конференции наряду с экспертами смогут обсудить требования к процессу и результатам сдачи проектов, стандарты индустрии, мобильный контент, а также технологии будущего и рынок венчурных инвестиций. Лидеры и эксперты рынка, такие как Google, Huawei, Intel, Unity, Embarcadero, RedMadRobot, GalsSoft, ZeptoLab, Ostrovok, Aviasales, TNS, AdWatch/Isobar, Video International, Articul Media, AdCamp, AdInch и другие компании представят свои новые продукты и успешные кейсы. Представители штаб-квартиры Google EMEA (Europe, the Middle East and Africa) из Ирландии расскажут о секретах монетизации приложений на платформе Android и проведут мастер-классы для заинтересованных разработчиков. Особое внимание будет уделено экосистемам и сообществам разработчиков: Dan Romescu (Droidcon, Германия) расскажет о последних тенденциях сообщества разработчиков в Европе, а Thibaut Rouffineau (Apptual, Великобритания) выступит с презентацией на тему «Управление инновационными и предпринимательскими экосистемами». Деловая программа завершится подведением итогов и торжественным награждением победителей Ежегодного конкурса лучших разработчиков приложений по версии Apps4All. Конкурс проводится по 4 основным номинациям: «Лучший разработчик-аутсорсер», «Лучший разработчик собственных продуктов», «Лучший разработчик игр» и «Лучший цифровой издатель». Победителями будут являться разработчики с наивысшим показателем Apps4All Index в соответствующем рейтинге. Компания Samsung Electronics поделится последними разработками в области Samsung Smart TV. В конце дня состоится розыгрыш необычных призов от партнёров и спонсоров мероприятия и вечерний фуршет в честь юбилейного международного форума разработчиков Apps4All. В честь юбилея участие в V Международном форуме разработчиков приложений Apps4All является бесплатным по предварительной регистрации* для всех разработчиков и участников экосистемы, желающих окунуться в мир приложений и технологий. Вся информация о мероприятии, а также форма регистрации – forum.apps4all.ru P.S. На этом мероприятия я буду выступать с докладом на тему "Мульти платформенная мобильная разработка глазами разработчика" * Участие в V Международном форуме является бесплатным и проводится по премодерации. Заявки рассматриваются Организационным комитетом форума.
  12. Все методы анимирования в TFmxObject являются упрощенными, дополнительными и вспомогательными. Их нужно рассматривать только в ракурсе быстрого использования в простых случаях. Для вашего случая они не подходят. Вместо них вы можете использовать любой аниматор и завершать его в момент разрушения формы.
  13. В каком месте, вы нашли использование ProcessMessages в анимации?
  14. В отличии от VCL FireMonkey не имеет метода TBitmap.GetPixel. Работа с пикселями идет только после запроса TBitmapData. После запроса TBitmapData TBitmapData.GetScanline и TBitmapData.GetPixel выполняются мгновенно, вне зависимости от размера изображения. На счет скорости выполнения запроса TBitmapData нужно проверить на своих вариантах использования. В целом, это дорогостоящая операция. Но ее стоимость зависит от многих факторов, от типа используемой канвы, от варианта использования (частота, объемы и тд)
  15. Вопрос по "возможность менять цвет динамически (в runtime)" уже другой вопрос. Можете задать его отдельно.
  16. Вопрос не корректен. Так как чтобы получить TBitmapData, нужно его запросить через TBitmap.Map. Одно является следствие работы другого. TBitmap.Map выделяем буфер TBitmap. После получения буфера вся работа с TBitmapData выполняется мгновенно со сложностью O(n).
  17. Можно, действия аналогичные теме: Как поменять цвет выделенного итема в ListBox для андроид стиля? Читаем тему. На 3 шаге меняем исходники стиля горизонтального TProgressBar, согласно этой картинке:
  18. Подробное описание примера доступно тут: FMX.Advertising.TBannerAd (Delphi) Спасибо Сысоеву Максиму за ответ.
  19. Как использовать компонент отображения встроенной рекламы TBannerAd?
  20. TStatusBar - по сути обычная TPanel с TSizeGrip для изменения размера формы. Поэтому вы можете положить в статус бар любые комбинации контролов и добиться любого эффекта. Например, в вашем случае достаточно положить TImage внутрь TStatusBar и загрузить любую картинку.
×
×
  • Создать...