半夜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;
這樣就解決了這個問題;