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

Активность

Лента обновляется автоматически

  1. Вчера
  2. Последняя неделя
  3. Немного доработал: //Загружает картинку 16х16 vImage.Bitmap.LoadFromStream(img1); //Ширина ячейки Grid1.ColumnByIndex(1).Width:=20; //Целевая область изображения, иначе картинка рисуется в размер ячейки Bounds.Width:=16; Bounds.Height:=16; Canvas.BeginScene; Canvas.DrawBitmap(vImage.Bitmap, vImage.Bitmap.Bounds, Bounds, 1, True); Canvas.EndScene;
  4. А что не так? Смотрим определение функции function ReadString(const Section, Ident, Default: string): string; override; Смотрим где определяется константа HKEY_LOCAL_MACHINE, она определена в файле Winapi.Windows.
  5. вво втором Варианте указывает на строчку Win.ReadString('windows','run', 0); выдает ошибку [dcc32 Error] reger.pas(35): E2010 Incompatible types: 'string' and 'Integer' а второй вариант указывает на строчку: reg.RootKey := HKEY_LOCAL_MACHINE; и выдаёт ошибку [dcc32 Error] reger.pas(37): E2003 Undeclared identifier: 'HKEY_LOCAL_MACHINE' [dcc32 Fatal Error] Regerregistrori.dpr(6): F2063 Could not compile used unit 'reger.pas'
  6. Добрый день! Создаю программу (Firemonkey Delphi). Для программы, не обходим автозапуск им занялся в первую очередь. В процессе работы появилось два варианта: 1-й вариант: unit reger; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, Registry,inifiles; type TForm1 = class(TForm) CornerButton1: TCornerButton; procedure CornerButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; reg: tregistry; S:string; S1:ansistring; Win:TIniFile; implementation {$R *.fmx} procedure TForm1.CornerButton1Click(Sender: TObject); begin reg := TRegistry.Create; reg.RootKey := HKEY_LOCAL_MACHINE; reg.LazyWrite := false; reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',false); reg.WriteString('My App', ExtractFilePath(ParamStr(0))+'Regerregistrori.exe'); reg.CloseKey; reg.free; end; end. Второй вариант unit reger; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, Registry,inifiles; type TForm1 = class(TForm) CornerButton1: TCornerButton; procedure CornerButton1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; reg: tregistry; S:string; S1:ansistring; Win:TIniFile; implementation {$R *.fmx} procedure TForm1.CornerButton1Click(Sender: TObject); begin Win:=TIniFile.Create('Win.ini'); Win.ReadString('windows','run', 0); Win.WriteString('windows', 'run',ExtractFilePath(ParamStr(0))+'Regerregistrori.exe'); Win.Free; end; end.
  7. Подскажите, пожалуйста, решение проблем при вставке картинки из blob-поля в grid (в программе с Vcl все делал EhLib): 1. Картинка 16х16 сжимается (см рисунок) и приходится добавлять костыль Grid1.ColumnByIndex(1).Width:=24 (если 16, то все равно картинка сужена). 2. Если картинка с прозрачным фоном, то виден текст из поля базы данных (видимо нужно вначале как-то залить ячейку). ------------------ procedure TPntdata.Grid1DrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); var img1: TMemoryStream; vImage: Timage; begin //Столбец Grid, куда помещаем рисунок, связан (Bind Visually) с полем type1 (текстовый тип с идентификацией данных: advice, chemistry, blood...) основной таблицы fdata if (Column.Index=1) then begin Grid1.ColumnByIndex(1).Width:=24; //Иначе картинка 16х16 сжимается? img1:=TMemoryStream.Create; vImage := TImage.Create(nil); //картинки подгружаются из BLOB-полей другой таблицы fileimages по совпадению полей type1 DataModule3.FDQuery4.Open('select * from fileimages where type1='+QuotedStr(Value.ToString)); img1.CopyFrom(DataModule3.FDQuery4.CreateBlobStream(DataModule3.FDQuery4.FieldByName('img'), bmRead), 0); vImage.Bitmap.LoadFromStream(img1); Canvas.DrawBitmap(vImage.Bitmap, vImage.Bitmap.Bounds, Bounds, 1); img1:=nil; vImage:=nil; end;
  8. Ещё раньше
  9. Скачал демо от winsoft - результат то же( P.S. Камера смартфона считывает
  10. Тогда я бы на вашем месте интегрировал ml kit https://developers.google.com/ml-kit/vision/barcode-scanning/android?hl=ru#java Или есть платный уже готовый от winsoft
  11. увы. Ответ разработчиков Probably not. If I check the image with Zxing online ZXing Decoder Online <https://zxing.org/w/decode.jspx> then it also does not work. The matrix scanner scans only the center of the image.
  12. Напишите разработчику и отправьте ему пример, вообще в версии 3.9.8 исправляли datamatrix.
  13. Я не видел к сожалению.:( Возможно, плохо искал.
  14. разве в демках файрмонки не было прозрачности?
  15. крупные системы так и остались на делфи. просто акценты сместились на веб и смартфоны. а где хорошо платят туда и идут. через лет 5-10 может вообще отмереть профессия программист так как какой ни будь ИИ сможет эту работу делать лучше и быстрее. И если это направление начнет развиваться и дальше то писать ПО уже не будут а будут заказывать под свои нужды у этих корпораций. А ИИ сам все сделает причем в кратчайшие сроки.
  16. Если кто интересуется прямым OpenGL и другими крутыми графическими примерами под FMX, то я пересобрал и перекомпилировал для RAD Studio 12.1 основные избранные примеры японской компьютерной графики Luxophia. Оригинальным кодом пользоваться нереально затруднительно - там наворочено и запутано так, что создаётся впечатление, что это сделано специально. Автор и его команда наваяли массу классов с иерархией, но решили обойтись вообще без каких-то своих визуальных компонентов. Да и для каждого проекта они включают каждый раз сотню файлов своей библиотеки или выборочные юниты снова в директорию проекта. Короче, я свалил все либы Luxophia с исходниками в одну папку _LIBRARY и установил всего один путь поиска в проектах. Так всё работает, за малым исключением. Репозиторий с исходниками проектов я выложил на российской платформе СберТеха по адресу glscene/Luxophia: Избранные FMX приложения от @luxidea https://github.com/LUXOPHIA | Gitverse . Необходимо теперь сделать импорт моделей glTF/glb, приглашаются желающие приложить свои силы для использования анимированных 3д моделей этого формата в FMX программах. После включения SciaforDelphi в последней версии студии FMX графика стала работать быстрее, ходят слухи, что в несколько раз.
  17. uses Androidapi.JNI.Google.Android.Gms.Common, Androidapi.JNI.Google.Android.Gms.Location, Androidapi.JNI.Google.Android.Gms.Tasks, встреваем уже с первых строк
  18. Прошу прощения за назойливость, но... как Вы этот процесс реализовали в Делфях?
  19. Ну это к Гуглу вопросы, у меня в приложении работает, как у вас на скрине. Смысл такой вы создаёте запрос на определенный вид геолокации для вашего приложения в ответ получаете задачу для задачи определяете слушатель отсутствия геолокации. В слушателе обрабатываете "исключение" и если доступа нет, то запускаете действие с ответом. И обрабатываете ответ, нажал ли пользователь "ок" или нажал "нет, спасибо".(Пример как в delphi startActivityWithResult)
  20. Ох, госпаде... А чего так много букофф получилось? И как это вообще работает?
  21. Плюс нужно подключить необходимые библиотеки и соответственно нужно описать недостающие интерфейсы java
  22. var LLocationRequest := TJLocationRequest_Builder.JavaClass.init(300) //.setDurationMillis(durationMillis: Int64) - Sets the duration of this request. - The default value is Long.MAX_VALUE. //.setGranularity(granularity: Integer) - Sets the Granularity of locations returned for this request. - The default value is Granularity.GRANULARITY_PERMISSION_LEVEL. .setIntervalMillis(300) //- Sets the desired interval of location updates. .setMaxUpdateAgeMillis(0) //- Sets the maximum age of an initial historical location delivered for this request. - The default value is IMPLICIT_MAX_UPDATE_AGE. //.setMaxUpdateDelayMillis(maxUpdateDelayMillis: Int64) - Sets the longest a location update may be delayed. - The default value is 0. //.setMaxUpdates(maxUpdates: Integer) - Sets the maximum number of updates delivered to this request. - The default value is Integer.MAX_VALUE. // .setMinUpdateDistanceMeters(0) // - Sets the maximum number of updates delivered to this request. - The default value is 0. .setMinUpdateIntervalMillis(100)// - Sets the fastest allowed interval of location updates. - The default value is IMPLICIT_MIN_UPDATE_INTERVAL .setPriority(TJPriority.JavaClass.PRIORITY_HIGH_ACCURACY) // - Sets the Priority of the location request. - The default value is Priority.PRIORITY_BALANCED_POWER_ACCURACY. .setWaitForAccurateLocation(false)// - If set to true and this request is Priority.PRIORITY_HIGH_ACCURACY, this will delay delivery of initial low accuracy locations for a small amount of time in case a high accuracy location can be delivered instead. - The default value is true. .build(); var LLocationSettingsRequest := TJLocationSettingsRequest_Builder.JavaClass.init .addLocationRequest(LLocationRequest) .setAlwaysShow(true) .build(); FMessageSubscriptionID := TMessageManager.DefaultManager.SubscribeToMessage( TMessageResultNotification, HandleActivityMessage); MyOnFailureListener := TMyOnFailureListener.Create(Form1); MyOnFailureListener.onFailured := onFailureLocation; locTask := TJLocationServices.JavaClass.getSettingsClient(TAndroidHelper.Activity).checkLocationSettings(LLocationSettingsRequest); locTask.addOnFailureListener(MyOnFailureListener); procedure TForm1.onFailureLocation(e: JException); var resolve: JResolvableApiException; begin resolve := TJResolvableApiException.Wrap((e as ILocalObject).GetObjectID); if resolve <> nil then resolve.startResolutionForResult(TAndroidHelper.Activity, 953798); end; procedure TForm1.HandleActivityMessage(const Sender: TObject; const M: TMessage); begin LogCAAdd('HandleActivityMessage'); if M is TMessageResultNotification then OnActivityResult(TMessageResultNotification(M).RequestCode, TMessageResultNotification(M).ResultCode, TMessageResultNotification(M).Value); LogCAAdd('HandleActivityMessage ok'); end; function TForm1.OnActivityResult(RequestCode, ResultCode: Integer; Data: JIntent): Boolean; begin if RequestCode = 953798 then begin if ResultCode = TJActivity.JavaClass.RESULT_OK then begin LogCAAdd('isHardwareLocationEnabled RESULT_OK'); end else if ResultCode = TJActivity.JavaClass.RESULT_CANCELED then begin LogCAAdd('isHardwareLocationEnabled RESULT_CANCELED'); end; end; end; TOnFailureListenerEvent = procedure(e: JException) of object; TMyOnFailureListener = class(TJavaLocal, JOnFailureListener) private [weak] FParent : TForm1; FOnFailureListenerEvent: TOnFailureListenerEvent; public constructor Create(AParent : TForm1); Destructor Destroy; Override; procedure onFailure(e: JException); cdecl; property onFailured: TOnFailureListenerEvent read FOnFailureListenerEvent write FOnFailureListenerEvent; end;
  23. А как это сделать автоматически? В данном скрине нажимаешь ОК и вуаля, работает... GoogleMaps работают по такому же принципу. Вот код на Котлине, возможно ли его транслировать на Delphi? googleApiClient = GoogleApiClient.Builder(context!!) .addApi(LocationServices.API).build() googleApiClient!!.connect() locationRequest = LocationRequest.create() locationRequest!!.priority = LocationRequest.PRIORITY_HIGH_ACCURACY locationRequest!!.interval = 30 * 1000.toLong() locationRequest!!.fastestInterval = 5 * 1000.toLong() val builder = LocationSettingsRequest.Builder() .addLocationRequest(locationRequest!!) builder.setAlwaysShow(true) result = LocationServices.SettingsApi.checkLocationSettings(googleApiClient, builder.build()) result!!.setResultCallback { result -> val status: Status = result.status when (status.statusCode) { LocationSettingsStatusCodes.SUCCESS -> { // Do something } LocationSettingsStatusCodes.RESOLUTION_REQUIRED -> try { startResolutionForResult(), status.startResolutionForResult( activity, REQUEST_LOCATION ) } catch (e: SendIntentException) { } LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE -> { // Do something } } }
  24. //================ Open GPS Setting procedure OpenGPSSettings; // uses Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers, Androidapi.JNI.Provider; {$IFDEF ANDROID} var Intent: JIntent; {$ENDIF} begin {$IFDEF ANDROID} Intent := TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_LOCATION_SOURCE_SETTINGS); TAndroidHelper.Activity.startActivity(Intent); {$ENDIF} end; //==================================
  1. Загрузить ещё активность
×
×
  • Создать...