При разработке приложений с использованием компонентов Metropolis UI может возникнуть задача извлечения данных из свойств элементов списка. В частности, пользователь столкнулся с проблемой передачи описания (Description) выбранного элемента в компонент Memo. В стандартных списках это делается довольно просто, но в случае с Metropolis UI Listbox Items процесс требует дополнительных шагов.
Проблема
Вопрос заключается в том, как извлечь строки из свойств Title, Subtitle или Description выбранного элемента TMetropolisUIListBoxItem. В стандартном списке элементов можно легко получить текст, используя свойство Text. Однако, при попытке аналогичной операции с указанными свойствами Metropolis UI, код не работает.
Пример кода для стандартного списка
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := ListBox1.Selected.Text;
end;
Попытка решения проблемы
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text := ListBox1.Selected.Description;
end;
Данный код не работает, так как Selected не имеет прямого доступа к свойствам Title, Subtitle или Description элемента Metropolis UI Listbox.
Решение проблемы
Чтобы получить доступ к свойствам Title, Subtitle и Description, необходимо выполнить приведение выбранного элемента списка к типу TMetropolisUIListBoxItem. Это позволит работать со свойствами, специфичными для Metropolis UI.
procedure TForm1.Button1Click(Sender: TObject);
var
lbItemSel: TListBoxItem;
begin
lbItemSel := ListBox1.Selected;
if (lbItemSel is TMetropolisUIListBoxItem) then
begin
Memo1.Text :=
TMetropolisUIListBoxItem(lbItemSel).Title + ' ' +
TMetropolisUIListBoxItem(lbItemSel).SubTitle + ' ' +
TMetropolisUIListBoxItem(lbItemSel).Description
;
end;
end;
Комментарии
Используйте оператор is для проверки типа элемента, что исключает необходимость проверки на nil.
Обратите внимание на корректное использование свойств, специфичных для TMetropolisUIListBoxItem, чтобы избежать ошибок при работе с элементами списка.
Используя данный подход, вы сможете успешно извлекать и передавать данные из элементов Metropolis UI Listbox в компонент Memo в вашем приложении на Delphi.
Контекст вопроса заключается в предоставлении пошагового руководства по передаче описания элементов Metropolis UI в компонент Memo в приложениях, разработанных с использованием Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS