![](https://fire-monkey.ru/uploads/set_resources_12/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
Kitty
-
Постов
792 -
Зарегистрирован
-
Посещение
-
Победитель дней
16
Активность репутации
-
Kitty отреагировална estra в Баг компилятора?
Провел небольшой эксперимент в XE8. За неимением полных исходников кое-что пришлось подправить/закомментировать...
Эксперимент 1:
Если цикловые переменные сделать глобальными (что абсолютно не логично, но судя по выложенному вами фрагменту кода у вас так и есть), то получаем соответствующее предупреждение.
Эксперимент 2:
Если переменные локальные, всё компилируется без каких либо проблем.
Если вместо закомментированных строк вставить вызов какой либо процедуры, например ShowMessage(''), то ни к каким проблемам это не приводит...
-
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; -
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; -
Kitty отреагировална Brovin Yaroslav в [TGrid] [XE5] Почему TColumn.ChildrenCount возвращает всегда 9, несмотря на то, что у меня в гриде больше 9 строк?
Тяжело вам сейчас сказать. Так как в следующих версиях концепция грида изменилась и он в настоящий момент не содержит контрол-ячеек.
В вашем случае, на счет количества ячеек, я думаю, что там использована оптимизация. И ячейки при прокручивании просто перемещаются и обновляются новыми данными, вместо того, чтобы создавать 100 или 1000 ячеек столбца. Поэтому там скорее всего будет всегда только видимое количество ячеек. Это можно проверить путем изменения высоты грида и проверки при этом количество.
-
Kitty отреагировална Brovin Yaroslav в [TWebBrowser] Можно ли получить доступ к элементам разметки страницы HTML?
TWebBrowser не поддерживает возврат результатов при выполнении JavaScript. Но если вам нужно нажать на кнопку или выполнить какие-либо действия без возврата результата в Delphi. То для этого можно использовать JavaScript. Для выполнения JavaScript кода в браузере нужно использовать:
TWebBrowser.EvaluateJavaScript -
Kitty отреагировална Brovin Yaroslav в [TWebBrowser] Когда появится поддержка TWebBrowser для Windows и OSX?
TWebBrowser для OSX и Windows был добавлен в RAD Studio XE8.
-
Kitty отреагировална Brovin Yaroslav в [TWebBrowser] Как остановить загрузку браузера?
Так же:
WebBrowser1.Stop -
Kitty отреагировална Brovin Yaroslav в Добавлять нестандартные колонки в grid - реально?
Не могу ничего сказать. Но у меня есть уже на 60% реализованные редактор итемов в FGX. Которые является расширением стандартного и поддерживает регистраци своих итемов. Как будет готов, я отпишусь.
-
Kitty отреагировална Brovin Yaroslav в Как с помощью приложения FMX узнать о существовании любого другого приложения
Как определить установлено ли другое приложение или нет на Android? Использование стандартных приложений -
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 для других платформ. Выпуск такого мануала (или бумажной книги) важен и жизненно необходим.
-
Kitty отреагировална xenon54 в [Редактор кода] [Castalia] Как убрать выделение блоков begin-end в XE8?
В настройках касталии отключается
castalia->options->editor->smart highlighting
-
Kitty отреагировална Brovin Yaroslav в iOS/Android Application Development with Delphi у кого нибудь есть?
Взять можно здесь Каждая книжка персонализирована, так что вам ее вряд ли кто даст. -
Kitty отреагировална Andrey Efimov в MIDI и FireMonkey
Под Андроидом, если в АПИ нет такой возможности, то точно можно использовать какую-нибудь opensource библиотеку, достаточно в гугле поискать.
Гляньте вот эти ссылки:
SONiVOX JETCreator
JetPlayer
-
Kitty отреагировална Brovin Yaroslav в Можно ли изменить значения AniFrameRate только для одной анимации?
Добрый день,
TAnimation.AniFrameRate - это классовая переменная. Она существует в единственном экземпляре для всех аниматоров. Изменить ее локально для одного аниматора/анимации не возможно. -
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
-
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 для других платформ. Выпуск такого мануала (или бумажной книги) важен и жизненно необходим.
-
Kitty отреагировална xenon54 в [TVideoCaptureDevice] Как оптимизировать скорость считывания данных с камеры?TVideoCaptureDevice
Насрать что сишарп. Качаю, посмотрим
Честно говоря, в плане написания для IOS'а абракадабра меня устраивает на все 100. Нет не решаемых задач, и работает шустро, нет никаких подлагиваний, за исключением некоторых моментов с анимацией контролов. Я так понял что у всех нарекания к абракадабре именно из-за андроида.
-
Kitty отреагировална Равиль Зарипов (ZuBy) в Пропали надписи на кнопках
Это баг, тоже с этим попал. Пришлось отказаться от этих иконок.
Ресайз не помогает в дизайн тайме,
-
Kitty получил реакцию от AngryOwl в Черный экран
Сейчас при закрытии приложения в RAD XE8 возникает ошибка:
Segmentation fault(11).
Понятно, что решение Руслана может помочь (хотя не понятно как перенести на С++) . Не понятно, почему разработчики FMX не приняли меры к решению в новой студии!
-
Kitty отреагировална Brovin Yaroslav в Возможно ли создать свои тригеры для запуска анимации? 2
Вот, посмотрите пример. 4_5.zip
Пример показывает создание двух триггеров и их использование в стилях. Сделан компонент, который в зависимости от положения курсора внутри него перекрашивает панель в разные цвета.
Это пример из моей книги.
-
Kitty отреагировална Brovin Yaroslav в [TRESTRequest] Как указать ContentType в RESTRequest?
Когда вы заполняете параметры у TRESTRequest достаточно у одно из них установить ContentType в нужно значение, и компонент всегда будет использовать его.
Например, если вы установите его в ctAPPLICATION_JSON, что соответствует "application/json", то компонент вернет вам в TRESTRequest.ContentType = ctAPPLICATION_JSON
-
Kitty отреагировална Brovin Yaroslav в [TCanvas] Как при отрисовки не вылезьте за указанную область?
Достаточно установить у контрола
ClipChildren = True Или для канвы установить область отсечения:
Canvas.IntersectClipRect(Button1.LocalRect); -
Kitty отреагировална Brovin Yaroslav в Редактирование названия темы
Пользователи могут редактировать название темы. Для этого нужно открыть редактирование сообщения в полном режиме:
-
Kitty отреагировална Brovin Yaroslav в [Задача, Android] Добавление возможности указывать размер получаемого изображения с камеры
Функциональность по заданию размера получаемого изображения с камеры добавлена в TCameraComponent в XE8.
За качество отвечают свойства:
TCameraComponent.Quality TCameraComponent.AvailableCaptureSettings TCameraComponent.CaptureSetting TCameraComponent.CaptureSettingPriority -
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)