Похоже, TxpComboBox.Items
может быть TStrings
descendent (как стандарт TComboBox.Items
). Если это так, то, как это должно работать:
slComponentValue := TStringList.Create;
slComponentValue.Add(ComponentName.Items[ComponentName.ItemIndex]);
Ваша функция не будет работать, как есть, хотя, потому что он не возвращает slComponentValue
.
Как правило, это не очень хорошая идея (без какой-либо конкретной причины) вернуть объект из функции, потому что неясно, где лежит ответственность за ее освобождение. Я предпочитаю, чтобы сделать это более ясным, имея процедура принимает уже созданный экземпляр объекта вместо:
procedure AssignComboBoxToList(ComponentName : TxpComboBox;
ListToFill: TStrings) : Boolean;
begin
Assert(Assigned(ListToFill));
ListToFill.Add(ComponentName.Items[ComponentName.ItemIndex);
end;
Вы можете использовать его как это:
slComponentValue := TStringList.Create;
try
AssignComboBoxToList(YourComboBox, slComponentValue);
if slComponentValue.Count > 0 then
// Do whatever with the slComponentValue list
finally
slComponentValue.Free;
end;
Однако, как вы только имея дело с одной строкой, может быть проще просто использовать одну строку; есть на самом деле не TStringList neededhere:
strResult := YourComboBox.Items[YourComboBox.ItemIndex];
С этим сказанным, TComboBox
не поддерживает множественный выбор; TListBox
делает, но TComboBox
отображает выпадающий список и позволяет выбрать один элемент, что делает ваш вопрос несколько неясным.
Поскольку TxpComboBox не является частью стандартного Delphi VCL, это может помочь, если вы упомянули, что именно это такое, и дали более подробную информацию. –
Извините, я забыл об этом. Это часть модуля xpStyles. Это, по сути, просто ComboBox, который выглядит как из интерфейса XP. –
AddStrings или Assign –