-
Постов
79 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Сообщения, опубликованные Кривяков Виталий
-
-
Добрый день!
Все проще, гораздо.
Net := THTTPClient.Create;
Net.BeginPost(
procedure (const Value : IAsyncResult)
begin
AsyncResult(Value); // Вот тут можно вызвать любую процедуру, или просто обработать результат.
end, URL, InputStream, OutputStream, Headers);В анонимной процедуре просто вызываете нужную процедуру, для интерактивной одну, для периодических запросов другую.
-
-
В 24.09.2017 в 16:54, POV сказал:
Ну, видимо там ничего хитрого, просто надо потыркаться, варианты поискать. Если камеру остановлю заранее, то закрывается приложение норм. А вот в onClose остановка не работает не работает.
Реализация данного механизма кривая. Внутри захват изображения с камеры в отдельном потоке идет, и через синхронизацию десятки раз в секунду выбрасывается на экран. В 99 процентах случаев завершения работы программы без остановки камеры или реже при остановке камеры вы получите взаимоблокировку основного потока и потока граббера с камеры. К сожалению, это зарыто глубоко в FMX и без того, чтобы перекурочить исходники не получится исправить работу.
-
-
Проверяйте, что работа идет в основном потоке, В неосоновном ловил такие проблемы.
-
Я отказался пока от SVG, так как рассматривал его как вариант для отображения картинок кнопок - некрасиво, на маленьких размерах PNG выигрывает в качестве. Поэтому не заморачивался с тем когда вызывать код. Более правильно было бы сделать заплатку для FMX, но там такая реализация (через одно место), что только переносить исходники в проект, а это не дело.
Для примера скриншот изображения 24х24 для Windows и Android
-
Добрый день!
Коллеги, хочу озвучить одну из причин, из-за которой может возникать ситуация " Иногда бывает что при вставке пути в TPath, компонент его отображает некорректно"
Дело в том, что существуют сокращения в представлении данных и не все из низ TPath понимает, вот с чем столкнулся:
Есть команда 'c' - рисование кривой. не буду вдаваться в подробности, можно найти в интернете описание, скажу только то, что данная команда содержит 6 чисел. В идеале должно быть:
сX1 X2 X3 X4 X5 X6
Но очень часто (например в иконках Material Design) можно встретить:
c-1.1 0-1.99.9-1.99 2
И на этой строчке парсер TPath падает с ошибкой, так как пытается сконвертировать '-1.99.9' в число, что не верно. В реальности данная запись соответствует двум числам -1.99 и 0.9.
Для обхода проблемы я загружаю SVG в рантайме, и сроку пропускаю через корректор:
function CorrectSVG(const Value: String): String; var SB : TStringBuilder; I: Integer; C : Char; begin SB := TStringBuilder.Create; try I := 0; for C in Value do begin if C='.' then Inc(I) else if not CharInSet(C, ['0'..'9']) then I := 0; if I=2 then begin SB.Append(' 0.'); I := 0; end else SB.Append(C); end; Result := SB.ToString; finally FreeAndNil(SB); end; end;
-
Добрый день!
Есть приложение под iOS. Если запускать из Delphi (Berlin), то все нормально. Как можно получить, или где найти ipa файл?
В сертификат(developer) прописаны два устройства, как запустить приложение на другом айпаде, без его подключения к компу?
-
Посмотрите тут TUITabControl
-
-
Добрый день!
Столкнулся с проблемой вывода текста разного размера по одной линии. Не получается использовать BaseLine доступную для Firemonkey.
Baseline - воображаемая прямая линия, проходящая по нижнему краю прямых знаков без учёта свисаний и нижних выносных элементов. В строке символы текста стоят на базовой линии, а нижние выносные элементы текста «свисают» с неё.
Из описанного выше ясно, что выводимые символы должны лежать на это линии, но в реале как то все некорректно выводится.
Сделал два примера VCL (черный фонт) и FireMonkey(черный полупрозрачный фонт), оказалось, что вывод текста осуществляется по разному, при одном и том же значении размера шрифта. Базовая линия в обоих примерах 356.
Совмещаем отображение символов: GlyphsEqual.png Символы совпали, но базовая линия смещена.
Совмещаем базовую линию: PosEqual.png Базовая линия совпала, как и верхний край контролов, а вот текст (серый) значительно ниже.
А теперь собственно вопрос вопрос, где ошибка? Как рассчитать базовую линию для FMX?
P.S.
Про attributes у TTextLayout знаю.
-
Вот набор библиотек для работы с JWT, к сожалению у Delphi там ограниченная поддержка. Может что-то удастся вытащить?
-
Добрый день!
Картинки правильно грузить в отдельном потоке в TBitmapSurface, так как последний, в отличии от TBitmap, корректно работает в потоках. Как скачаете, то можно сохранить в файл, для дальнейшего показа и отобразить на экране. Секция отображения на экране должна быть обязательно засинхронизирована с основным потоком. Общая схема такая.
-
Добрый день!
Было такое. Боюсь, что деталей не вспомню, но:
На одном планшете при подключении сканера вылезло предупреждение, в котором смог сказать, что основную клавиатуру нужно показывать, на другом долго копался в настройках клавиатуры и что-то включил. К сожалению, сейчас нет сканера под рукой, не могу посмотреть, но то что лечится проблема - это точно.
-
function GetDefaultFilePath(const FileName: string): string; begin {$IFDEF Android} Result := TPath.Combine(TPath.GetSharedDocumentsPath, FileName); {$ENDIF} {$IFDEF IOS} Result := TPath.Combine(TPath.GetDocumentsPath, FileName); {$ENDIF} {$IFDEF MSWindows} Result := TPath.Combine(TPath.GetDocumentsPath, FileName); {$ENDIF} ForceDirectories(ExtractFilePath(Result)); end; procedure TForm.ShowPDF; var {$IFDEF Android} Intent: JIntent; {$ENDIF} FilePath, tmpStr: string; begin FilePath := GetDefaultFilePath(Filename); {$IFDEF Android } try Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setDataAndType(StrToJURI('file:' + FilePath), StringToJString('application/pdf')); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NO_HISTORY); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); SharedActivity.startActivity(Intent); except on E: Exception do ShowToast(E.Message); end; {$ENDIF} {$IFDEF IOS} wbViewPDF.Visible := True; wbViewPDF.URL := 'file:/' + FilePath; {$ENDIF} end;
Приблизительно так...
-
-
Добрый день!
Возникла необходимость отправлять уведомления в стороннюю программу. Да не абы как через сертификаты, о чем много тут статей, а через токены.
Немного руководства от яблока.Нашел библиотеку для работы с JWT
https://github.com/paolo-rossi/delphi-jose-jwtНо вот как подписывать токен алгоритмом ECDSA и какие сертификаты использовать не могу понять. Кто занимался похожем вопросом? Поделитесь знаниями.
Спасибо
-
Привет!
Сделайте копию проекта и постепенно удаляйте все с формы. Попробуйте определить, что приводит к такому эффекту. если есть возможность, выложите демо проект, который приводит к таким эффектам.
-
Если битмап не секретный, то выложите его сюда.
-
Добрый день!
Image1.Bitmap
Скорее всего он у вас имеет нулевые размеры, попробуйте перед
Image1.Bitmap.Canvas.BeginScene;
указать Image1.Bitmap.SetSize(X,Y);
-
-
Добрый день!
Не получается отправить файлы из приложения в проводник Windows средствами firemonkey.
Код:
procedure DragAndDropFiles; var DDService : IFMXDragDropService; D : TDragObject; ABitmap : TBitmap; begin ... D.Files := []; D.Source := self; ABitmap := CreateMyBitmap; gvIcons.DisableScroll; AddFiles(D.Files); if TPlatformServices.Current.SupportsPlatformService(IFMXDragDropService, DDService) then DDService.BeginDragDrop(Self, D, ABitmap); FreeAndNil(ABitmap); end;
Файлы в списке есть, картинка перемещается с курсором, но над проводником знак запрета и drop не срабатывает.
P.S.
Как сделать под VCL знаю, интересует, возможно ли это в FMX.
-
Это я знаю, я спрашивал, как и где расположить сам стиль. Тот, что и будет определен функцией
function GetDefaultStyleLookupName: string; override;
-
Добрый день!
При разработке компонента столкнулся с вопросом, как сделать стиль по умолчанию. Компонент разрабатывается на основе TStyledControl, т.е. его содержимое отсутствует и должно задаваться стилем. Так вот вопрос, как и где разместить стиль, что бы при добавлении компонента на форму у него выло содержимое по умолчанию. Или мой подход не верен и нужно делать по другому.
Спасибо.
Сервер Времени
в Поиск компонентов
Опубликовано
Привет!
Недоступен твой сервер времени. Вот просто пример