Próbuję utworzyć niestandardowy przycisk z komponentu TPanel. W tym celu udostępniłem nadpisanie dla zdarzeń onmousedown i onmouseup (w celu wykonania rysunków) i wykorzystałem zdarzenie onclick do obsługi kliknięć.Nie można przechwycić wszystkich kliknięć podczas używania zdarzeń onmousedown, onmouseup i click
Niestety, jeśli szybko kliknę mój panel, każde inne kliknięcie zostanie "utracone", ale nie mogę zrozumieć, dlaczego.
Nawet najłatwiejszy z przykładów zawodzi w tym względzie. I stworzył nową aplikację VCL dodał listbox, jeden panel, a wydarzenia realizowane w następujący sposób:
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;
Wynik jest następujący:
mouse down
click
mouse up
mouse down
mouse up
etcetera ... Każda sekunda kliknięcia pominięte , ale nie mam pojęcia dlaczego.
Czy ktoś może to wyjaśnić?