我已經創建了一個帶有2個單選按鈕的表單(名稱:SubForm)。在任何單選按鈕上單擊另一個表單(名稱:MainForm)將顯示。在SubForm.OnShow
事件中,我已經設置了radiobutton1.checked:= False; radiobutton2.checked:= False;
但是子窗體將顯示爲單選按鈕1或單選按鈕2。在Delphi 7中的FormShow問題
任何想法爲什麼選中的財產未設置爲False
?
我已經創建了一個帶有2個單選按鈕的表單(名稱:SubForm)。在任何單選按鈕上單擊另一個表單(名稱:MainForm)將顯示。在SubForm.OnShow
事件中,我已經設置了radiobutton1.checked:= False; radiobutton2.checked:= False;
但是子窗體將顯示爲單選按鈕1或單選按鈕2。在Delphi 7中的FormShow問題
任何想法爲什麼選中的財產未設置爲False
?
首先關於是否使用無線電組:如果多於一個單選按鈕具有相同的父節點,則該父節點將自動作爲無線電組,無論您是否使用TRadioGroup組件。因此,具有相同父母的單選按鈕的行爲就像他們應該這樣做:沒有或只能選擇一個。其次,將一組單選按鈕重置爲未選中/未選中狀態是完全有效的。最近的例子見default radio option of edit rejection dialogue。
我轉載了你的問題,但我沒有解釋。會發生什麼情況是,當您再次顯示表格(而不是再次重新創建)時,那麼焦點控件仍然是該單選按鈕。該焦點以某種方式防止改變選中的狀態。 任何人有任何想法爲什麼?我無法在VCL源代碼中找到它。
解決方法是散焦所選的單選按鈕。這可以通過以下三種方式進行,按優先順序:
焦點首先出現在選項卡順序列表控制(這是很好的做法反正):
procedure TSubForm.FormShow(Sender: TObject);
begin
SelectFirst;
RadioButton1.Checked := False;
RadioButton2.Checked := False;
end;
但是當單選按鈕是第一控制中,然後將焦點設置到窗體本身:
SetFocus;
RadioButton1.Checked := False;
...
或者焦點設置到任何其他控制的情況下是有意義的:
OKButton.SetFocus;
RadioButton1.Checked := False;
...
gr8的解釋和確切的解決方案...謝謝NGLIN n其他人也.. – Nalu
您使用的是什麼版本的Delphi?德爾福2010年(我不知道以前的版本)允許你有所有單選按鈕未選中。 – LightBulb
對不起忘了提及..我使用Delphi 7. – Nalu
默認情況下,沒有RadioButtons被選中。然後,以獨佔方式檢查單選按鈕:這是單選按鈕的標準行爲 - 只能一次檢查一個。所以我無法重現Delphi 7的任何問題。你的代碼中應該有一些東西,或者你猜測你的單選按鈕有一些錯誤的行爲。嘗試使用*新形式*創建*新應用程序*,以便重現問題,然後在此處發佈代碼和確切行爲,以便重現。 –