Я пытаюсь создать пользовательскую кнопку из компонента TPanel. Для этого я предоставил переопределение для событий onmousedown и onmouseup (чтобы сделать некоторый рисунок) и использовал событие onclick для обработки кликов.
К сожалению, если я быстро нажимаю на свою панель, каждый второй щелчок «теряется», но я не могу понять, почему.
Даже самый простой пример в этом отношении неверен. Я создал новое приложение VCL, добавил список, одну панель и реализовал события следующим образом:
procedure TForm1.Panel1Click(Sender: TObject);
begin
listbox1.Items.Add('click');
end;
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
listbox1.Items.Add('mouse down');
end;
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
listbox1.Items.Add('mouse up');
end;
Результат выглядит следующим образом:
mouse down
click
mouse up
mouse down
mouse up
и так далее... Каждый второй щелчок игнорируется, но я понятия не имею, почему.
Кто-нибудь может объяснить это, пожалуйста?