I have a Firemonkey Form.
On this Form there is a TGridPanelLayout
. On that layout with multiple Rows and only one Column. There are several TEdit
Controls in that TGridPanelLayout
.
Into the top TEdit
Control I added a dropdown Button and a Scrollbox with a Listview in it. When I click the dropdown Button I want the Scrollbox to be visible.
Everything works fine, except the fact, that the Scrollbox is viewed behind the other EditFields on the Form. I try BringToFront
with Scrollbox and Listveiw even with the Edit but nothing changes. I Played arround with ClipParent
and ClipChild
nothing helps. How can I bring the Scrollbox and the Listview in that Scroll Box to Front?
EDIT: Code for FMX Form Unit1:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 569
ClientWidth = 721
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
OnCreate = FormCreate
DesignerMasterStyle = 0
object GridPanelLayout1: TGridPanelLayout
Align = MostTop
Size.Width = 721.000000000000000000
Size.Height = 153.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
ColumnCollection = <
item
Value = 100.000000000000000000
end>
ControlCollection = <
item
Column = 0
Control = Edit1
Row = 0
end>
RowCollection = <
item
Value = 100.000000000000000000
end>
object Edit1: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
Align = Horizontal
TabOrder = 2
Position.Y = 48.000000000000000000
Size.Width = 721.000000000000000000
Size.Height = 25.000000000000000000
Size.PlatformDefault = False
Caret.Interval = 1
Caret.Width = 10
object DropDownEditButton1: TDropDownEditButton
CanFocus = False
Cursor = crArrow
Size.Width = 28.000000000000000000
Size.Height = 21.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
OnClick = DropDownEditButton1Click
end
object VertScrollBox1: TVertScrollBox
Align = Horizontal
Position.Y = -16.000000000000000000
Size.Width = 640.000000000000000000
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Visible = False
Viewport.Width = 640.000000000000000000
Viewport.Height = 50.000000000000000000
object ListView1: TListView
ItemAppearanceClassName = 'TListItemAppearance'
ItemEditAppearanceClassName = 'TListItemShowCheckAppearance'
HeaderAppearanceClassName = 'TListHeaderObjects'
FooterAppearanceClassName = 'TListHeaderObjects'
EditMode = True
Align = Client
Size.Width = 640.000000000000000000
Size.Height = 50.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
end
end
end
end
object GridPanelLayout2: TGridPanelLayout
Align = Client
Size.Width = 721.000000000000000000
Size.Height = 416.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
ColumnCollection = <
item
Value = 100.000000000000000000
end>
ControlCollection = <
item
Column = 0
Control = Edit2
Row = 0
end
item
Column = 0
Control = Edit3
Row = 1
end
item
Column = 0
Control = Edit4
Row = 2
end
item
Column = 0
Control = Edit5
Row = 3
end>
RowCollection = <
item
SizeStyle = Absolute
Value = 50.000000000000000000
end
item
SizeStyle = Absolute
Value = 50.000000000000000000
end
item
SizeStyle = Absolute
Value = 50.000000000000000000
end
item
SizeStyle = Absolute
Value = 50.000000000000000000
end>
object Edit2: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
Align = Center
TabOrder = 5
Size.Width = 721.000000000000000000
Size.Height = 32.000000000000000000
Size.PlatformDefault = False
end
object Edit3: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
Align = Center
TabOrder = 4
Size.Width = 721.000000000000000000
Size.Height = 31.000000000000000000
Size.PlatformDefault = False
end
object Edit4: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
Align = Center
TabOrder = 3
Size.Width = 721.000000000000000000
Size.Height = 28.000000000000000000
Size.PlatformDefault = False
end
object Edit5: TEdit
Touch.InteractiveGestures = [LongTap, DoubleTap]
Align = Center
TabOrder = 2
Size.Width = 721.000000000000000000
Size.Height = 26.000000000000000000
Size.PlatformDefault = False
end
end
end
Code for Creation and Button Click, dont forget to define OnclickEvent on Speedbutton:
unit Unit1;
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.Edit, FMX.Layouts, FMX.StdCtrls, FMX.ListView.Types,
FMX.ListView.Appearances, FMX.ListView.Adapters.Base, FMX.ListView;
type
TForm1 = class(TForm)
GridPanelLayout1: TGridPanelLayout;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
DropDownEditButton1: TDropDownEditButton;
VertScrollBox1: TVertScrollBox;
ListView1: TListView;
GridPanelLayout2: TGridPanelLayout;
procedure DropDownEditButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.DropDownEditButton1Click(Sender: TObject);
begin
Edit1.BringToFront;
VertScrollBox1.Position.Y := TSpeedButton(Sender).Height;
VertScrollBox1.Height := (GridPanelLayout1.Height + GridPanelLayout2.Height) - Edit1.LocalToAbsolute(PointF(0, 0)).Y - Edit1.Height - 10;
VertScrollBox1.Visible := true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ListView1.Items.Clear;
for var I := 0 to 100 do
ListView1.Items.Add.Text := 'Demo ' + I.ToString;
end;
end.
Image of behavior: https://ibb.co/pxTcRWP