我试图从TListBox和TComboBox中的文本中添加项,我的代码在TListBox TComboBox中添加项时运行良好,但是当我试图从TListBox本身和TComobBox中删除所选项时,它显示了访问冲突。
以下是我的程序代码:-
procedure TMainForm.Button1Click(Sender: TObject);
begin
ListBox1.Items.Add(Edit1.Text);
ComboBox1.Items.Add(Edit1.Text);
end;
procedure TMainForm.Button2Click(Sender: TObject);
begin
ListBox1.Items.Delete(ListBox1.Selected.Index);
ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(ListBox1.Selected.Text));
end;解决了:一个幼稚的错误现在被解决了。这是工作代码:
procedure TMainForm.Button2Click(Sender: TObject);
begin
ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(ListBox1.Selected.Text));
ListBox1.Items.Delete(ListBox1.Selected.Index);
end;发布于 2018-01-17 14:04:10
此行从列表框中移除该项。
ListBox1.Items.Delete(ListBox1.Selected.Index);这一行试图从组合框中删除该项。
ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(ListBox1.Selected.Text));但是在它中你指的是ListBox1.Selected.Text.这是指您刚才在第一个删除中删除的项目。交换执行顺序应该是可行的:
begin
ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(ListBox1.Selected.Text));
ListBox1.Items.Delete(ListBox1.Selected.Index);
end发布于 2018-01-17 13:02:59
执行删除操作的一个安全(R)方法是
procedure TForm1.DeleteItems(const TextToFind : String);
var
i1,
i2 : Integer;
begin
i1 := ListBox1.Items.IndexOf(TextToFind);
i2 := ComboBox1.Items.IndexOf(TextToFind);
if i1 >=0 then
ListBox1.Items.Delete(i1);
if i2 >=0 then
ComboBox1.Items.Delete(i2);
end;用法:
DeleteItems(Edit1.Text);因为这并不是假设在两个列表中选择了哪些项。
我让您了解使用调试器为什么要获得AV。对你来说,找出比我告诉你更有教益。
发布于 2018-01-17 12:52:04
procedure TMainForm.Button2Click(Sender: TObject);
begin
if ListBox1.Selected.Index > -1 then ListBox1.Items.Delete(ListBox1.Selected.Index);
if ComboBox1.ItemIndex > - 1 then ComboBox1.Items.Delete(ComboBox1.ItemIndex);
end;https://stackoverflow.com/questions/48301230
复制相似问题