2009-06-24 92 views
4

顯示TImage中是相當一個新手,我剛喝了我的第一個問題回答(Delphi: TImage.Create causes Access violation)立即碰到了新的問題:德爾福:創建與上FORMCREATE

procedure TSelectorForm.FormCreate(Sender: TObject); 
var 
    Loop: Byte; 
begin 
    for Loop := 1 to 10 do 
    begin 
    ArrayOfImages[Loop] := TImage.Create(SelectorForm); 
    MainForm.MyImageList.GetBitmap(Loop - 1, ArrayOfImages[Loop].Picture.Bitmap); 
    ArrayOfImages[Loop].Top := ... 
    ArrayOfImages[Loop].Left := ... 
    ArrayOfImages[Loop].Enabled := True; 
    ArrayOfImages[Loop].Visible := True; 
    end; 
end; 

當我展示這種形式

procedure TMainForm.MyImageClick(Sender: TObject); 
begin 
    SelectorForm.Visible := True; 
end; 

圖像不可見。我究竟做錯了什麼?

我想感謝大家的建議。希望提出基本問題可以幫助其他人避免在將來問他們:-)

+0

如果我的計算是正確的,這是第200,000個問題。 :) – cletus 2009-06-24 11:04:55

回答

12

將所有圖像組件的Parent屬性設置爲包含它們的窗體。

procedure TSelectorForm.FormCreate(Sender: TObject); 
var 
    Loop: Byte; 
begin 
    for Loop := 1 to 10 do 
    begin 
    ArrayOfImages[Loop] := TImage.Create(SelectorForm); 
    MainForm.MyImageList.GetBitmap(Loop - 1, ArrayOfImages[Loop].Picture.Bitmap); 
    ArrayOfImages[Loop].Top := ... 
    ArrayOfImages[Loop].Left := ... 
    ArrayOfImages[Loop].Visible := True; 
    ArrayOfImages[Loop].Parent := SelectorForm; 
    end; 
end; 
1

好吧,我想你必須單TImage組件添加到當前表單控制列表?

這意味着:僅僅因爲您在代碼中創建TImage並不意味着它實際上被添加到窗體的控件中。你必須在代碼中這樣做 - 但是,我幾年之後沒有碰過Delphi,所以我現在不能提供任何代碼。