diff --git a/components/fpspreadsheet/examples/other/frozen_rows_cols/demo_frozen_rows_cols.lpi b/components/fpspreadsheet/examples/other/frozen_rows_cols/demo_frozen_rows_cols.lpi
new file mode 100644
index 000000000..9a8e8a128
--- /dev/null
+++ b/components/fpspreadsheet/examples/other/frozen_rows_cols/demo_frozen_rows_cols.lpi
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
diff --git a/components/fpspreadsheet/examples/other/frozen_rows_cols/demo_frozen_rows_cols.lpr b/components/fpspreadsheet/examples/other/frozen_rows_cols/demo_frozen_rows_cols.lpr
new file mode 100644
index 000000000..44888ae6b
--- /dev/null
+++ b/components/fpspreadsheet/examples/other/frozen_rows_cols/demo_frozen_rows_cols.lpr
@@ -0,0 +1,30 @@
+program demo_frozen_rows_cols;
+uses
+ SysUtils,
+ FPSpreadsheet, fpsTypes, xlsxOOXML;
+var
+ wb: TsWorkbook;
+ ws: TsWorksheet;
+ r, c: Integer;
+begin
+ wb := TsWorkbook.Create;
+ try
+ ws := wb.AddWorksheet('Sheet1');
+
+ // Fill worksheet with some data
+ for r := 0 to 100 do
+ for c := 0 to 10 do
+ ws.WriteText(r, c, Format('R%d C%d', [r, c]));
+
+ // Prepare frozen columns and frozen rows
+ ws.LeftPaneWidth := 1; // There should be 1 frozen column
+ ws.TopPaneHeight := 2; // There should be 2 frozen rows
+ ws.Options := ws.Options + [soHasFrozenPanes]; // Activate this feature.
+
+ // Save to file
+ wb.WriteToFile('test.xlsx', true);
+ finally
+ wb.Free;
+ end;
+end.
+
diff --git a/components/fpspreadsheet/examples/other/other_demos.lpg b/components/fpspreadsheet/examples/other/other_demos.lpg
index f4e5c1c41..57dd7b7ed 100644
--- a/components/fpspreadsheet/examples/other/other_demos.lpg
+++ b/components/fpspreadsheet/examples/other/other_demos.lpg
@@ -93,6 +93,11 @@
+
+
+
+
+
diff --git a/components/fpspreadsheet/examples/other/readme.txt b/components/fpspreadsheet/examples/other/readme.txt
index 14dd20ebb..ab22ec493 100644
--- a/components/fpspreadsheet/examples/other/readme.txt
+++ b/components/fpspreadsheet/examples/other/readme.txt
@@ -11,6 +11,9 @@ This folder contains various demo applications:
- expression_parser_demo_expression_parser: shows how the formula engine of
FPSpreadsheet is used.
+- frozen_rowscols/demo_frozen_cols_rows: shows how the first rows and columns
+ can be "frozen", i.e. prevented from scrolling.
+
- header_footer_images/demo_write_headerfooter_images: adds images to
worksheet headers and footers
diff --git a/components/fpspreadsheet/examples/other/run_all_demos.bat b/components/fpspreadsheet/examples/other/run_all_demos.bat
index 5bdfb283c..532f265e4 100644
--- a/components/fpspreadsheet/examples/other/run_all_demos.bat
+++ b/components/fpspreadsheet/examples/other/run_all_demos.bat
@@ -2,6 +2,7 @@ cell_formats\demo_write_formatting -quit
colors\demo_write_colors -quit
conditional_formatting\demo_conditional_formatting -quit
expression_parser\demo_expression_parser -quit
+frozen_rowscols\demo_frozen_rows_cols -quit
header_footer_images\demo_write_headerfooter_images -quit
hyperlinkdemo\collectlinks -quit
ignore_formulas\demo_ignore_formula -quit