2010-08-10 49 views
1

我想知道在delphi中是否可以从对象Tcollection填充组合框组件。delphi 7:如何从对象Tcollection填充组合框?

索姆代码:

//我的产品列表 程序TfoMain.InitForm;产品:TListeDispoProduit.Create(TProduct);

with (FListProduct) do 
    begin 
    with TProduct(Add) do 
    begin 
     Name := 'Product 01'; 
     CIP := 'A001'; 
     StockQty := 3; 
    end; 

    with TProduct(Add) do 
    begin 
     Name := 'Product 02'; 
     CIP := 'A002'; 
     StockQty := 5; 
    end; 
    end; 

//需要填写一个组合框(名称的cbxListProduct)

procedure TfoMain.fFillCbxFromProductList(aProductList: FListProduct); 
begin 
     // I don't know how to do this follow 
    foMain.cbxListProduct.Items.Add() 
end; 

谢谢。

回答

4

像这样的东西(改变组合框和收集的名称,以反映你的情况):

for i := 0 to Collection.Count-1 do 
    myComboBox.Items.Add(TProduct(Collection.Items[i]).Name); 

顺便说一句,你不需要说,“foMain”在

foMain.cbxListProduct.Items.Add() 

这足以写

cbxListProduct.Items.Add() 

当你在TfoMain的过程中,TfoMain的内容是可访问的b y默认。

+0

请编辑您的帖子的语气。诡计侮辱讽刺在一个网站上没有地位,其目的在于帮助人们,特别是当问题是合法的时候。 – 2010-08-10 14:41:03

+1

好的,对不起。不应该这样做。 – himself 2010-08-10 14:45:20

+2

事实上,你应该(几乎)从不在表单的方法中引用表单变量(在本例中为foMain)。如果有多个表单实例,它将会严重失败。如果你想消除使用'Self.'而不是。 – 2010-08-10 20:58:55

0

在新DELPHIS你可以做

for item in collection do 
    myComboBox.Items.Add(TProduct(item).Name)