Delphi: Visual control similar to TListView

Job ID: 37258804

Budget: $30 – $250 USD

Implement in Delphi 11 (or compatible) a visual control called TAppList that displays items visually on a list that looks as the attached screenshot.

Each row of data consists of two labels, called the caption and the text. In the screenshot, the captions are the names of the software and the text are the other text information on the screen.

Each row also consists of an image that is stored in a TImageList.

The list can contain more rows that can fit to the control's area, in which case a vertical scroll bar is shown. There can never be a horizontal scroll bar.

The control shall also contain the following properties:
FontCaption : TFont - defines the font to be used with the caption labels. Each label uses this same font.
FontText : TFont - defines the font to the be used with the text labels. Each label uses this same font.
ColorMainBackground : TColor - defines the color of the background (empty area) of the control. In the attached screenshot, this color is #161616.
ColorRowBackground : TColor - defines the color of the background of each row. In the attached screenshot, this color is #1E1E1E.
MultiSelect : Boolean. If true, then clicking any part of a row selects it. When selected, its background color shall change to ColorRowSelected : TColor. To select a row, you can click it. To unselect, click it again.

The control doesn't need to work on Delphi's design-time. There is no need for any kind of design-time data display or editing, only in runtime. In runtime, it must be possible to add and remove items from the list.

The control shall also support sorting via a custom compare function, similarly to TListView's AlphaSort() method.

Each row displayed by the control shall be automatically sized based on the text content it contains. Notice how each row has a slightly rounded corners.
Related categories: Delphi Software Architecture