Чтобы сделать то, что вы пытаетесь, вы должны использовать моноширинный шрифт для вашего ListBox, чтобы все символы имели одинаковую ширину и, таким образом, могли быть выстроены в линию так, как вы пытаетесь.Но вы не используете моноширинный шрифт, вместо этого вы фактически используете шрифт переменной ширины, поэтому каждый символ имеет разную ширину.Вот почему все складывается не так, как вы хотите.
Если вы используете VCL, вам действительно не следует вообще использовать TListBox
для этой задачи.Вместо этого используйте мультиколонку TListView
.Установите для его свойства ViewStyle
значение vsReport
, добавьте 3 столбца к свойству Columns
и установите их Width
s по желанию, а затем вы можете заполнить каждый столбец требуемыми значениями, например:
var
Item: TListItem;
Item := ListView.Items.Add;
Item.Caption := IntToStr(Track);
Item.SubItems.Add(ADOqry['Song']);
Item.SubItems.Add(SongLength);
Если вы используете вместо этого FMX, вы можете использовать TListBox
для отображения данных так, как вы описываете (хотя вам действительно следует использовать TListView
вместо этого).Установите для свойства DefaultItemStyles.ItemStyle
ListBox значение 'listboxitemrightdetail'
(или любой стиль, который отображает элемент Detail
так, как вы хотите), а затем сохраните строку SongLength
в свойстве TListBoxItem.ItemData.Detail
каждого элемента ListBox:
var
Item: TListBoxItem;
Item := TListBoxItem.Create(ListBox);
Item.Text := IntToStr(Track) + #9 + ADOqry['Song'];
Item.ItemData.Detail := SongLength;
ListBox.AddObject(Item);
См. Следующий учебник на веб-сайте Embarcadero:
Использование компонентов ListBox для отображения представления таблицы