半夜2点失眠,继续写博客。。。。。
例子如下:
procedure TForm4.btn1Click(Sender: TObject);
begin
CheckBox1.Checked := True;
ToggleSwitch1.State := tssOn;
end;
procedure TForm4.btn2Click(Sender: TObject);
begin
CheckBox1.Checked := false;
ToggleSwitch1.State := tssOff;
end;
procedure TForm4.CheckBox1Click(Sender: TObject);
begin
ShowMessage('check box on click');
end;
procedure TForm4.ToggleSwitch1Click(Sender: TObject);
begin
ShowMessage('ToggleSwitch box on click');
end;
可以看到通过代码,让其选中 或 取消选中 都会触发它的 onclick事件,这样很不好,容易导致 循环,我们只是想简单的 通过代码让其选中,而不是 出发它的 onclicck,可以把onclick的代码 放到其 onmouseup上去,这样就简单的 解决了这个问题;
procedure TForm4.CheckBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// on click 的逻辑 放到 onmouseup里,不影响 onclick的效果,达到代码里可以直接设置的目的
ShowMessage('check box on click');
end;
procedure TForm4.ToggleSwitch1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
// on click 的逻辑 放到 onmouseup里
ShowMessage('ToggleSwitch box on click');
end;
这样就解决了这个问题;
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/p/18521556