半夜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;

image

可以看到通过代码,让其选中 或 取消选中 都会触发它的 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;

这样就解决了这个问题;

image

posted on 2024-11-02 02:45  del88  阅读(7)  评论(0编辑  收藏  举报