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

Brovin Yaroslav

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

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

  • Посещение

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

    390

Ответы сообщества

  1. Пост Brovin Yaroslav - сообщение в Возможно ли создать свои тригеры для запуска анимации? 2 был отмечен как ответ   
    Вот, посмотрите пример. 4_5.zip
    Пример показывает создание двух триггеров и их использование в стилях. Сделан компонент, который в зависимости от положения курсора внутри него перекрашивает панель в разные цвета.
    Это пример из моей книги.
  2. Пост Brovin Yaroslav - сообщение в [TCanvas] Как при отрисовки не вылезьте за указанную область? был отмечен как ответ   
    Достаточно установить у контрола 
    ClipChildren = True Или для канвы установить область отсечения:
    Canvas.IntersectClipRect(Button1.LocalRect);
  3. Пост Brovin Yaroslav - сообщение в Редактирование названия темы был отмечен как ответ   
    Пользователи могут редактировать название темы. Для этого нужно открыть редактирование сообщения в полном режиме:
     

     

  4. Пост Brovin Yaroslav - сообщение в Неправильный часовой пояс на форуме. (+1 час) был отмечен как ответ   
    Исправлено.
  5. Пост Brovin Yaroslav - сообщение в Ошибка в названии форума был отмечен как ответ   
    Ошибку исправил. Спасибо AnthonySoprano за наблюдательность. 
  6. Пост Brovin Yaroslav - сообщение в [TListView] Как поменять цвет шрифта у SearchBox у TListView? был отмечен как ответ   
    Добрый день,
     
    Забыли про StyledSettings. 
     
    Итого весь код по поиску SearchBox и изменении цвета текста:
    function FindSearchBox(const ARootControl: TControl): TSearchBox; var Child: TControl; begin Result := nil; for Child in ARootControl.Controls do if Child is TSearchBox then Exit(TSearchBox(Child)); end; procedure TForm15.Button1Click(Sender: TObject); var SearchBox: TSearchBox; begin SearchBox := FindSearchBox(ListView1); if SearchBox <> nil then begin SearchBox.TextSettings.FontColor := TAlphaColorRec.Red; SearchBox.StyledSettings := SearchBox.StyledSettings - [TStyledSetting.FontColor]; end; end;
  7. Пост Brovin Yaroslav - сообщение в Touchtargetexpansion перестал работать в xe8 был отмечен как ответ   
    Временный фикс. Применить эту процедуру в OnCreate или OnShow для тех контролов, для которых не работает TouchTargetExpansion:
    uses FMX.Presentation.Style; procedure FixTouchTargetExpansion(const PresentedControl: TPresentedControl); begin if PresentedControl.HasPresentationProxy and (PresentedControl.PresentationProxy.Receiver is TStyledPresentation) then TStyledPresentation(PresentedControl.PresentationProxy.Receiver).TouchTargetExpansion := PresentedControl.TouchTargetExpansion; end;
  8. Пост Brovin Yaroslav - сообщение в [iOS] Добавить свои поля в Info.plist был отмечен как ответ   
    Добрый день,
     
    Это можно сделать в настройках проекта:
    Открываем настройки проект: Project->Options Открываем вкладку Version Info Добавляем ваш ключ: UIStatusBarHidden и значение true Эти ключи автоматически потом попадают в info.plist
  9. Пост Brovin Yaroslav - сообщение в Как русифицировать combobox под ios? был отмечен как ответ   
    Надписи вынесены в ресурсные константы в FMX.Consts.pas:
    { Pickers } SPickerCancel = 'Cancel'; SPickerDone = 'Done'; SEditorDone = 'Done'; Соответственно нужно сделать свой вариант с переводом на русский язык и прилинковать новый ресурсный файл с переводами в ваш проект. Описание требуемых действия
  10. Пост Brovin Yaroslav - сообщение в FGX 0.5.0.41 был отмечен как ответ   
    Выложил: [XE8] [FGX] Описание версии 0.6.0.46
  11. Пост Brovin Yaroslav - сообщение в [XE7] [Android] [TfgLinkedLabel] Не удается открыть браузер при клике на ссылку был отмечен как ответ   
    Исправление включено в новую версию библиотеки FGX 0.6.0.46
  12. Пост Brovin Yaroslav - сообщение в Google Maps или альтернатива. был отмечен как ответ   
    В XE8 добавлен новый компонент TMapView, который позволяет отобразить карту в вашем приложении и не только. Поддерживаемые платформы: Android и iOS.
    Руководство использования Конфигурация андроид приложения для работы с Google Maps
  13. Пост Brovin Yaroslav - сообщение в Roadmap на 2015 год был отмечен как ответ   
    А теперь есть: RAD Studio 2015 Roadmap
  14. Пост Brovin Yaroslav - сообщение в AV при "Application.ProcessMessages" в событии MouseLeave на любом контроле был отмечен как ответ   
    Добрый день,
     
    Проблема в том, что когда вы вызываете ProcessMessage в OnMouseLeave, то вы по сути прерываете логику обработки Hovered контрола (Тот, что находится под мышкой). То есть вызывая ProcessMessage вы запускаете новый прогон обработки сообщений заново, не закончив предыдущий. В итоге, новый запуск сбрасывает ссылки на объект Hovered. А после возвращения в обратно в первый ProcessMessage Hovered еще используется, но он уже nil. Тут и возникает AV.
    procedure TCommonCustomForm.SetHovered(const Value: IControl); begin if (Value <> FHovered) then begin if FHovered <> nil then begin FHovered.DoMouseLeave; // <Тут вы вызываете ProcessMessage и после выхода, тут будет nil FHovered.RemoveFreeNotify(Self); end; FHovered := Value; if FHovered <> nil then begin FHovered.AddFreeNotify(Self); FHovered.DoMouseEnter; end; end; end; Если очень хочется использовать ProcessMessage в таком месте, можете добавить проверку на нил, после:
    FHovered.DoMouseLeave; if FHovered <> nil then FHovered.RemoveFreeNotify(Self);
  15. Пост Brovin Yaroslav - сообщение в [Android] Как отключить программную кнопку Меню? был отмечен как ответ   
    Добрый день,
     
    Эта кнопка считается устаревшей в версиях андроида начиная с 14 (Ice Cream). Система читает ваш манифест и смотрит на MinSdkLevel. Если он меньше 14, то она пытается сэмулировать (Lolipop) и добавить эту кнопку. 
     
    Чтобы ее убрать, нужно поднять нижнюю границу или таргет версию до 14 в манифесте:

    <android xmlns:android="http://schemas.android.com/apk/res/android"> <tool-api-level>14</tool-api-level> <manifest> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14"/> </manifest> </android> В вашем приложении:Открываете файл AndroidManifest.template.xml. Он лежит в папке с вашим проектным файлом (появляется при первой попытке компиляции на Андроид) Меняем значения в теге uses-sdkБыло:

    <uses-sdk android:minSdkVersion="%minSdkVersion%" android:targetSdkVersion="%targetSdkVersion%" /> Стало:
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> Собираем приложение. Теперь кнопка меню пропадет на новых версиях Андроида.Чтобы при повороте приложение не вылетало на версиях среды до XE8 включительно дополнительно нужно добавить в манифест.
    Начиная с XE10 правок вносить не надо.
    Было:

    <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden" android:launchMode="singleTask"> Стало:
    <activity android:name="com.embarcadero.firemonkey.FMXNativeActivity" android:label="%activityLabel%" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:launchMode="singleTask">
  16. Пост Brovin Yaroslav - сообщение в [Android] Можно ли получить список параметров интента, которые может принимать другое неизвестное приложении? был отмечен как ответ   
    Если для интента не указан класс получателя через JIntent.setClass, то система по указанному Action подберет приложение, котороу может выполнить ваш запрос.
     
    Если указан класс, то интент будет отправлен в указанный класс.
     
    Кроме, как документации, никак не узнать, какие коды (Aсtion) используют сторонние приложения.
  17. Пост Brovin Yaroslav - сообщение в Предложение сделать раздел для публикации ссылок на интересные статьи в интернете был отмечен как ответ   
    Я добавил новый раздел: Fire Monkey от А до Я  → Дополнительные ресурсы по FireMonkey  → Статьи и заметки
     
    Здесь каждый автор статьи или читатель могут поделиться своими находками с другими пользователями.
  18. Пост Brovin Yaroslav - сообщение в [TidHTTP] Как получить ответ от веб-сервера в нужной кодировке? был отмечен как ответ   
    Добрый вечер,
     
    У TidHttp есть перегруженный метод получения ответа с возможностью указания потока. 
     
    Сервер по указанному адресу присылает ответ в ANSI кодировке. А у функция Get возвращает UnicodeString в С++ Builder. Поэтому решение - это представить полученный ответ в ANSI кодировке:
     
    C++:
    TStringStream *SS = new TStringStream(L"", TEncoding::ANSI, false); try { UnicodeString URL = "http://seatr.do.am/AntiCafe48/30.03.2015"; IdHTTP1->Get(URL, SS); ShowMessage("Response: " + SS->DataString); } __finally { SS->Free(); } Delphi:
    var SS: TStringStream; begin SS := TStringStream.Create('', TEncoding.ANSI); try IdHTTP1.Get('http://seatr.do.am/AntiCafe48/30.03.2015', SS); ShowMessage('Response: ' + SS.DataString); finally SS.Free; end; end; Результат:

  19. Пост Brovin Yaroslav - сообщение в При ручной отрисовке на битмапе TImage, у меня на форме получаются артефакты. В чем причина? был отмечен как ответ   
    Добрый день,
     
    посмотрите на свой код внимательнее.
    Вначале вы создаете битмап. В нем рисуете линию. Потом очищаете битмап в image1. И заливаете фон белым цветом Потом заменяете очищенный битмап в Image1, своим MyBitmap. В итоге результат работы метода Clear скрывается.
    На счет артефактов, я не вижу их на воспроизведенном примере. Линия есть. Если вы выложите ваш проект, чтобы на нем можно было посмотреть, было бы здорово. 
  20. Пост Brovin Yaroslav - сообщение в заполнение окна формы 2-3 или колонки в зависимости от ориентации экрана был отмечен как ответ   
    Добрый день,
     
    Используйте TGridLayout. У него вы только указываете размер элемента (ItemWidth, ItemHeight). Далее этот компонент автоматчиески все дочерние контролы выстраивает в сетку с размером ячейки ItemWidth x ItemHeight
  21. Пост Brovin Yaroslav - сообщение в Нужна кнопка удаления своего сообщения на форуме был отмечен как ответ   
    Такая опция добавлена для пользователей. Поддерживаются два типа удалений:
    Скрытие. Скрытие от пользователей вашего сообщений с возможностью восстановление. Скрытое сообщение доступно на просмотр модераторам и администраторам Удаление. Полное удаление сообщение без возможности восстановить.
  22. Пост Brovin Yaroslav - сообщение в Как скопировать текст в буфер обмена? был отмечен как ответ   
    Запрашиваете сервис IFMXClipBoardService. У него есть два метода для копирования данных любого типа в буфер и обратно.
    uses FMX.Platform, System.Rtti; {$R *.fmx} procedure TForm13.Button1Click(Sender: TObject); var Service: IFMXClipBoardService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXClipBoardService, Service) then begin Service.SetClipboard(TValue.From<string>('My Text')); // Service.GetClipboard.AsString // Получения строкового значения обратно. end; end;
  23. Пост Brovin Yaroslav - сообщение в [TListView] Как получить доступ к Header по выделенному итему? был отмечен как ответ   
    На сколько я вижу, то хедер оформляется как TListViewItem, у которого свойство Purpose равно Header. Я вижу такой алгоритм получения хедера:
    uses System.Math; {$R *.fmx} function ExtractGroupHeaderItem(Items: TListViewItems; Selected: TListViewItem): TListViewItem; var PreviousItem: TListItem; Index: Integer; begin Assert(Items <> nil); Assert(Selected <> nil); Index := Selected.Index; while InRange(Index, 0, Items.Count - 1) and (Items[Index].Purpose <> TListItemPurpose.Header) do Index := Index - 1; if InRange(Index, 0, Items.Count - 1) then Result := Items[Index] else Result := nil; end; Соответственно, чтобы получить хедер, если он есть для выделенного итема, нужно вызывать функцию так:
    ExtractGroupHeaderItem(ListView1.Items, ListView1.Selected);
  24. Пост Brovin Yaroslav - сообщение в [iOS] Как установить предыдущую версии SDK и симуляторов? был отмечен как ответ   
    Запускаем XCode Открываем настройки: XCode -> Preferences... Открываем вкладку Downloads  Выбираем требуемые версии Симулятора:
  25. Пост Brovin Yaroslav - сообщение в [Android] Поддерживается ли формат bmp? был отмечен как ответ   
    Андроид не поддерживает кодек "bmp", поэтому сохранить файл в этом формате не получится. Поскольку стандартный Android Bitmap поддерживает только: jpg, jpeg, png, webp. 
     
    Если вы знаете устройство формата bmp, то вы можете написать ручное сохранение файла.
×
×
  • Создать...