Опитвам се да създам персонализиран бутон от компонент на 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
и т.н... Всяко второ кликване се пренебрегва, но нямам представа защо.
Може ли някой да обясни това, моля?