{"id":963,"date":"2020-11-27T18:12:00","date_gmt":"2020-11-28T01:12:00","guid":{"rendered":"https:\/\/www.great-white-software.com\/blog\/?p=963"},"modified":"2020-11-24T09:35:38","modified_gmt":"2020-11-24T16:35:38","slug":"2020r2-desktop-changes","status":"publish","type":"post","link":"https:\/\/www.great-white-software.com\/blog\/2020\/11\/27\/2020r2-desktop-changes\/","title":{"rendered":"2020r2 desktop changes"},"content":{"rendered":"\n<p>Some changes wont be a big deal<br>If you happened to use the style REALbasic.function name then some of those will need fixing as they have moved from the REALbasic framework into different ones. IF you need to prefix things with the right namespace you&#8217;ll have to sort out which one it got moved to but its USUALLY one named the same as the data type. So if you used to write<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dim s As String \n\ns = REALbasic.Titlecase(someOtherStringVar) \/\/ or TitleCase(\"foo\")\ns  = someOtherStringVar.Titlecase \/\/ this form wont allow \"foo\".Titlecase<\/code><\/pre>\n\n\n\n<p>this will need to become<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dim s As String \n\ns = String.Titlecase(someOtherStringVar) \ns  = someOtherStringVar.Titlecase \/\/ this form still wont allow \"foo\".Titlecase<\/code><\/pre>\n\n\n\n<p><br>Some others may cause more work since the replacement isnt as capable <br>   ie\/ <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dim tinfo1 As Xojo.Introspection.TypeInfo = GetTypeInfo(Integer) \/\/ this works in versions up to 2020r2\nDim tinfo As Introspection.TypeInfo = GetTypeInfo( Integer ) \/\/ this does not work in 2020r2<\/code><\/pre>\n\n\n\n<p>Application <strong>Deprecated<\/strong> CurrentThread <br>    replace with Thread.Current<\/p>\n\n\n\n<p>Combobox <strong>Deprecated<\/strong> Value replace with Text <\/p>\n\n\n\n<p>DateTime<br>   <strong>added<\/strong> Public Function ToString(dateStyle As FormatStyles = FormatStyles.Medium, timeStyle As FormatStyles = FormatStyles.Medium) As String<br>   <strong>removed<\/strong> Public Function ToString(loc As Locale = Nil, dateStyle As FormatStyles = FormatStyles.Medium, timeStyle As FormatStyles = FormatStyles.Medium) As String<br>   <strong>added<\/strong> Public Function ToString(loc As Locale, dateStyle As FormatStyles = FormatStyles.Medium, timeStyle As FormatStyles = FormatStyles.Medium) As String<\/p>\n\n\n\n<p>DateTimePicker <strong>added<\/strong><\/p>\n\n\n\n<p>EndOfLine<br>    <strong>added<\/strong> property Android as string<br>    <strong>added<\/strong> Public Shared Property CR As String<br>   <strong>added<\/strong> Public Shared Property CRLF As String<br>   <strong>added<\/strong> Public Shared Property iOS As String<br>   <strong>added<\/strong> Public Shared Property LF As String<\/p>\n\n\n\n<p>Graphics<br>   <strong>added<\/strong> Public Property Brush As GraphicsBrush<br>   <strong>added<\/strong> Public Function LineDash() As Double()<br>   <strong>added<\/strong> Public Property LineCap As LineCapTypes<br>   <strong>added<\/strong> Public Enum LineCapTypes As Global.Integer<br>   <strong>added<\/strong> Public Property LineDashOffset As Double<br>   <strong>added<\/strong> Public Property LineJoin As LineJoinTypes<br>   <strong>added<\/strong> Public Enum LineJoinTypes As Integer<br>   <strong>added<\/strong> Public Property ShadowBrush As ShadowBrush<\/p>\n\n\n\n<p><strong>added<\/strong> Class GraphicsBrush<\/p>\n\n\n\n<p>Class HTTPSecureSocket <strong>Deprecated<\/strong> <br>   replace with URLConnection<\/p>\n\n\n\n<p>Class HTTPSocket <strong>Deprecated<\/strong> <br>   replace with URLConnection<\/p>\n\n\n\n<p>Label <br>    Text no longer marked <strong>Deprecated<\/strong><br>    Value <strong>Deprecated<\/strong> replace with Text<\/p>\n\n\n\n<p><strong>added<\/strong> Class LinearGradientBrush<\/p>\n\n\n\n<p>Listbox header height is now settable<\/p>\n\n\n\n<p>MenuItem <br>   Text no longer <strong>Deprecated<\/strong><br>   Value <strong>Deprecated<\/strong> replace with Text<\/p>\n\n\n\n<p>Movie<br>   <strong>Deprecated<\/strong> BaseMovieHeight replace with Height<br>   <strong>Deprecated<\/strong>) BaseMovieWidth replace with Width<br>   <strong>Deprecated<\/strong> Handle<br>   <strong>Deprecated<\/strong> MovieHeight <br>   <strong>Deprecated<\/strong> MovieWidth <br>   <strong>added<\/strong> Property Height As Integer<br>   <strong>added<\/strong> Property Width As Integer<\/p>\n\n\n\n<p>Picture <br>   <strong>added<\/strong> HandleType  iOSUIImage = 6<\/p>\n\n\n\n<p><strong>added<\/strong> Class PictureBrush<\/p>\n\n\n\n<p>PopupMenu <br>    <strong>Deprecated<\/strong> SelectedRowValue replace with SelectedRow<\/p>\n\n\n\n<p><strong>added<\/strong> Class RadialGradientBrush<\/p>\n\n\n\n<p>Module REALbasic<br>   <strong>removed<\/strong> Abs<br>   <strong>removed<\/strong> ACos<br>   <strong>removed<\/strong> ASin<br>   <strong>removed<\/strong> ATan<br>   <strong>removed<\/strong> ATan2<br>   <strong>removed<\/strong> CDbl<br>   <strong>removed<\/strong> Ceil<br>   <strong>removed<\/strong> Ceiling<br>   <strong>removed<\/strong> CLong<br>   <strong>removed<\/strong> ConvertEncoding<br>   <strong>removed<\/strong> Cos<br>   <strong>removed<\/strong> CountFields<br>   <strong>removed<\/strong> DecodeHex<br>   <strong>removed<\/strong> DefineEncoding<br>   <strong>removed<\/strong> EncodeHex<br>   <strong>removed<\/strong> Encoding<br>   <strong>removed<\/strong> Exp<br>   <strong>removed<\/strong> Floor<br>   <strong>removed<\/strong> InStr<br>   <strong>removed<\/strong> InStrB<br>   <strong>removed<\/strong> Left<br>   <strong>removed<\/strong> Log<br>   <strong>removed<\/strong> Lowercase<br>   <strong>removed<\/strong> Max<br>   <strong>removed<\/strong> Min<br>   <strong>removed<\/strong> NthField<br>   <strong>removed<\/strong> Pow<br>   <strong>removed<\/strong> Replace<br>   <strong>removed<\/strong> ReplaceAll<br>   <strong>removed<\/strong> Right<br>   <strong>removed<\/strong> Rnd<br>   <strong>removed<\/strong> Round<br>   <strong>removed<\/strong> Sign<br>   <strong>removed<\/strong> Sin<br>   <strong>removed<\/strong> Split<br>   <strong>removed<\/strong> Sqrt<br>   <strong>removed<\/strong> StrComp<br>   <strong>removed<\/strong> Tan<br>   <strong>removed<\/strong> Titlecase<br>   <strong>removed<\/strong> Trim<br>   <strong>removed<\/strong> Uppercase<br>   <strong>removed<\/strong> Val<br>   <strong>removed<\/strong> VarType<br><\/p>\n\n\n\n<p><strong>added<\/strong> Class SearchField<\/p>\n\n\n\n<p><strong>added<\/strong> Class ShadowBrush<\/p>\n\n\n\n<p>String module<br>   <strong><strong>added<\/strong><\/strong> CDbl(Extends str As String) As Double<br>   <strong>added<\/strong> Protected Function Chr(value As Integer) As String<br>   <strong>added<\/strong> Global Function CLong(Extends str As String) As Int64<br>   <strong>added<\/strong> Global Function ConvertEncoding(Extends text As String, newEncoding As TextEncoding) As String<br>   <strong>added<\/strong> Global Function CountFields(Extends aString As String, separator As String) As Integer<br>   <strong>added<\/strong> Global Function DefineEncoding(Extends text As String, encoding As TextEncoding) As String<br>   <strong>added<\/strong> Global Function Encoding(Extends Str As String) As TextEncoding<br>   <strong>added<\/strong> Global Function InStr(Extends source As String, start As Integer = 0, find As String) As Integer<br><strong>added<\/strong> Global Function InStrB(Extends source As String, start As Integer = 0, find As String) As Integer<br><strong>added<\/strong>Global Function Left(Extends str As String, count As Integer) As String<br><strong>added<\/strong> Global Function Lowercase(Extends Str As String) As String<br><strong>added<\/strong> Global Function NthField(Extends aString As String, separator As String, index As Integer) As String<br><strong>added<\/strong> Global Function Replace(Extends sourceString As String, substring As String, replacementString As String) As String<br><strong>added<\/strong> Global Function ReplaceAll(Extends sourceString As String, substring As String, replacementString As String) As String<br><strong>added<\/strong> Global Function Right(Extends str As String, count As Integer) As String<br><strong>added<\/strong> Global Function Split(Extends source As String, delimiter As String = &#8221; &#8220;) As String()<br><strong>added<\/strong> Global Function StrComp(a As String, b As String, compareMode As Integer) As Integer<br><strong>added<\/strong> Global Function Titlecase(Extends Str As String) As String<br><strong>added<\/strong> Global Function Trim(Extends s As String) As String<br><strong>added<\/strong> Global Function Uppercase(Extends Str As String) As String<br><strong>added<\/strong> Global Function Val(Extends str As String) As Double<\/p>\n\n\n\n<p>Class TextArea <br>   <strong>Deprecated<\/strong> Value replace with Text<\/p>\n\n\n\n<p>Class TextEdit<br>   <strong>Deprecated<\/strong> Value replace with Text<br><\/p>\n\n\n\n<p>Class TextField <br>   <strong>Deprecated<\/strong> Value replace with Text<\/p>\n\n\n\n<p>Class Thread<br><strong>added<\/strong> Public Shared Property Current As Thread<br><strong>added<\/strong> Public Property CurrentThread As Thread<br><strong>added<\/strong> Public Property CurrentThread1 As Thread<br><strong>added<\/strong> Public Shared Sub SleepCurrent(milliseconds As Integer)<br><strong>added<\/strong> Public Shared Sub YieldToNext()<br><\/p>\n\n\n\n<p><strong>added<\/strong> Class Worker<\/p>\n\n\n\n<p>           Module Xojo.Core.<br>                 <strong>Deprecated<\/strong> Xojo.Core.Date replace with DateTime<br>                 <strong>Deprecated<\/strong> Xojo.Core.DateIntervalreplace with DateInterval<br>                 <strong>Deprecated<\/strong> Xojo.Core.Dictionaryreplace with Dictionary<br>                 <strong>Deprecated<\/strong> Xojo.Core.DictionaryEntryreplace with DictionaryEntry<br>                 <strong>Deprecated<\/strong> Xojo.Core.Localereplace with Locale<br>                 <strong>Deprecated<\/strong> Xojo.Core.MemoryBlockreplace with MemoryBlock<br>                 <strong>Deprecated<\/strong> Xojo.Core.MutableMemoryBlock replace with MemoryBlock<br>                 <strong>Deprecated<\/strong> Xojo.Core.Pointreplace with Point<br>                 <strong>Deprecated<\/strong> Xojo.Core.Rectreplace with Rect<br>                 <strong>Deprecated<\/strong> Xojo.Core.Sizereplace with Size<br>                 <strong>Deprecated<\/strong> Xojo.Core.Timerreplace with Timer<br>                 <strong>Deprecated<\/strong> Xojo.Core.TimeZonereplace with TimeZone<br>                 <strong>Deprecated<\/strong> Xojo.Core.WeakRefreplace with WeakRef<br><br>         &nbsp; Module Xojo.Data<br>                 <strong>Deprecated<\/strong> Xojo.Core.InvalidJSONException replace with InvalidJSONException<\/p>\n\n\n\n<p>Module Xojo.Introspection<br>   <strong>Deprecated<\/strong> Xojo.Introspection.AttributeInfo replace with AttributeInfo<br>   <strong>Deprecated<\/strong> Xojo.Introspection.ConstructorInfo replace with ConstructorInfo<br>   <strong>Deprecated<\/strong> Xojo.Introspection.MemberInfo replace with MemberInfo<br>   <strong>Deprecated<\/strong> Xojo.Introspection.MethodInfo replace with MethodInfo<br>   <strong>Deprecated<\/strong> Xojo.Introspection.ParameterInfo replace withParameterInfo<br>   <strong>Deprecated<\/strong> Xojo.Introspection.PropertyInfo replace with PropertyInfo<br>   <strong>Deprecated<\/strong> Xojo.Introspection.TypeInfo replace with TypeInfo<br><\/p>\n\n\n\n<p>Module Xojo.IO<br>   <strong>Deprecated<\/strong> Xojo.IO.BinaryStream replace with BinaryStream<br>   <strong>Deprecated<\/strong> Xojo.IO.FolderItem replace with FolderItem<br>   <strong>Deprecated<\/strong> Xojo.IO.IOException replace with IOException<br>   <strong>Deprecated<\/strong> Xojo.IO.SpecialFolder replace with SpecialFolder<br>   <strong>Deprecated<\/strong> Xojo.IO.TextInputStream replace with TextInputStream<br>   <strong>Deprecated<\/strong> Xojo.IO.TextOutputStream replace with TextOutputStream<br><\/p>\n\n\n\n<p>Module Xojo<br>   <strong>added<\/strong> Abs(value As Double) As Double<br>   <strong>added<\/strong> ACos(value As Double) As Double <br>   <strong>added<\/strong> ASin(value As Double) As Double<br>   <strong>added<\/strong> ATan(value As Double) As Double<br>   <strong>added<\/strong> ATan2(y As Double, x As Double) As Double<br>   <strong>added<\/strong> Ceil(value As Double) As Double<br>   <strong>added<\/strong> Ceiling(value As Double) As Double<br>   <strong>added<\/strong> Cos(value As Double) As Double<br>   <strong>added<\/strong> DecodeHex(s As String) As String<br>   <strong>added<\/strong> EncodeHex(s As String, insertSpaces As Boolean = False) As String<br>   <strong>added<\/strong> Exp(value As Double) As Double<br>   <strong>added<\/strong> Floor(value As Double) As Double<br>   <strong>added<\/strong> Log(value As Double) As Double<br>   <strong>added<\/strong> Max(value1 As Double, value2 As Double, ParamArray moreValues() As Double) As  Double<br>   <strong>added<\/strong> Min(value1 As Double, value2 As Double, ParamArray moreValues() As Double) As Double<br>   <strong>added<\/strong> Pow(base As Double, exponent As Double) As Double<br>   <strong>added<\/strong> Rnd() As Double<br>   <strong>added<\/strong> Round(value As Double) As Double<br>   <strong>added<\/strong> Sign(value As Double) As Integer<br>   <strong>added<\/strong> Sin(value As Double) As Double<br>   <strong>added<\/strong> Sqrt(value As Double) As Double<br>   <strong>added<\/strong> Tan(value As Double) As Double<br>   <strong>added<\/strong> VarType(value As Variant) As Integer<\/p>\n\n\n\n<p>IOSKeyboardTypes<br>   <strong>added<\/strong> <strong>Deprecated<\/strong> iOSKeyboardTypes replace with MobileTextField.InputTypes<\/p>\n\n\n\n<p><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Some changes wont be a big dealIf you happened to use the style REALbasic.function name then some of those will need fixing as they have moved from the REALbasic framework into different ones. IF you need to prefix things with the right namespace you&#8217;ll have to sort out which one it got moved to but &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.great-white-software.com\/blog\/2020\/11\/27\/2020r2-desktop-changes\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;2020r2 desktop changes&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-963","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.great-white-software.com\/blog\/wp-json\/wp\/v2\/posts\/963","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.great-white-software.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.great-white-software.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.great-white-software.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.great-white-software.com\/blog\/wp-json\/wp\/v2\/comments?post=963"}],"version-history":[{"count":4,"href":"https:\/\/www.great-white-software.com\/blog\/wp-json\/wp\/v2\/posts\/963\/revisions"}],"predecessor-version":[{"id":976,"href":"https:\/\/www.great-white-software.com\/blog\/wp-json\/wp\/v2\/posts\/963\/revisions\/976"}],"wp:attachment":[{"href":"https:\/\/www.great-white-software.com\/blog\/wp-json\/wp\/v2\/media?parent=963"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.great-white-software.com\/blog\/wp-json\/wp\/v2\/categories?post=963"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.great-white-software.com\/blog\/wp-json\/wp\/v2\/tags?post=963"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}