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

Brovin Yaroslav

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

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

  • Посещение

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

    390

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

  1. Не могу ничего сказать. Но у меня есть уже на 60% реализованные редактор итемов в FGX. Которые является расширением стандартного и поддерживает регистраци своих итемов. Как будет готов, я отпишусь.
  2. Как определить установлено ли другое приложение или нет на Android? Использование стандартных приложений
  3. Добрый день, У вас все правильно написано. В вашем коде вы меняете иконку самого приложения в трее. А вот чтобы поменять иконку у формы, нужно отправлять сообщение WM_SETICON окну а не приложению: uses VCL.Graphics, Winapi.Windows, Winapi.Messages, FMX.Platform.Win; procedure TForm3.Button1Click(Sender: TObject); var NewAppIcon: TIcon; begin 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. Требования к наличию у ученика: Наличие хорошего и быстрого интернет канала Skype RAD Studio XE10 Team Viewer
  5. Меня зовут Бровин Ярослав Дмитриевич. Я работаю разработчиком в компании Embarcadero в команде FireMonkey. Поэтому в совершенстве знаю язык Delphi и FireMonkey. Несколько фактов: Педагогический опыт: Лауреат конкурса "Сердце отдаю детям" в рамках конкурса "Учитель года". Имею первую категорию по должности педагога дополнительного образования. Стаж работы педагогом 6 лет. Награжден нагрудным знаком правительством Санкт-Петербурга "За гуманизацию школы Санкт-Петербурга" Образование: Закончил с отличием Ленинградский Электротехнический институт им У. Ленина по специальности Технологии Разработки Программного Обеспечения. Увлечения помимо работы: В свободное время занимаюсь авиамоделированием, игрой на музыкальном инструменте и созданием и администрированием Web-ресурсов
  6. С весны 2015 года я ввожу, в качестве эксперимента, обучение по Skype. Стоимость 1 часа (60 минут): Для учащихся (школьники или студенты любых отделений): 1 000 р Для всех остальных: 1 200 р
  7. Всем добрый день, Внесу свои небольшие коррективы. Чтобы сделать сплешскрин, достаточно сделать отложенное создание форм. Другими словами: В главном файле проекта создаем только форму сплешскрин и ничего более В форме-заставке уже создаем динамически все остальные формы. При таком подходе вначале появится заставка, а потом уже будет создание других форм.
  8. Добрый вечер, Сдается мне, что это баг. Как вариант, обхода: Повесить на OnApplyStyleLookup свой обработчик и восстанавливать настройки текста вручную через TextSettings.
  9. Примерно. ViewPortPosition не может достигнуть высоты контента. ViewPortPosition - это смещение контента. Поэтому максимальное значение будет высота контента - высота окна (ClientHeight), то что видим if NewViewportPosition.y = ScrollBox1.ContentBounds.Height - ScrollBox1.ClientHeight then ShowMessage('Bottom');
  10. Добрый день, Увы, пока никак. Единственный обходной путь, это изменить размер скроллбокса по ширине.
  11. Доброй ночи, За оттягивание отвечает параметр: ScrollBox1.AniCalculations.Elasticity
  12. Добрый вечер, Используйте событие OnViewportPositionChanged. В параметрах передается позиция контента. Сравнивайте ее с размерами контента. if NewViewportPosition.y = ScrollBox1.ContentBounds.Height - ScrollBox1.ClientHeight then ShowMessage('Bottom');
  13. Добрый день, Посмотрите этот ответ: Включение своих файлов в приложение Он описывает, как вытащить при использовании TResourceStream ресурс по имени из вашего приложения.
  14. Полной поддержки нету. По первому пункту вам пригодится метод TControl.ParentedVisible. Он проверяет по дереву вверх от текущего контрола, не скрыт какой родитель (проверка только на Visible) Остальные придется реализовывать самостоятельно. Так как это не тривиальная задача и доволно трудоемкая по выполнению. Здесь много условий, которые могут повлиять на конечную видимость контрола: Прозрачность Клиппинг Видимость всех конролов по цепочке вверх (родители) Возможность перекрытия контрола контролов другой ветки контролов. Самая дорогостоящая операция номер 4. Ну и как понимаете, если на каждый чих проверять и пробегаться по всему контролам формы, то это будет очень медленно, а кэширование результатов приведет к сложной системе уведомлений между всеми контролами.
  15. Метод Assign идет от класса TPersistent. Это базовая функциональность этого класса. Каждый наследник по идеи должен перекрыть AssignTo и реализовать копирование своих данных в переданный объект. Если же реализации нету, то выбрасывается исключение, которое вы и получили. procedure TPersistent.Assign(Source: TPersistent); begin if Source <> nil then Source.AssignTo(Self) else AssignError(nil); end; А в справку это попало видимо по наследованию. То есть есть общее описание этого метода для TPersistent и оно автоматически посасывается в каждом наследнике.
  16. Взять можно здесь Каждая книжка персонализирована, так что вам ее вряд ли кто даст.
  17. Добрый день, У всех аниматоров метод Assign не реализован, как по-моему у всех FireMonkey контролов. Поэтому вы получаете эту ошибку. Решение Копируйте вручную. Либо напишите хелпер. P.S. Добавил реквест на реализацию метода Assign
  18. Посмотрите ответ на тему: Как реализовать функционал DBLookupCombobox?
  19. Спасибо за время, потраченное на публикацию найденных проблем. Устранил: 1. Отображение аватара пользователя в шапке сайта. Теперь отображается аватар текущего пользователя. + выравнены иконки слева относительно аватара 2. Отображение сообщений в Профиль -> Лайки: 3. Отображение тем в Профиль -> Темы: 4. Отображение сообщений в Профиль -> Темы: 5. Исправлено отображение сообщений в личном ящике: 6. Исправлено отображение последних сообщений при ответе в теме с использование расширенной формы:
  20. Добрый день, TAnimation.AniFrameRate - это классовая переменная. Она существует в единственном экземпляре для всех аниматоров. Изменить ее локально для одного аниматора/анимации не возможно.
  21. FWndClassName - это класс виндового окна приложения сенсорной клавиатуры. Поэтому его нужно было найти и указать в этой переменной, а не tabtip.exe. Найти можно, используя Spy++. В общем, у меня с такими значениями заработало: FPath := 'C:\Program Files\Common Files\Microsoft Shared\ink\'; FExeName := 'tabtip.exe'; FWndClassName := 'IPTip_Main_Window'; С учетом того, что tabtip.exe лежит не в системной папке, а по другому пути, нужно еще и FPath прописать.
  22. В FireMonkey пока нету реализации для сенсорной клавиатуры. Но я могу предположить, если изменить эти две строчки, то возможно текущая реализация так же будет работать: FMX.Platform.Win.pas: constructor TVirtualKeyboardWin.Create; var L: integer; S: string; HID: HKey; DVersion: DWORD; Major, Minor: byte; begin S := ''; inherited Create; SetLength(S, MAX_PATH); L := GetSystemDirectory(PChar(S), MAX_PATH); SetLength(S, L); FPath := S; FExeName := 'osk.exe'; FWndClassName := 'OSKMainClass'; Надо изменить название исполняемого файла и класс окна: FExeName и FWndClassName на "tabtip.exe"
  23. Добрый день, Если мне память не изменяет, то она вроде вызывается, только когда у компьютера нету физической виртуальной клавиатуры. И по идеи все функции раскрытия и скрытия так же были реализованы в FMX.Platform.Win.TVirtualKeyboardWin Клавиатура не вызывается, так как виртуальная клавиатура есть в любой версии Windows. И поэтому на обычном десктопном компьютере у вас всегда бы открывалась клавиатура, в не зависимости от вашего желания. Если вы хотите, чтобы она все таки всегда открывалась, то это можно сделать через глобальную переменную FMX.Types.VKAutoShowMode := TVKAutoShowMode.Always; По умолчанию эта переменная имеет значение TVKAutoShowMode.DefinedBySystem
×
×
  • Создать...