首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TComboBox和TListBox项目删除?

TComboBox和TListBox项目删除?
EN

Stack Overflow用户
提问于 2018-01-17 12:31:19
回答 3查看 1.6K关注 0票数 3

我试图从TListBoxTComboBox中的文本中添加项,我的代码在TListBox TComboBox中添加项时运行良好,但是当我试图从TListBox本身和TComobBox中删除所选项时,它显示了访问冲突。

以下是我的程序代码:-

代码语言:javascript
复制
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;

解决了:一个幼稚的错误现在被解决了。这是工作代码:

代码语言:javascript
复制
procedure TMainForm.Button2Click(Sender: TObject);
begin
  ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(ListBox1.Selected.Text));
  ListBox1.Items.Delete(ListBox1.Selected.Index);      
end;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-17 14:04:10

此行从列表框中移除该项。

代码语言:javascript
复制
ListBox1.Items.Delete(ListBox1.Selected.Index);

这一行试图从组合框中删除该项。

代码语言:javascript
复制
ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(ListBox1.Selected.Text));

但是在它中你指的是ListBox1.Selected.Text.这是指您刚才在第一个删除中删除的项目。交换执行顺序应该是可行的:

代码语言:javascript
复制
begin
  ComboBox1.Items.Delete(ComboBox1.Items.IndexOf(ListBox1.Selected.Text));
  ListBox1.Items.Delete(ListBox1.Selected.Index);
end
票数 1
EN

Stack Overflow用户

发布于 2018-01-17 13:02:59

执行删除操作的一个安全(R)方法是

代码语言:javascript
复制
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;

用法:

代码语言:javascript
复制
DeleteItems(Edit1.Text);

因为这并不是假设在两个列表中选择了哪些项。

我让您了解使用调试器为什么要获得AV。对你来说,找出比我告诉你更有教益。

票数 4
EN

Stack Overflow用户

发布于 2018-01-17 12:52:04

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48301230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档