我正在使用 Delphi 7 进行开发。我有一个 TListBox 和一个 TStringGrid,其中 TStringGrid 有两列(没有固定行或列)。我在 TListBox 中有以下数据:
可用元素 - a123(a123) 可用元素 - a1234(a1234) 可用元素 - a12345(a12345)
TStringGrid 中具有以下数据:
列1 列2
a1 可用元素 - a1 a2 可用元素 - a12
如果我选择 TListbox 中的第一项,即 a123,并执行以下按钮单击事件过程,则最后一项数据即 a12345 将移动到网格中。
请问下面的代码有什么问题。以下代码将所选 TListbox 中的项移动到 TStringgird 的两个列中:
procedure TForm1.btnMoveLeftClick(Sender: TObject);
var
sString : String;
i : Integer;
begin
for i := 0 to ListBox1.Items.Count - 1 do
begin
{-- Is this status selected? --}
if ListBox1.Selected[i] then
begin
sString := Trim(ListBox1.Items[i]);
{-- Delete selected status. --}
ListBox1.Items.Delete (i);
if ((grdVFormDetails.RowCount >= 1) And (Trim(grdVFormDetails.Cells[0, 0]) <> EmptyStr)) then
grdVFormDetails.RowCount := grdVFormDetails.RowCount+1;
grdVFormDetails.Cols[1].Add(Copy(sString, 1, Pos('(', sString) - 1));
sString := Copy(sString, Pos('(', sString) + 1, Length(sString));
sString := Copy(sString, Pos('(', sString) + 1, Length(sString) - 1);
grdVFormDetails.Cols[0].Add(sString);
break;
end;
end;
end;
ListBox1.Items[ListBox1.ItemIndex]
。你在循环中还做了什么没有展示出来? - Marjan VenemaItemID
,它将保存括号内的值,而ItemText
将保存输入字符串的其余部分。然后,您可以简单地使用Cells[]
来赋值。还有,你应该从后往前解析这个输入字符串,如果有一个字符串像Text(comment)-(a12345)
。如果按照您当前的方式进行解析,您将提取出comment
而不是a12345
。 - TLama