TCheckListBox странное поведение, не показывает первый символ
Итак, у меня есть CheckListBox с 6 пунктами:
Items.Strings = (
'Banana'
'Apple'
'Pomelo'
'Orange'
'Peach'
'BlueBarry')
Если я хочу показать их, то в диалоговом окне ShowMessage будет напечатано сообщение.
'anana','pple','omelo','range','each','lueBarry'.
Процедура, которую я использую, такова.
procedure TForm1.Button1Click(Sender: TObject);
var I : Integer;
begin
for I := 0 to CheckListBox1.Items.Count - 1 do
ShowMessage(CheckListBox1.Items.ValueFromIndex[I]);
end;
Почему я не могу получить первый символ из моего предмета?
2 ответа
Попробуйте вставить элементы в правильном порядке, как это
procedure TForm1.Button1Click(Sender: TObject);
begin
CheckListBox1.Items.Add('Banana');
CheckListBox1.Items.Add('Apple');
CheckListBox1.Items.Add('Pomelo');
CheckListBox1.Items.Add('Orange');
CheckListBox1.Items.Add('Peach');
CheckListBox1.Items.Add('BlueBarry');
end;
результат будет:
затем...
procedure TForm1.Button2Click(Sender: TObject);
var I : Integer;
begin
for I := 0 to CheckListBox1.Items.Count - 1 do
ShowMessage(CheckListBox1.Items[I]);
end;
Вы не можете использовать ValueFromIndex для вашего porpouse.
TStrings.ValueFromIndex
Вернуть значение части строки на основе ее индекса.
декларация
public property TStrings.ValueFromIndex : string
read GetValueFromIndex
write SetValueFromIndex;
Описание
ValueFromIndex возвращает часть значения строки на основе строкового индекса. Часть значения - это все символы в строке после символа NameValueSeparator или все символы, если символ NameValueSeparator отсутствует.
TStrings.NameValueSeparator
Значение символа, используемого для разделения имени, пары значений
декларация
public property TStrings.NameValueSeparator : Char
read FNameValueSeparator
write SetNameValueSeparator;
Описание
NameValueSeparator - это символ, используемый для разделения пары имя-значение. По умолчанию это знак равенства (=), в результате чего получаются пары имя = значение.
Для пар имя: значение можно задать двоеточие.
взгляни на источник vcl:O
function TStrings.GetValueFromIndex(Index: Integer): string;
begin
if Index >= 0 then
Result := Copy(Get(Index), Length(Names[Index]) + 2, MaxInt) else
Result := '';
end;