从组合框DELPHI中删除所选组件

时间:2014-04-12 20:51:24

标签: delphi combobox

我有ComboBox4,ComboBox1和Button5 当我单击Button5程序时,应从ComboBox4和ComboBox1组件列表中删除在combobox4中选择的组件。但是我使用以下代码得到列表超出界限错误...

procedure TForm1.Button5Click(Sender: TObject);
var
cat : Integer;
trinti: TComponent;
catT : String;
begin
catT := ComboBox4.Text;
cat := ComboBox4.Items.IndexOf(catT);
trinti := ComboBox4.Components[cat];

ComboBox1.Items.BeginUpdate;
ComboBox4.Items.BeginUpdate;
  ComboBox4.RemoveComponent(trinti);
  ComboBox1.RemoveComponent(trinti);
ComboBox1.Items.EndUpdate;
ComboBox4.Items.EndUpdate;

removeCat(catT);
end;

请帮助:(

1 个答案:

答案 0 :(得分:2)

Components属性和RemoveComponent方法在这里使用是错误的。这些是用于所有权和终身管理。通常,表单上唯一拥有任何内容的是表单本身。因此,在组合框中使用Components将始终导致错误。

相反,您需要使用组合框的Items属性及其Delete方法。它可能看起来像这样:

var
  Index: Integer;
....
catT := ComboBox4.Text;
Index := ComboBox4.Items.IndexOf(catT);
if Index <> -1 then
  ComboBox4.Items.Delete(Index);