【发布时间】:2016-02-14 09:19:55
【问题描述】:
在显示该表单之前,我在第二个表单上设置了两个单选按钮的 Checked 属性。每次单击按钮以设置 Checked 属性并显示我反转(“NOT”)每个单选按钮的 Checked 的表单。然后在显示表单后,可以清楚地看到单选按钮发生的动画(已更改的已检查属性)。它不会在第一次运行时发生,而是在表单的每个后续显示中发生。
我想阻止动画,只是让单选按钮在显示表单时显示新设置的选中状态。有办法吗?
将单选按钮放在禁用的面板上或在设置 Checked 之前使其不可见是行不通的。
表格1:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses Unit2;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.RadioButton1.Checked := not Form2.RadioButton1.Checked;
Form2.RadioButton2.Checked := not Form2.RadioButton1.Checked;
Form2.Show;
end;
Form1 DFM:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 81
ClientWidth = 249
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 36
Top = 24
Width = 157
Height = 25
Caption = 'Set Radios and Show Form2'
TabOrder = 0
OnClick = Button1Click
end
end
表格2:
type
TForm2 = class(TForm)
Button1: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Hide;
end;
end.
Form2 DFM:
object Form2: TForm2
Left = 0
Top = 0
Caption = 'Form2'
ClientHeight = 131
ClientWidth = 176
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 44
Top = 90
Width = 75
Height = 25
Caption = 'Hide'
TabOrder = 0
OnClick = Button1Click
end
object RadioButton1: TRadioButton
Left = 38
Top = 20
Width = 113
Height = 17
Caption = 'RadioButton1'
TabOrder = 1
end
object RadioButton2: TRadioButton
Left = 38
Top = 44
Width = 113
Height = 17
Caption = 'RadioButton2'
TabOrder = 2
end
end
【问题讨论】:
-
您为什么要以这种方式选中和取消选中您的单选按钮?您确实知道单选按钮的目的是能够简单地选中一个,其余的将自动取消选中。但是由于您的代码已经手动执行此操作,因此您可能希望将这些单选按钮替换为复选框。您已经有代码可以在它们之间切换它们的选中状态。与单选按钮不同的复选框没有任何动画。
-
代码是一个实验,绝不是项目的一部分,也不是我会在项目中使用的东西。设置它是为了查看动画的行为方式,这就是我偶然发现它的方式。我想知道“问题”是否有某种解决方法
-
我是这么认为的,因此我只发表了评论。无论如何,我认为不可能完全禁用单选按钮动画,因为它似乎只是普通胜利控制的包装。因此控制是否动画是由 Windows 自己完成的。
标签: delphi