Delphi FMX TabOrder and frames bug

  

using the Delphi 10.2.2 I encountered a problem with TabOrder when using frames.

Look at the following picture, I set the tabOrder and expect the focus to move as follow: Edit with TabOrder0 -> Edit inside a frame -> Edit with TabOrder 2 -> Edit Inside a frame, inside a layout -> Edit with TabOrder0

Instead the focus move using tab, generate the following problems:

Edit with TabOrder0 -> Edit inside a frame -> Edit with TabOrder0
The focus never reach Edit with TabOrder 2
If I force the focus (using the mouse) to Edit with TabOrder 2:
Edit with TabOrder 2-> Edit Inside a frame, inside a layout -> Edit Inside a frame, inside a layout.
The focus never leave the last edit.

Does anyone knows a workaround to make the TabOrder behave as expected?

Follow a snippet of the .fmx

The form:

object Form1: TForm1
Left = 0
Top = 0
Caption = ‘Form1’
ClientHeight = 337
ClientWidth = 414
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object Edit4: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 0
Text = ‘TabOrder 0’
Position.X = 48.000000000000000000
Position.Y = 16.000000000000000000
end
inline Frame21: TFrame2
Position.X = 40.000000000000000000
Position.Y = 80.000000000000000000
Size.Width = 320.000000000000000000
Size.Height = 62.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
end
object Edit5: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 3
Text = ‘TabOrder 2’
Position.X = 48.000000000000000000
Position.Y = 160.000000000000000000
end
object Layout3: TLayout
Position.X = 40.000000000000000000
Position.Y = 200.000000000000000000
Size.Width = 345.000000000000000000
Size.Height = 121.000000000000000000
Size.PlatformDefault = False
TabOrder = 4
inline Frame22: TFrame2
Position.X = 8.000000000000000000
Position.Y = 51.000000000000000000
Size.Width = 320.000000000000000000
Size.Height = 62.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
end
object Label1: TLabel
Position.X = 24.000000000000000000
Position.Y = 24.000000000000000000
Size.Width = 305.000000000000000000
Size.Height = 17.000000000000000000
Size.PlatformDefault = False
Text = ‘TabOrder 3: TEdit inside frame, inside TLayout’
TabOrder = 2
end
end
object Label2: TLabel
Position.X = 40.000000000000000000
Position.Y = 56.000000000000000000
Size.Width = 305.000000000000000000
Size.Height = 17.000000000000000000
Size.PlatformDefault = False
Text = ‘TabOrder 1: TEdit inside frame’
TabOrder = 2
end
end

The frame:

object Frame2: TFrame2
Size.Width = 320.000000000000000000
Size.Height = 62.000000000000000000
Size.PlatformDefault = False
object Edit1: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
TabOrder = 0
Position.X = 200.000000000000000000
Position.Y = 24.000000000000000000
end
end

Comments are closed.