-
Постов
1 204 -
Зарегистрирован
-
Посещение
-
Победитель дней
26
Активность репутации
-
Rusland отреагировална Кривяков Виталий в Как открыть PDF в стандартном приложении просмотра PDF файлов?
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; Приблизительно так...
-
Rusland отреагировална OnePeople в DirectShow9
Перерыв интернет так толкого ничего и не нашел пришлось читать майкрософта, может кому пригодиться:
Кол-во аудиодорожек и применение:
-
Rusland получил реакцию от Kitty в MemoryStream -> JPEG -> BMP
Вроде в TBitmap можно сразу грузить и bmp и jpg и png
Грузить через Bitmap.LoadFromStream
-
Rusland отреагировална Pax Beach в Работа с видео от IP Камеры
Это самый известный мне пример.
Как это работает на телефонах.
-
Rusland отреагировална chaplin.u@gmail.com в баг в компоненте TBluetoothLE
В Андроиде функции есть : https://developer.android.com/reference/android/bluetooth/BluetoothGatt.html#requestMtu(int)
Нет её реализации в компоненте.
-
Rusland отреагировална chaplin.u@gmail.com в баг в компоненте TBluetoothLE
докопался до истины и она посредине.
стандартно обмен идёт по минимуму - 20 байт
но есть процесс переговоров (NEGOTIATION ) между телефоном и устройством который может привести к увеличению пакета до 525 байт.
апликация должна запросить устройство на увеличение пакета. так вот несмотря на то что в файле этот параметр как видите есть в поставляемой от Абракадабры компоненте нет реализации этого процесса.
как и полностью отсутствует обмен паролем для защиты от постороннего вмешательства. т.е. любой посторонний может получить полный контроль над вашим устройством.
Вывод : компонента поставляется в ознакомительных целях и для создания коммерческих приложений запрещена !
Ну и если кто знает где есть нормальная компонента - просьба сообщить.
-
Rusland отреагировална RoschinSpb в Canvas и FillText в StringGrid'е - разворот времени
Я думаю самый оптимальный вариант это просто использовать событие OnDrawColumnBackground при этом надо включить AlternatingRowBackground в Options. И не забудьте задать стиль кисти Canvas.Fill.Kind := TBrushKind.Solid;
-
Rusland получил реакцию от Brovin Yaroslav в MemoryStream -> JPEG -> BMP
Вроде в TBitmap можно сразу грузить и bmp и jpg и png
Грузить через Bitmap.LoadFromStream
-
Rusland получил реакцию от Kitty в WaterEffect FMX
На Berlin нормально установился этот компонент... только почему-то не вижу его на палитре. А что он делает?
Есть стандартный компонент TWaterTransitionEffect - случайно делает не тоже самое? (для примера наложите этот эффект на TText)
-
Rusland получил реакцию от beegl в WaterEffect FMX
На Berlin нормально установился этот компонент... только почему-то не вижу его на палитре. А что он делает?
Есть стандартный компонент TWaterTransitionEffect - случайно делает не тоже самое? (для примера наложите этот эффект на TText)
-
Rusland отреагировална kami в Нестандартная клавиатура для своего приложения
Господа, спасибо за участие в обсуждении!
Принимая во внимание кучу параметров, я "заморочился" на написание собственной клавиатуры. Проанализировав и продебажив кучу кода FMX, удалось подменить стандартную клавиатуру собственной.
На текущий момент концепт готов и работает, но обладает одним недостатком - из-за особенностей работы процедуры RegisterShowVKProc стандартный вызов клавиатуры теряется без возможности восстановления.
Посему - я буду реализовывать нужные мне виды + повторять стандартные Ru и Eng, возможно - с некоторыми изменениями.
Концепт предназначен для работы только под iOS.
Использование: подключаете к проекту модуль из архива... и всё. Кастомная клавиатура теперь будет показываться вместо стандартной во всех контролах, в которых вообще показывается клавиатура.
Известные недостатки:
1. Нет анимации появления/скрытия.
2. Не реализовано нажатие кнопки Return (пока не думал, как это делается)
3. Не реагирует на флаги TVirtualKeyboardStates
4. Не уверен в корректном удалении фрейма при завершении приложения.
5. Нет тулбара (не уверен, правда, что он нужен в собственной клавиатуре)
Если необходимо - готов дать пояснения по коду.
Ввиду того, что я только начинаю работать с FMX, любая критика приветствуется!
iOSCustomKeyboard.zip
-
Rusland отреагировална Akromd в Торможение при длитоельном использовании
Немного пояснения: требовалось анимировать объект Tpath (не путать с TpathAnimation!) - то есть анимировать отрисовку "сложных" объектов через SVG.
За отрисовку объектов отвечает свойство data.data, которое в виде строки хранит SVG код.
Первое мое решение как раз и было связано с постепенным изменением этого свойства, для плавного отображения, но я столкнулся с проблемой "быстрых" тормозов, собственно из-за чего и возникла эта тема.
Немного подумав, оказалось, что из постоянного дополнения этого свойства (data.data), оно очень быстро "переполнялось" и отрисовка занимала очень длительное время. Поэтому было решено использовать другой метод: вместо того чтобы постепенно изменять это свойство, мы создаем новый объект типа Tline и изменяя его размер как будто рисуем постепенно новую линию, а в конце уничтожаем ее, заменяя начало и конец добавлением в то самое свойство data.data тем самым экономя и память, и размер свойства.
Опять же, почему не использовать более простые методы? Во-первых требуется чтобы эта анимация могла происходит параллельно действиям всей программы. Во-вторых, таких анимаций одновременно может происходит довольно много.
Если кому интересно, выложу исходники
-
Rusland отреагировална Andrey Efimov в Событие при входящем звонке
Исходники - это файлы из корневой папки проекта, без подпапок, в которых собирается проект. Т.е. папка Android не нужна.
Далее, по коду.
Где у вас это?:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if Assigned(BroadcastReceiver) then BroadcastReceiver.Free; end; procedure TForm1.FormCreate(Sender: TObject); begin CreateBroadcastReceiver; end; Далее, на вибрацию нужно выставить пермишен "Vibrate" (на днях выложу на свой гитхаб, класс, упрощающий работу с вибрацией)
Менять местами код в регистрации ресейвера, смысла нет, делайте так как и было.
incomingCallNumber - вообще не понял, что это, где код, в котором вы заносите в эту переменную номер?
По поводу глобальных переменных -это уже придирка, но лучше пишите их в классе, как поля.
Вот в этом коде:
if incomingCallNumber = 'номер телефона' then VibratorObj := SharedActivity.getSystemService(TJActivity.JavaClass.VIBRATOR_SERVICE); Vibrator := TJVibrator.Wrap((VibratorObj as ILocalObject).GetObjectID); Vibrator.vibrate(10); словите ошибку, возможно AV, если звонок будет просто с другого номера.
Пока вроде всё, что бросилось в глаза, но уже ночь и мог что-то не углядеть. Правьте и пробуйте.
Ваш архив перезалил, номер потёр.
Итог: Плохо копируете код.
Мой совет: Если не знаете, что делаете или просто не охото изучить представленные примеры, то лучше обратитесь в раздел Ищу подрядчика. Или можете попробовать помучить ещё форумчан, хотя вам дали примеры с избытком...
-
Rusland отреагировална Равиль Зарипов (ZuBy) в [Обзор] #3 ModernListView - динамическая подгрузка контента
Ссылка: http://blog.rzaripov.kz/2016/12/3-modernlistview.html
Автор: Зарипов Равиль @ZuBy
Описание: Реализация динамической подгрузки контента:
Бесконечный скроллинг (например как лента в ВК) Паджинация/Пагинация (постраничная загрузка) -
Rusland отреагировална rareMax в Чтение Exif и других метаданных из Jpeg изображений
Не знаю как насчет всех параметров - но ребята из эмбы хвастались на ютубе что можно с метаданными работать. Посмотрите видео - может с его помощью получится?
--------
Русска озвучка:
-
Rusland отреагировална kami в Сходка в Питере
Только не сильно поздний, а то мне мама не разрешает автобусы до меня ходят только до 23:00
-
-
-
-
Rusland отреагировална kami в Окно "Настройки"
Я бы сделал правую часть на фреймах.
А левая часть заполнялась бы автоматом наименованиями фреймов, которые зарегистрировались в окне настроек.
-
Rusland отреагировална Равиль Зарипов (ZuBy) в [Обзор] #2 ModernListView - режим мультивыделения
Ссылка: http://blog.rzaripov.kz/2016/11/2-modernlistview.html
Автор: Зарипов Равиль @ZuBy
Описание: Как сделать режим мультивыделения в TListView
-
Rusland отреагировална Равиль Зарипов (ZuBy) в TMapsEngine
использовать
//uses System.NetEncoding TNetEncoding.URL.Encode()
-
Rusland отреагировална aleksandrguru в TMapsEngine
Исправил на NetHTTPClient все работает на Delphi 10 Seattle и на Андроид 6.0.1
Maps.Engine.zip
-
Rusland отреагировална Равиль Зарипов (ZuBy) в Custom Font
для берлина
для сиетла
для того чтобы на IOS работать с кастомными шрифтами, это нужно прописать в info.plist.TemplateiOS.xml (для берлина)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <%VersionInfoPListKeys%> <%ExtraInfoPListKeys%> <key>UIAppFonts</key> <array> <string>FontAwesome.ttf</string> </array> <key>ITSAppUsesNonExemptEncryption</key><false/> </dict> </plist>
-
Rusland отреагировална Равиль Зарипов (ZuBy) в [Обзор] #1 ModernListView - горизонтальный режим
Ссылка: http://blog.rzaripov.kz/2016/11/1-modernlistview.html
Автор: Зарипов Равиль @ZuBy
Описание: Чуть подробней о горизонтальном режиме