Tumaso
-
Постов
331 -
Зарегистрирован
-
Посещение
-
Победитель дней
39
Активность репутации
-
Tumaso отреагировална ENERGY в Размытие текста у функции Canvas.FillText
Native Api (google translate ) :
https://github.com/OneChen/FMXNativeDraw (там же ссылка на описаниеl)
Равиль сделал на основе этого модуля готовые компоненты:
https://github.com/rzaripov1990/ZMaterialComponents
-
Tumaso получил реакцию от Alisson R Oliveira в Firemonkey TTakePhotoFromCameraAction.OnDidFinishTaking causes my app to restart
Пример моего кода:
interface type TMyForm = class(TForm) { ... } procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); {$IFDEF ANDROID} procedure ImageFileMessageListener(const Sender: TObject; const M: TMessage); {$ENDIF} {$IFDEF IOS} procedure ImageFileFinish(Image: TBitmap); {$ENDIF} procedure ImageFromLibraryClick(Sender: TObject); { ... } private { ... } procedure ApplyImage(Image: TBitmap); { ... } end; implementation procedure TMyForm.FormCreate(Sender: TObject); begin {$IF DEFINED(ANDROID)} TMessageManager.DefaultManager.SubscribeToMessage(TMessageDidFinishTakingImageFromLibrary, ImageFileMessageListener); {$ENDIF} end; procedure TMyForm.FormDestroy(Sender: TObject); begin {$IF DEFINED(ANDROID)} TMessageManager.DefaultManager.Unsubscribe(TMessageDidFinishTakingImageFromLibrary, ImageFileMessageListener, True); {$ENDIF} end; {$IFDEF ANDROID} procedure TMyForm.ImageFileMessageListener(const Sender: TObject; const M: TMessage); begin try if M is TMessageDidFinishTakingImageFromLibrary then ApplyImage(TMessageDidFinishTakingImageFromLibrary(M).Value); except { code for exception handle } end; end; {$ENDIF} {$IFDEF IOS} procedure TMyForm.ImageFileFinish(Image: TBitmap); begin try ApplyImage(Image); except { code for exception handle } end; end; {$ENDIF} procedure TMyForm.ImageFromLibraryClick(Sender: TObject); {$IF DEFINED(ANDROID) OR DEFINED(IOS)} var LImageService: IFMXTakenImageService; LImageParams: TParamsPhotoQuery; {$ENDIF} begin if TPlatformServices.Current.SupportsPlatformService(IFMXTakenImageService, IInterface(LImageService)) then begin LImageParams.RequiredResolution := TSize.Create(1024, 1024); LImageParams.Editable := False; LImageParams.NeedSaveToAlbum := False; // под Android обработчик OnDidFinishTaking указывать нельзя, т.к. это может привести к рестарту программы // см. http://docwiki.embarcadero.com/Libraries/Berlin/en/FMX.MediaLibrary.TMessageDidFinishTakingImageFromLibrary LImageParams.OnDidFinishTaking := {$IFDEF IOS}ImageFileFinish{$ELSE}nil{$ENDIF}; LImageParams.OnDidCancelTaking := nil; LImageService.TakeImageFromLibrary({$IFDEF IOS}ImageFile{$ELSE}nil{$ENDIF}, LImageParams); end else raise Exception.Create('No image library access'); end; procedure TMyForm.ApplyImage(Image: TBitmap); begin { code for received image } end;
-
Tumaso отреагировална ArturAD в [TMapView] [Android] Как сделать скриншот TMapView?
Может пригодится кому нибудь:
procedure TForm1.Button1Click(Sender: TObject);
begin
MapView1.Snapshot(SnapshotReady);
end;
procedure TForm1.SnapshotReady(const Bitmap: TBitmap);
begin
Image1.Bitmap.Assign(Bitmap);
end;
-
Tumaso отреагировална elGringo в TListBox. Исключить нажатия на прокрутке. Как?
Решил свой вопрос.
ListViewItem.Selectable:=false;
Обработку итемов вынес в OnTap ListViewItem
Теперь прокручивается без активации итемов. А на тапе по итему - обработка контролов.
-
Tumaso отреагировална IVGSoft в Обработка анимированных GIF по рецепту китайского коллеги
В этом участке кода есть одна маленькая ошибка. Иногда это приводит к тому, что на некоторых кадрах теряется прозрачность.
Я заменил на вот такое :
GIF_DISPOSAL_BACKGROUND: begin LFrame.FDisbitmap.Clear(LLocalPalette[LGraphicsCtrlExt.ColorIndex].Color); MergeBitmap(tmp, LFrame.FDisbitmap, Bounds(0, 0, LFrameWidth, LFrameHeight), LFrame.FPos.x, LFrame.FPos.Y); end;
-
Tumaso получил реакцию от d7d1cd в Доступ к COM порту
У WinSoft (http://www.winsoft.sk) есть компоненты для работы с com-портами в андроиде. Либа платная, тем не менее вашу задачу решает.
-
Tumaso отреагировална krapotkin в Странное поведение переменной integer
я тут соглашусь со Станиславским. не верю )
дайте код
High - это ИНДЕКС последнего элемента массива
если в массиве 1 элемент, то индекс его равен 0
-
Tumaso получил реакцию от Олег Киреев в Приложение для упорядоченного хранения любой информации в виде jpg, docx, pdf, rar файлов,просто текст который можно отправить в Word отображающейся в дереве v.9.0
gelo1
Вот если честно, над интерфейсом вам нужно усиленно поработать в плане редизайна. Кнопки управления расположены неудачно, цветовая тема лично меня напрягает, не используется вся доступная область на экране.
-
Tumaso получил реакцию от Ingalime в [Android] Есть ли разница под каким SDK собрано приложение
Абсолютно неправильное понимание.
Гугл анализирует minSdkVersion и targetSdkVersion не для того, чтобы запрещать публикацию apk в google play, а для того, чтобы:
1. ограничить установку apk на устройства с sdk, меньшей чем minSdkVersion - т.е. если например minSdkVersion="18", то на Android ниже 4.3 гугл плей не даст установить
2. использовать на устройстве sdk наиболее приближенной к targetSdkVersion (но не превышая) - т.е. если например targetSdkVersion="23", то на Android 4.3 будет использовать sdk 18, на android 8.1 - sdk 23
-
Tumaso отреагировална Равиль Зарипов (ZuBy) в Что невозможно сделать на Delphi для Android?
С++ ваше всё, наше всё Делфи
-
Tumaso получил реакцию от МихаилЪ чайковЪ в RAD Studio 10.2.3 Когда и чего ждать?
Может поувольнять нахрен всех индусов и отдать разработку в Россию? ))
-
Tumaso получил реакцию от DMS в Куча асинхронных потоков (Андроид)
Асинхронность работает надежно даже в андроид
Вопрос в другом - каким образом вы будете непосредственно заполнять комбобоксы загруженными списками. тут либо с использованием synchronize либо через внутренние списки в потоках (откуда главный поток по готовности сам заполняет комбобоксы)
-
Tumaso получил реакцию от krapotkin в Заполнение анкеты (под Андроидом)
Определяй, не перекрывается ли активный TEdit клавиатурой. Если перекрывается, то смещай все едиты вверх, чтобы было видно, в какое поле и что вводишь.
Я бы разместил все TEdit например на TRectangle, ловил событие FormVirtualKeyboardShown, определял размеры перекрываемой области и в случае необходимости двигал TRectangle. А на событие FormVirtualKeyboardHidden возвращал бы все назад.
Тут только есть нюанс - FormVirtualKeyboardShown не всегда вызывается с правильными размерами (Эмбе над этим еще видимо долго работать))) ), поэтому нужно отдельно хранить правильное значение размеров клавиатуры (оно возвращается при первом вызове FormVirtualKeyboardShown)
-
Tumaso получил реакцию от DMS в Заполнение анкеты (под Андроидом)
Определяй, не перекрывается ли активный TEdit клавиатурой. Если перекрывается, то смещай все едиты вверх, чтобы было видно, в какое поле и что вводишь.
Я бы разместил все TEdit например на TRectangle, ловил событие FormVirtualKeyboardShown, определял размеры перекрываемой области и в случае необходимости двигал TRectangle. А на событие FormVirtualKeyboardHidden возвращал бы все назад.
Тут только есть нюанс - FormVirtualKeyboardShown не всегда вызывается с правильными размерами (Эмбе над этим еще видимо долго работать))) ), поэтому нужно отдельно хранить правильное значение размеров клавиатуры (оно возвращается при первом вызове FormVirtualKeyboardShown)
-
-
Tumaso отреагировална ENERGY в Как нарисовать круглый TImage
С помощью маски можно любую форму.TBitmap.CreateFromBitmapAndMask().
В результате получим изображение с прозрачностью, в данном случае звезда и прозрачный фон.
procedure TForm1.Button1Click(Sender: TObject); var ImageRes: TResourceStream; Result: TBitmap; tmpMS : TMemoryStream; begin ImageRes := TResourceStream.Create(HInstance, 'IMAGE', RT_RCDATA); try Image1.Bitmap.CreateFromStream(ImageRes); Image2.Bitmap.LoadFromFile('c:\temp\MaskedBitmap\Images\Mask.png'); Result := TBitmap.Create; Result.CreateFromBitmapAndMask(Image1.Bitmap, Image2.Bitmap); // applying alpha channel to Bitmap - workaround. If you can improve write here how tmpMS := TMemoryStream.Create; Result.SaveToStream(tmpMS); Result.LoadFromStream(tmpMS); tmpMS.Free; Image3.Bitmap.Assign(Result); finally ImageRes.Free; Result.Free; end; end;
MaskedBitmap.zip
-
Tumaso получил реакцию от Rusland в Управление окном заставки
Изменить главную форму можно простым Application.MainForm := fmMain;
-
-
Tumaso получил реакцию от Brovin Yaroslav в Разочирование
Код также пишешь, как пишешь на русском языке?
-
Tumaso получил реакцию от МихаилЪ чайковЪ в Нужен нормальный JSON парсер
А меня System.JSON полностью устраивает. Ошибок парсинга валидных данных не было ни разу, скорость на нормальном уровне. Гигабайтные данные правда не парсирую, но мне это и не нужно
-
Tumaso получил реакцию от DMS в Асинхронный NetHTTPClient
DMS,
простейший пример (без обработки эксепшенов) отдельного класса на базе TThread:
В основном потоке создаешь нужное количество экземпляров (можно начать с одного), запускаешь, потом при необходимостии передаешь команду на выполнение/получаешь ответ выполненной команды. например так (простейший пример):
LThread := TAsyncHttp.Create;
LThread.Start;
LThread.Command := 'http://www.site.com/data?param=value';
while not LThread.IsReady do
Sleep(1);
-
Tumaso получил реакцию от DMS в Асинхронный NetHTTPClient
да, согласен
именно так, только замените TNetHTTPClient на THTTPClient
-
Tumaso отреагировална Andrey Efimov в Запрос "опасных" разрешений в рантайме
Добавляем метод onRequestPermissionsResult в приложение
-
Tumaso получил реакцию от Виталий Иванов в Нужен нормальный JSON парсер
А меня System.JSON полностью устраивает. Ошибок парсинга валидных данных не было ни разу, скорость на нормальном уровне. Гигабайтные данные правда не парсирую, но мне это и не нужно
-
Tumaso получил реакцию от rareMax в Нужен нормальный JSON парсер
А меня System.JSON полностью устраивает. Ошибок парсинга валидных данных не было ни разу, скорость на нормальном уровне. Гигабайтные данные правда не парсирую, но мне это и не нужно