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

Kitty

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

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

  • Посещение

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

    16

Активность репутации

  1. Like
    Kitty отреагировална estra в Баг компилятора?   
    Провел небольшой эксперимент в XE8. За неимением полных исходников кое-что пришлось подправить/закомментировать...
     
    Эксперимент 1:
     


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


    Если переменные локальные, всё компилируется без каких либо проблем.
     
    Если вместо закомментированных строк вставить вызов какой либо процедуры, например ShowMessage(''), то ни к каким проблемам это не приводит...
  2. Like
    Kitty отреагировална Brovin Yaroslav в [iOS] Как убрать кнопку Done у виртуальной клавиатуры?   
    Добрый вечер,
    uses FMX.VirtualKEyboard, FMX.Platform; procedure TForm3.Button1Click(Sender: TObject); var Service: IFMXVirtualKeyboardToolbarService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardToolbarService, Service) then Service.SetToolbarEnabled(False); end;
  3. Like
    Kitty отреагировална Brovin Yaroslav в [Windows] Как поменять иконку формы со стилизованной рамкой?   
    При стилизованной рамке окна, иконка кэшируется. Первый раз она запрашивается в момент первой отрисовки формы. Поэтому в вашем случае ее нужно задать сразу после создания хендла а именно в CreateHandle.
    TForm15 = class(TForm) StyleBook1: TStyleBook; protected procedure CreateHandle; override; end; implementation uses VCL.Graphics, Winapi.Windows, Winapi.Messages, FMX.Platform.Win; { TForm15 } procedure TForm15.CreateHandle; var NewAppIcon: TIcon; begin inherited; NewAppIcon := TIcon.Create; NewAppIcon.LoadFromFile('c:\icon.ico'); SendMessage(ApplicationHWND, WM_SETICON, 1, NewAppIcon.Handle); SendMessage(WindowHandleToPlatform(Handle).Wnd, WM_SETICON, 1, NewAppIcon.Handle); end;
  4. Like
    Kitty отреагировална Brovin Yaroslav в [TGrid] [XE5] Почему TColumn.ChildrenCount возвращает всегда 9, несмотря на то, что у меня в гриде больше 9 строк?   
    Тяжело вам сейчас сказать. Так как в следующих версиях концепция грида изменилась и он в настоящий момент не содержит контрол-ячеек.
    В вашем случае, на счет количества ячеек, я думаю, что там использована оптимизация. И ячейки при прокручивании просто перемещаются и обновляются новыми данными, вместо того, чтобы создавать 100 или 1000 ячеек столбца. Поэтому там скорее всего будет всегда только видимое количество ячеек. Это можно проверить путем изменения высоты грида и проверки при этом количество.
  5. Like
    Kitty отреагировална Brovin Yaroslav в [TWebBrowser] Можно ли получить доступ к элементам разметки страницы HTML?   
    TWebBrowser не поддерживает возврат результатов при выполнении JavaScript. Но если вам нужно нажать на кнопку или выполнить какие-либо действия без возврата результата в Delphi. То для этого можно использовать JavaScript. Для выполнения JavaScript кода в браузере нужно использовать:
    TWebBrowser.EvaluateJavaScript
  6. Like
    Kitty отреагировална Brovin Yaroslav в [TWebBrowser] Когда появится поддержка TWebBrowser для Windows и OSX?   
    TWebBrowser для OSX и Windows был добавлен в RAD Studio XE8.
  7. Like
    Kitty отреагировална Brovin Yaroslav в [TWebBrowser] Как остановить загрузку браузера?   
    Так же:
    WebBrowser1.Stop
  8. Like
    Kitty отреагировална Brovin Yaroslav в Добавлять нестандартные колонки в grid - реально?   
    Не могу ничего сказать. Но у меня есть уже на 60% реализованные редактор итемов в FGX. Которые является расширением стандартного и поддерживает регистраци своих итемов. Как будет готов, я отпишусь. 
  9. Like
    Kitty отреагировална Brovin Yaroslav в Как с помощью приложения FMX узнать о существовании любого другого приложения   
    Как определить установлено ли другое приложение или нет на Android? Использование стандартных приложений
  10. Like
    Kitty получил реакцию от ivadimos в Нужна книга   
    Добрый день.
    Можно и курсы, но опыт показывает, что это все же не так эффективно. Вон Эмбаркадеро сколько видео курсов проводит, а стоны со всех сторон – дайте манул, дайте справку…
    Думаю работа в фоновом режиме над мануалом будет также хорошим решением.
    А чтобы хотелось иметь первым делом:

    Очень бы хотелось иметь мощный мануал страниц минимум на 300 по созданию приложений для платформы Андроид с помощью библиотеки FMX. iOS тоже важен, но начать логичнее все же с платформы, которая распространена гораздо шире.
    Хотелось бы освещение таких вопросов:
    1. Особенности использования FMX исходя из особенностей и требований ОС Андроид.
    2. Правильная разработка интерфейсов исходя из платформы Андроид. Детальное рассмотрение компонентов TListView, TListBox, TMultiView при создании интерфейса программы. Работа с этими компонентами в десигн и рантайм. Правильный подход при создании многооконного приложения в Андроид, использование фреймов. Обработка ошибок.
    3. Взаимодействие с Java и API (Androidapi::Jni…).
    4. Работа со стилями.
    5. Андроид  и локальная база данных. Андроид и удаленная база данных (DataSnap).
    6. Примеры решения типовых задач (работа с видео и т.д.).
    7. Наметки использования FMX для решения реальных корпоративных задач. Показать первые шаги и правильный подход для решения таких, например, реальных задач как:
    а) кладовщик на складе через планшет вводит данные в центральную базу данных и имеет доступ  к актуальным данным компании.
    б) таксист, сидя в машине на своем планшете с Андроид имеет полную информацию о заказах и очереди.
    в) отслеживание на карте Google перемещения дальнобойных машин. Координаты присылает Андроид устройство из кабины водителя или по таймеру или по запросу из офиса.
    Все это большие и объемные задачи – просто показать скелет правильного подхода решения реальных задач на платформе Андроид с помощью FMX. Или придумать свои корпоративные задачи для мануала.
    Считаю FMX отличным выборам для решения именно корпоративных задач компании.
    8. Обязательно дублировать код с Паскаля на С++.
    По поводу пункта номер 8. Вот мой реальный опыт с FMX:
    В С++ Builder XE6 создала приложение для корпоративного использования. Вопрос уперся в воспроизведение и остановке видео. Стандартный fmx плеер не работает на некоторых из Андроид устройств. Помогли на этом форуме рекомендацией использовать этот pas файл и МХ плеер: http://blog.csdn.net/flcop/article/details/17190009
    Однако после подключения этого файла в С++ Builder сыпались AV. Никто уже не мог помочь, ни один форум ни одна справка, даже автор японец pas файла не знал в чем дело. И вот когда я уже была близка к присоединению к армии тех, кто ненавидит FMX, на одном из форумов промелькнул тайваньский товарищ, который сказал добавить в pas файл такой код:
    procedure RegisterTypes;
    begin
    TRegTypes.RegisterType('Androidapi.JNI.ActivityManager.JDebug_MemoryInfo', TypeInfo(Androidapi.JNI.ActivityManager.JDebug_MemoryInfo));
    end;
    и все сразу заработало. Сейчас у японца полностью правильный pas файл и для С++.
    Этот простой пример говорит о том, что если есть проверенный рабочий код для Дельфи, то это не факт, что все будет работать и в С++.
    Дублирование правильного кода [паскаль-с++] сделает манул всесторонним и всеобъемлющим. Армия С++ наконец-то безболезненно присоединится к паскалистам и это хорошо для Эмбаркадеро.
    Понятно, что у меня большой аппетит для такого мануала, но наличие такого манула это огромный шаг вперед для FMX. И не смотря на то, что он будет ориентирован на Андроид, он во много закроет многие другие вопросы, связанные с FMX для других платформ. Выпуск такого мануала (или бумажной книги) важен и жизненно необходим.

     
  11. Like
    Kitty отреагировална xenon54 в [Редактор кода] [Castalia] Как убрать выделение блоков begin-end в XE8?   
    В настройках касталии отключается
    castalia->options->editor->smart highlighting
  12. Like
    Kitty отреагировална Brovin Yaroslav в iOS/Android Application Development with Delphi у кого нибудь есть?   
    Взять можно здесь Каждая книжка персонализирована, так что вам ее вряд ли кто даст.
  13. Like
    Kitty отреагировална Andrey Efimov в MIDI и FireMonkey   
    Под Андроидом, если в АПИ нет такой возможности, то точно можно использовать какую-нибудь opensource библиотеку, достаточно в гугле поискать.
    Гляньте вот эти ссылки:
    SONiVOX JETCreator
    JetPlayer
  14. Like
    Kitty отреагировална Brovin Yaroslav в Можно ли изменить значения AniFrameRate только для одной анимации?   
    Добрый день,
    TAnimation.AniFrameRate  - это классовая переменная. Она существует в единственном экземпляре для всех аниматоров.  Изменить ее локально для одного аниматора/анимации не возможно.
  15. Like
    Kitty отреагировална Belov.V. в После активации TSearchBox не возвращается индекс нового добавленого элемента   
    Готового решения на просторах интернета не нашел. То, что напридумывал сам, оформил в виде хелпера к TListBox. Может кому пригодится.
    Реализовал только необходимые мне методы. И только для режима MultiSelectStyle=None
    Самое главное, что так индекс возвращается корректно.
    unit ListBoxHelper; interface uses FMX.Controls, FMX.Types, System.SysUtils, FMX.ListBox, FMX.SearchBox; // Создаем Helper для класса TListBox type TListBoxHelper = class helper for TListBox function ResetFilter : string; // возвращает старый фильтр function GetSearchBox : TSearchBox; // возвращает SearchBox function AddAndClearSelect(const S : string) : integer; // добавить, ничего не выбирать, фильтр очистить function AddAndSelect(const S : string) : integer; // добавить, выбрать, фильтр очистить function AddAndSaveOldSelect(const S : string) : integer; // добавить, сохранить выбор, фильтр очистить function AddAndSaveOldView(const S : string) : integer; // добавить, сохранить выбор и фильтр, вернуть номер добавленного в отфильтрованном списке, или -1 если не попадает в фильтр procedure DeleteItem(const i : integer = -1); // удалить по индексу. если индекс не указан то удалить выбранный end; implementation function TListBoxHelper.GetSearchBox : TSearchBox; var Child : TControl; FxmChild : TFmxObject; begin Result := nil; for Child in self.Controls do for FxmChild in Child.Controls do if FxmChild is TSearchBox then Exit( TSearchBox( FxmChild ) ); end; function TListBoxHelper.ResetFilter : string; var s : TListBoxItem; sb : TSearchBox; begin Result := EmptyStr; s := Selected; sb := GetSearchBox; if Assigned( sb ) then begin Result := sb.Text; sb.Text := EmptyStr; end; if Assigned( FilterPredicate ) then FilterPredicate := nil; if Assigned( s ) then ItemIndex := s.Index; end; function TListBoxHelper.AddAndClearSelect(const S : string) : integer; begin ClearSelection; ResetFilter; Result := Items.Add( s ); end; function TListBoxHelper.AddAndSelect(const S : string) : integer; begin Result := AddAndClearSelect( s ); if Result <> -1 then ItemIndex := Result; end; function TListBoxHelper.AddAndSaveOldSelect(const S : string) : integer; var sel : TListBoxItem; begin sel := Selected; Result := AddAndClearSelect( s ); if Assigned( sel ) then ItemIndex := sel.Index end; function TListBoxHelper.AddAndSaveOldView(const S : string) : integer; var sb : TSearchBox; iSel, iNew : TListBoxItem; flt : string; begin iSel := Selected; iNew := nil; ClearSelection; sb := GetSearchBox; flt := ResetFilter; // Result := Items.Add( s ); if Result <> -1 then iNew := ItemByIndex( Result ); // if flt <> EmptyStr then begin sb.Text := flt; if Assigned( iNew ) then Result := iNew.Index; end; if Assigned( iSel ) then ItemIndex := iSel.Index; end; procedure TListBoxHelper.DeleteItem(const i : integer = -1); var sb : TSearchBox; flt : string; iSel, iDel : TListBoxItem; begin if i > Count-1 then Exit; sb := GetSearchBox; if i > -1 then begin iSel := Selected; iDel := ItemByIndex( i ); end else begin iSel := nil; iDel := Selected; end; flt := ResetFilter; if Assigned( iDel ) then Items.Delete( iDel.Index ); // if flt <> EmptyStr then sb.Text := flt; if Assigned( iSel ) then ItemIndex := iSel.Index; end; end. Еще на XE7 есть глюк в режиме Sorted := True, при добавить одинаковые значения (или несколько одинаковых) и сразу выделении одного через IntemIndex.
    Но пока на выявление закономерностей и борьбу нет времени.
    ListBoxHelper.zip
  16. Like
    Kitty получил реакцию от Streletz в Нужна книга   
    Добрый день.
    Можно и курсы, но опыт показывает, что это все же не так эффективно. Вон Эмбаркадеро сколько видео курсов проводит, а стоны со всех сторон – дайте манул, дайте справку…
    Думаю работа в фоновом режиме над мануалом будет также хорошим решением.
    А чтобы хотелось иметь первым делом:

    Очень бы хотелось иметь мощный мануал страниц минимум на 300 по созданию приложений для платформы Андроид с помощью библиотеки FMX. iOS тоже важен, но начать логичнее все же с платформы, которая распространена гораздо шире.
    Хотелось бы освещение таких вопросов:
    1. Особенности использования FMX исходя из особенностей и требований ОС Андроид.
    2. Правильная разработка интерфейсов исходя из платформы Андроид. Детальное рассмотрение компонентов TListView, TListBox, TMultiView при создании интерфейса программы. Работа с этими компонентами в десигн и рантайм. Правильный подход при создании многооконного приложения в Андроид, использование фреймов. Обработка ошибок.
    3. Взаимодействие с Java и API (Androidapi::Jni…).
    4. Работа со стилями.
    5. Андроид  и локальная база данных. Андроид и удаленная база данных (DataSnap).
    6. Примеры решения типовых задач (работа с видео и т.д.).
    7. Наметки использования FMX для решения реальных корпоративных задач. Показать первые шаги и правильный подход для решения таких, например, реальных задач как:
    а) кладовщик на складе через планшет вводит данные в центральную базу данных и имеет доступ  к актуальным данным компании.
    б) таксист, сидя в машине на своем планшете с Андроид имеет полную информацию о заказах и очереди.
    в) отслеживание на карте Google перемещения дальнобойных машин. Координаты присылает Андроид устройство из кабины водителя или по таймеру или по запросу из офиса.
    Все это большие и объемные задачи – просто показать скелет правильного подхода решения реальных задач на платформе Андроид с помощью FMX. Или придумать свои корпоративные задачи для мануала.
    Считаю FMX отличным выборам для решения именно корпоративных задач компании.
    8. Обязательно дублировать код с Паскаля на С++.
    По поводу пункта номер 8. Вот мой реальный опыт с FMX:
    В С++ Builder XE6 создала приложение для корпоративного использования. Вопрос уперся в воспроизведение и остановке видео. Стандартный fmx плеер не работает на некоторых из Андроид устройств. Помогли на этом форуме рекомендацией использовать этот pas файл и МХ плеер: http://blog.csdn.net/flcop/article/details/17190009
    Однако после подключения этого файла в С++ Builder сыпались AV. Никто уже не мог помочь, ни один форум ни одна справка, даже автор японец pas файла не знал в чем дело. И вот когда я уже была близка к присоединению к армии тех, кто ненавидит FMX, на одном из форумов промелькнул тайваньский товарищ, который сказал добавить в pas файл такой код:
    procedure RegisterTypes;
    begin
    TRegTypes.RegisterType('Androidapi.JNI.ActivityManager.JDebug_MemoryInfo', TypeInfo(Androidapi.JNI.ActivityManager.JDebug_MemoryInfo));
    end;
    и все сразу заработало. Сейчас у японца полностью правильный pas файл и для С++.
    Этот простой пример говорит о том, что если есть проверенный рабочий код для Дельфи, то это не факт, что все будет работать и в С++.
    Дублирование правильного кода [паскаль-с++] сделает манул всесторонним и всеобъемлющим. Армия С++ наконец-то безболезненно присоединится к паскалистам и это хорошо для Эмбаркадеро.
    Понятно, что у меня большой аппетит для такого мануала, но наличие такого манула это огромный шаг вперед для FMX. И не смотря на то, что он будет ориентирован на Андроид, он во много закроет многие другие вопросы, связанные с FMX для других платформ. Выпуск такого мануала (или бумажной книги) важен и жизненно необходим.

     
  17. Like
    Kitty отреагировална xenon54 в [TVideoCaptureDevice] Как оптимизировать скорость считывания данных с камеры?TVideoCaptureDevice   
    Насрать что сишарп. Качаю, посмотрим
    Честно говоря, в плане написания для IOS'а абракадабра меня устраивает на все 100. Нет не решаемых задач, и работает шустро, нет никаких подлагиваний, за исключением некоторых моментов с анимацией контролов. Я так понял что у всех нарекания к абракадабре именно из-за андроида.
  18. Like
    Kitty отреагировална Равиль Зарипов (ZuBy) в Пропали надписи на кнопках   
    Это баг, тоже с этим попал. Пришлось отказаться от этих иконок.
    Ресайз не помогает в дизайн тайме,
  19. Like
    Kitty получил реакцию от AngryOwl в Черный экран   
    Сейчас при закрытии приложения в RAD XE8 возникает ошибка:
    Segmentation fault(11).
    Понятно, что решение Руслана может помочь (хотя не понятно как перенести на С++) . Не понятно, почему разработчики FMX не приняли меры к решению в новой студии! 
  20. Like
    Kitty отреагировална Brovin Yaroslav в Возможно ли создать свои тригеры для запуска анимации? 2   
    Вот, посмотрите пример. 4_5.zip
    Пример показывает создание двух триггеров и их использование в стилях. Сделан компонент, который в зависимости от положения курсора внутри него перекрашивает панель в разные цвета.
    Это пример из моей книги.
  21. Like
    Kitty отреагировална Brovin Yaroslav в [TRESTRequest] Как указать ContentType в RESTRequest?   
    Когда вы заполняете параметры у TRESTRequest достаточно у одно из них установить ContentType в нужно значение, и компонент всегда будет использовать его.
     
    Например, если вы установите его в ctAPPLICATION_JSON, что соответствует "application/json", то компонент вернет вам в TRESTRequest.ContentType = ctAPPLICATION_JSON
  22. Like
    Kitty отреагировална Brovin Yaroslav в [TCanvas] Как при отрисовки не вылезьте за указанную область?   
    Достаточно установить у контрола 
    ClipChildren = True Или для канвы установить область отсечения:
    Canvas.IntersectClipRect(Button1.LocalRect);
  23. Like
    Kitty отреагировална Brovin Yaroslav в Редактирование названия темы   
    Пользователи могут редактировать название темы. Для этого нужно открыть редактирование сообщения в полном режиме:
     

     

  24. Like
    Kitty отреагировална Brovin Yaroslav в [Задача, Android] Добавление возможности указывать размер получаемого изображения с камеры   
    Функциональность по заданию размера получаемого изображения с камеры добавлена в TCameraComponent в XE8.
     
    За качество отвечают свойства:
    TCameraComponent.Quality TCameraComponent.AvailableCaptureSettings TCameraComponent.CaptureSetting TCameraComponent.CaptureSettingPriority
  25. Like
    Kitty отреагировална Brovin Yaroslav в [XE8] [FGX] Описание версии 0.6.0.60   
    Ссылка на скачивание (Только для RAD Studio XE8): fgx_0.6.0.60.zip
    Инструкция по установке: "Инструкция по установке набора компонентов FGX"
    Описание
    Эта версия включает в себя следующий набор компонентов:
    TfgFlipView (UPDATED) - слайдер изображений. Поддерживает несколько способов переключения фотографий при помощи эффектов и сдвигов. При первом использовании ОБЯЗАТЕЛЬНО прочитать инструкцию "TfgFlipView - Инструкция загрузки стиля" TfgPositionAnimation - анимация свойств типа TPosistion TfgPosition3DAnimation - анимация свойств типа TPosition3D  TfgBitmapLinkAnimation - анимация свойств типа TBitmapLink  TfgProgressDialog (UPDATED)- Компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения фоновой операции можно оценить. TfgActivityDialog (UPDATED)- компонент для отображения диалогового окна в момент выполнения длительной фоновой операции, когда время выполнения операции не возможно адекватно оценить. TfgActionSheet - Аналог контекстного меню для мобильных платформ. TfgColorsPanel - Палитра цветов с возможностью выбора цвета. TfgGradientEdit - Компонент выбора градиента. TfgLinkedLabel  - Метка поддерживающая открытие Web ссылки в браузере по умолчанию. TfgApplicationEvents - компонент с возможностью легко задать обработчики на основные события приложения: Отслеживание смены состояния приложения, простой, обновление и выполнение действий Actions, Изменение ориентации устройства и тд. TfgVirtualKeyboard - компонент облегчающий работу с виртуальной клавиатурой. Позволяет задать пользовательские кнопки над виртуальной клавиатурой под iOS, а так же отлавливать события по отображению и скрытию клавиатуры. Зарегистрированы все стилевые объекты на вкладке "FGX: Style objects" Исправления
    Исправлен номер версии пакета fgx.dpk c 210 на 220 (Спасибо за наблюдательность Thomas Krampe) TfgActionSheet: Исправлена ошибка AV на iPad, появляющася при закрытии окна действий (Спасибо за наблюдательность Thomas Krampe) TfgProgressDialog, TfgActivityDialog: Исправлена ошибка на iOS платформе, приводящая при загрузке приложения к неправильным размерам формы.  (Спасибо за наблюдательность Thomas Krampe) TfgFlipView: Исправлена ошибка, при отключенном режиме слайд шоу и загруженных изображениях, при загрузке формы пролистывался один слайд. (Спасибо StrangerMX)
×
×
  • Создать...