With Delphi , to the Seattle version , when you scale a bitmap image to enlarge using the command “Canvas.DrawBitmap(OiginalBitmap, RectF(0, 0, OiginalBitmap.Width, OiginalBitmap.Height), RectF(0, 0, Width, Height), 1, False);” the interpolation cant be disabled. A way to eliminate the problem is to manually scale the bitmap directly creating an image pixel by pixel .…
Leggi tutto
Con Delphi 10Seattle si possono creare in modo semplice delle bellissime applicazioni per Mac OSX e iOS, sarò di parte ma L’IDE di Delphi ora è veramente eccezzionale; Per prima cosa è necessario configurare l’ambiente di sviluppo, installando tutto il necessario come ben documentato da Embarcadero. Una volta che il vostro ambiente è ben funzionante,…
Leggi tutto
Here is a sample code (function) to get the current language (locale) in Delphi 10Seattle. This simple procedure return the locale language for Windows, Mac and Android.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
function GetOSLangID: String; {$IFDEF MACOS} var Languages: NSArray; begin Languages := TNSLocale.OCClass.preferredLanguages; Result := TNSString.Wrap(Languages.objectAtIndex(0)).UTF8String; {$ENDIF} {$IFDEF ANDROID} var LocServ: IFMXLocaleService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXLocaleService, IInterface(LocServ)) then Result := LocServ.GetCurrentLangID; {$ENDIF} {$IFDEF MSWINDOWS} var buffer: MarshaledString; UserLCID: LCID; BufLen: Integer; begin // defaults UserLCID := GetUserDefaultLCID; BufLen := GetLocaleInfo(UserLCID, LOCALE_SISO639LANGNAME, nil, 0); buffer := StrAlloc(BufLen); if GetLocaleInfo(UserLCID, LOCALE_SISO639LANGNAME, buffer, BufLen) <> 0 then Result := buffer else Result := 'en'; StrDispose(buffer); {$ENDIF} end; { code } //See more at: http://codeverge.com/embarcadero.delphi.firemonkey/detect-current-language-on-andr/2001235#sthash.zjLIi2KY.dpuf |
l’applicazione è disponibile sullo store di google all’indirizzo : https://play.google.com/store/apps/details?id=com.Digifort.MobileClient
1 2 3 4 |
{$IFDEF ANDROID},Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android, IdURI, Androidapi.JNI.JavaTypes, Androidapi.Jni.Net, Androidapi.JNIBridge {$ENDIF}; |
The Java TimeInMills is similar to UnixTime but is in Millisenconds, so to convert it :
1 |
JavaTimeinMills := DateUtils.DateTimeToUnix(now) * 1000; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
procedure TfrmTimeDetail.btnShareClick(Sender: TObject); {$IFDEF ANDROID} var Intent: JIntent; CalendarIni: JCalendar; Uri : string; begin Uri := 'content://com.android.calendar/events'; Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_EDIT, TJnet_Uri.JavaClass.parse(StringToJString(TIdURI.URLEncode(uri)))); //Intent.setType(StringToJString('vnd.android.cursor.item/event')); intent.putExtra(StringToJString('beginTime'), DateTimeToUnix( (clDay.Date + teTimeDal.Time)) * 1000 ); intent.putExtra(StringToJString('allDay'), false); intent.putExtra(StringToJString('rrule'), StringToJString('FREQ=YEARLY')); intent.putExtra(StringToJString('endTime'), DateTimeToUnix( (clDay.Date + teTimeAl.Time)) * 1000 ); intent.putExtra(StringToJString('title'), StringToJString(edCommessa.Text)); intent.putExtra(StringToJString('description'), StringToJString(Memo1.Text)); SharedActivity.startActivity(Intent); end; |
The IMEI code is an unique number like the MAC Adrress for the lan on mobile devices… so in this example i have only putted a TButton on the form and wrote this piece of code that i found on the net:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
uses System.IOUtils,IdGlobalProtocols {$IFDEF ANDROID} ,FMX.Helpers.Android, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Net, Androidapi.JNI.JavaTypes, idUri,Androidapi.IOUtils {$ENDIF ANDROID} {$IFDEF MSWINDOWS }, WinAPI.ShellApi, WinAPI.Windows {$ENDIF} {$IFDEF ANDROID} ,Androidapi.JNI.Telephony, Androidapi.JNI.Provider, Androidapi.JNIBridge, Androidapi.Jni, Androidapi.JNI.Dalvik {$ENDIF ANDROID}; procedure TfrmMain.Button1Click(Sender: TObject); var {$IFDEF ANDROID} obj: JObject; tm: JTelephonyManager; {$ENDIF} identifier: String; begin {$IFDEF ANDROID} obj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); if obj <> nil then begin tm := TJTelephonyManager.Wrap( (obj as ILocalObject).GetObjectID ); if tm <> nil then identifier := JStringToString(tm.getDeviceId); end; if identifier = '' then identifier := JStringToString(TJSettings_Secure.JavaClass.getString(SharedActivity.getContentResolver,TJSettings_Secure.JavaClass.ANDROID_ID)); {$ENDIF ANDROID} ShowMessage(identifier); end; |