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

Кривяков Виталий

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

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

  • Посещение

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

    12

Весь контент Кривяков Виталий

  1. Наверное самый простой способ, это поменять прототип функции на function TTelegramBot.API<T>(const Method: String; Parameters: TDictionary<String, TValue>): TtgApiResponse<T>; И возвращать Result := TtgApiResponse<T>.FromJSON(lHttpResponse.ContentAsString); Ну и соответственно уничтожать объект в вызывающем методе, после того, как он не нужен.
  2. Затрудняюсь сказать, почему запрещено. <supports-screens android:smallScreens="false" android:normalScreens="false" android:largeScreens="true" android:xlargeScreens="true" android:requiresSmallestWidthDp="600" /> Установлены вот такие ограничения.
  3. Работа пока возможна только на планшетах, поддержка смартфонов в будущем. - это в первом сообщении.
  4. А в чем проблема при установке? Тестирование проходило на разных аппаратах от 4.2 до 6 Андроида.
  5. Добрый день, коллеги! Хочу рассказать о выходе нашего нового продукта 1С-Рарус:Мобильное РМК Приложение написано в 10 версии Delphi (Seatlle), предназначено для автоматизации рабочего места кассира. Есть встроенный демо режим. Работа пока возможна только на планшетах, поддержка смартфонов в будущем. Готов воспринять критику, пожелания и ответить на вопросы.
  6. Итак, год спустя описываю решение проблемы. Исследования проводил в Берлине, но думаю рецепт подойдет и для младших версий. 1. Ошибка существует в файле FMX.TextLayout.GPU, поэтому копируем его в проект. 2. Убираем мусор при отрисовке кропнутого символа. Ищем в файле следующий фрагмент: ColoredGlyph := TFontGlyphStyle.ColorGlyph in Rec.Glyph.Style; if ColoredGlyph then TCustomCanvasGpu(ACanvas).ModulateColor := $FFFFFFFF; ACanvas.DrawBitmap(Rec.Bitmap, SrcR, R, Opacity); if ColoredGlyph then TCustomCanvasGpu(ACanvas).ModulateColor := LRun.Color; и заменяем его на if not R.IsEmpty then begin // Disable draw empty rect ColoredGlyph := TFontGlyphStyle.ColorGlyph in Rec.Glyph.Style; if ColoredGlyph then TCustomCanvasGpu(ACanvas).ModulateColor := $FFFFFFFF; ACanvas.DrawBitmap(Rec.Bitmap, SrcR, R, Opacity); if ColoredGlyph then TCustomCanvasGpu(ACanvas).ModulateColor := LRun.Color; end; Пояснение: при расчете области отрисовки R символа, мы можем получить "отрицательный размер", где Bottom будет меньше чем Top. Соответсвенно такой же неправильной становиться область источника SrcR и на экран вылазит мусор. 3. От мусора избавились, но если присмотреться к нижней границе текста, то можно увидеть, что отрезка не ровная, одни символы отрезаны больше, другие меньше. Для этого нужно исправить алгоритм расчета области отсечения. Для этого ищем комментарий //Checking for lines lower than bottom border - с него начинается ветка, в которую нужно внести изменения. Чуть далее ищем код Rec := AddOrGetChar(nil, Run.Chars[K], ChDic, Run.Font); X := MaxSize.Y - FFrame.Last.TopLeft.Y - Rec.Glyph.VerticalAdvance * FScaleFactor; и меняем его на Rec := AddOrGetChar(LayoutCanvas, Run.Chars[K], ChDic, Run.Font); X := MaxSize.Y - FFrame.Last.TopLeft.Y - ((Rec.SrcRect.Height + Rec.Glyph.Origin.Y) * FScaleFactor); Здесь пояснения дать сложнее, скажу только, что разработчики проигнорировали тот момент, что символы имеют разные размеры (например . и Ж) и считают отсечение не по размеру глифа символа а по экранному размеру символа, т.е. он будет одинаковый для всей строки, что неправильно, так как в дальнейшем данное отсечение применяется к глифу символа. P.S. А куда переехал CodeCentral, не нашел его в Берлине?
  7. Добрый день! В стандартных компонента есть механизм по встраиванию своих функций в SQLite. ... // создаю встроенную функцию ru_lower F1 := TFDSQLiteFunction.Create(nil); F1.DriverLink := WC1; F1.FunctionName := 'ru_lower'; F1.ArgumentsCount := 1; F1.OnCalculate := ru_lower; ... procedure TORMmanager.ru_lower(AFunc: TSQLiteFunctionInstance; AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject); begin AOutput.AsString := AInputs[0].AsString.ToLower; end; SQL: select name from users where ru_lower(name) like '%иван%' Запрос вернет все имена содержащие иван в любом регистре.
  8. Добрый день! На одном из планшетов столкнулся со следующей проблемой: нажатие на ввод на виртуальной клавиатуре приводит к переводу строки внутри TEdit. Планшет Асеr b1-720 Android 4.4.2 Данное поведение происходит как в приложении собранном в Seattle, так и в Berlin. C чем может быть связано такое поведение?
  9. Рекомендую в коде проверять наличие общих папок. Недавно столкнулся на 6 андроиде с тем, что GetSharedDocumentPath не существовала. Просто создал ее и приложение заработало.
  10. Только что поставил. Вот инструкция от производителя: Using the Feature Installer - If you installed Delphi, C++Builder or RAD Studio 10.1 Berlin using the feature installer, please follow these steps to install your Add-On Pack: 1. Register the license in the license manager 2. Launch the Feature Manager (docwiki.embarcadero.com/RADStudio/Berlin/en/Feature_Manager) to add the new features to the product
  11. Я уже писал об этой проблеме. Её не решить, что-то совсем внутри XE7 делает некорректно.
  12. Добрый день! Похожая ситуация была, когда я не уследил за обращениями из не основного потока к экранным компонентам - работает, работает, а потом бац и "Все, они пропали" (с) South park.
  13. Нет такого оборудования, которое уникально и доступно на компе. Задача программной защиты обычно использует совокупность хардварных идентификатров и алгоритмы, которые допускают частичное изменение их. Но это для тиражных продуктов, если вам не сильно критично сильная защита - то проще всего ориентироваться на дату установки Windows.
  14. Да, тоже столкнулся с тем, что цвет становиться белым и не меняется. Вот версия без необходимости менять исходники. SystemBar.zip
  15. 10 всем устраивает, за исключением того, что мне руководство не даст несколько сотен тысяч рублей, для перевода нескольких разработчиков на Сиэтл.
  16. Добрый день! Обновился Андроид до 6 версии на моем нексусе. Появилась неприятная проблема - любое исключение в программе, собранное в XE7, приводит к краху приложения, вне зависимости от того, пытаюсь я его перехватить или нет. Специально пробовал на пустом приложении, в котором одна кнопка и вызов исключения. Проверял на XE10 - все в порядке. Как понять причину и есть ли возможность исправить эту проблему?
  17. Подробнее, какие девайсы, с какой виндой. Сталкивался только с проблемой в эффектах на Windows XP под терминалкой, пришлось их отключать при старте программы.
  18. Окружность также можно описать с помощью параметрического уравнения: высчитываешь центр (X0, Y0) Определяешь угол поворота 2*Pi*Percent (Percent от 0 до 1) Считаешь координаты точки окружности, только нужно учесть разницу в координате Y (на экране она растет сверху вниз)
  19. Проверил - действительно, есть такое поведение. Постараюсь выложить исправление в ближайшее время.
×
×
  • Создать...