2012-11-19 85 views
2

我有一個是給用戶提供3個選項對話框,是,否,取消...
我改變是,沒有一個新的標題weapon1和武器2.我也改變了按鈕的寬度相匹配的寬度的新標題。但是如果新標題太長,按鈕就會超過一圈。我如何解決這個問題?如何在沒有按鈕重疊的情況下更改按鈕的大小?

Weapon1 := FMyPlayers.player[FGamePlay.chartoattackwith].Values['Attack1']; 
    Range1 := FMyPlayers.player[FGamePlay.chartoattackwith].Values['Range1']; 
    Weapon2 := FMyPlayers.player[FGamePlay.chartoattackwith].Values['Attack2']; 
    Range2 := FMyPlayers.player[FGamePlay.chartoattackwith].Values['Range2']; 
    with CreateMessageDialog('Please pick a weapon:', mtConfirmation, mbYesNoCancel) do 
     try 
      TButton(findcomponent('Yes')).Width := self.Canvas.TextWidth(' '+Weapon1+':'+range1+' '); 
      TButton(findcomponent('No')).Width := self.Canvas.TextWidth(' '+Weapon2+':'+range2+' '); 
      TButton(FindComponent('Yes')).Caption := Weapon1+':'+range1; 
      TButton(FindComponent('No')).Caption := Weapon2+':'+range2; 
     case ShowModal of 
      mrYes: AttackValue := '1'; 
      mrNo: AttackValue := '2'; 
      mrCancel: exit; 
     end; 
     finally 
     Free; 
    end; 
+0

Obiously的代碼

TButton(findcomponent('No')).Left := TButton(findcomponent('Yes')).Width + TButton(findcomponent('Yes')).Left; TButton(findcomponent('Cancel')).Left := TButton(findcomponent('No')).Width + TButton(findcomponent('No')).Left; Width := 2*TButton(findcomponent('Yes')).Left + TButton(findcomponent('Cancel')).Left + TButton(findcomponent('Cancel')).Width; 

這一部分,你也必須改變按鈕位置。使用'Left'屬性。 – jpfollenius

+0

我認爲它可能更多的那..它幾乎就像messagebox沒有增長足夠大的按鈕..?此外,標題的大小發生變化,我將如何使用相應的左側屬性。 –

+0

爲什麼使用FindComponent?更好地使用表單對象的字段。 –

回答

3

插入根據大衛·赫弗南

var 
No,Yes,Cancel:TButton; 

..... 
No := TButton(findcomponent('No')); 
Yes := TButton(findcomponent('Yes')); 
Cancel := TButton(findcomponent('Cancel')); 

No.Left := Yes.Width + Yes.Left; 
Cancel.Left := No.Width + No.Left; 
Width := 2 * Yes.Left + Cancel.Left + Cancel.Width; 
+1

完美!完全符合我的希望! –

+2

請將這些FindComponent返回值讀入一些局部變量。 –

相關問題