This is a simple VCL owner drawn virtual list view component for Delphi XE2 or later.
Set the RowCount property and the OnPainRow event will fire for each visible row.
The OnRowChange event will fire when a row is selected with the mouse or the keyboard.
When there are no rows, the OnPaintNoRows event will fire.
The control only handles fixed row heights right now.
See the demo project.