2014-03-01 114 views
1

我在Delphi XE5中製作了Firemonkey Mobile應用程序,並有一個包含10個按鈕的垂直滾動框。文本由用戶添加的,一旦所有的按鈕有一些文字,爲其他文本創建一個新的按鈕,使用此代碼:最近動態創建的按鈕是不可點擊的

NewButton := TButton.Create(Self); 
    with NewButton do 
    begin 
     Parent := pnlWaiting; 
     Height := 40; 
     Width := 160; 
     Position.X := 20; 
     Position.Y := WaitingButtonY; 
     TextAlign := TTextAlign(1); 
     OnClick := WaitingButtonsClick; 
     Text := edtPlayerName.Text; 
     Enabled := True; 
     Visible := True; 
     Name := 'Waiting' + IntToStr(loop); 
    end; 
    WaitingButtons.AddObject(NewButton.Name, NewButton); 

按鈕創建罰款,但是垂直滾動框內出現,是完全不可點擊的。我添加了一個循環來遍歷WaitingButtons TStringList中包含的每個按鈕,告訴我它是否已啓用,並且確實表示它已啓用。

一旦我添加另一個按鈕,使用與上述完全相同的代碼,上一個按鈕突然可點擊,但新按鈕不可用。

這是什麼原因造成的?

+0

也許刷新pnlWaiting小組將幫助...只是一個想法,最有可能是猴子內的一些錯誤^ _^ – ComputerSaysNo

+0

當你點擊按鈕時,WaitingButtonsClick()會被調用嗎? –

回答

0

嘗試添加一個TAG作爲按鈕的ID。然後,當的onClick方法被調用句柄它像這樣:

procedure TForm1.WaitingButtonsClick(Sender: TObject); 
var 
id:Integer; 
begin 
    id := TButton(Sender).tag; 
end; 

並檢查這個職位更多信息如何添加組件動態:https://stackoverflow.com/a/20837752/2728408