我有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;
请帮助:(
答案 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);