FMX uses a flexible layout system based on TAlign, TLayout, TGridPanelLayout, and TScaleLayout. Key samples to explore:
| Sample Name | What It Teaches |
|-------------|------------------|
| CustomListBox | Creating dynamic, styled list items |
| MasterDetailDetail | Multi-level navigation on mobile |
| TabControlTransitions | Animated swiping between tabs |
| AdaptiveLayout | Changing UI orientation and size at runtime |
Code highlight – Adding a search filter to a TListView (excerpt from official sample):
procedure TForm1.SearchEditChangeTracking(Sender: TObject);
begin
TListView(SearchHandle).Items.Filter :=
function (Item: TListViewItem): Boolean
begin
Result := ContainsText(Item.Text, SearchEdit.Text);
end;
end;
Workaround: Supplement with third-party books (e.g., “FireMonkey Mobile Development”) and GitHub repos like FMXExpress or DelphiWorld.
Cause: The sample was written for API Level 28, but your target is API 33+.
Fix: Search for a sample that uses TPermissionsService.RequestPermissions. Modern samples must include READ_MEDIA_IMAGES instead of READ_EXTERNAL_STORAGE.
FMX uses a flexible layout system based on TAlign, TLayout, TGridPanelLayout, and TScaleLayout. Key samples to explore:
| Sample Name | What It Teaches |
|-------------|------------------|
| CustomListBox | Creating dynamic, styled list items |
| MasterDetailDetail | Multi-level navigation on mobile |
| TabControlTransitions | Animated swiping between tabs |
| AdaptiveLayout | Changing UI orientation and size at runtime |
Code highlight – Adding a search filter to a TListView (excerpt from official sample):
procedure TForm1.SearchEditChangeTracking(Sender: TObject);
begin
TListView(SearchHandle).Items.Filter :=
function (Item: TListViewItem): Boolean
begin
Result := ContainsText(Item.Text, SearchEdit.Text);
end;
end;
Workaround: Supplement with third-party books (e.g., “FireMonkey Mobile Development”) and GitHub repos like FMXExpress or DelphiWorld.
Cause: The sample was written for API Level 28, but your target is API 33+.
Fix: Search for a sample that uses TPermissionsService.RequestPermissions. Modern samples must include READ_MEDIA_IMAGES instead of READ_EXTERNAL_STORAGE.