Советы по Delphi

         

Дочерний по отношению к графическому компоненту...


...нет, нельзя. Тем не менее, вы можете ограничить действие любых обработчиков событий компонента, тем самым "не допуская" обработки ими щелчка мыши. Я так понял, Вы хотите иметь в своем распоряжении событие OnClick, которое происходит, когда пользователь щелкает на вашем рисованном треугольнике? Нет проблем. Нет необходимости перехватывать сообщения windows, TGraphicControl уже перехватывает наиболее важные (или даже все, не уверен).

Теперь есть два способа сделать это, я приведу ниже способ, которым пользуюсь я. У меня нет исходного кода VCL, поэтому я не берусь судить что лучше. Могу только предположить, что эта работа, выполненная с помощью VCL будет немного удобнее.

    procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;

procedure TThing.MouseDown...
begin
{Не координаты мыши в некотором private-свойстве} inherited MouseDown... end;

procedure TThing.Click
begin
if
YourHitTest(X,Y) then inherited Click; end;

Я немного сомневаюсь в последней процедуре, но это будет работать. Я думаю, из читающих этот совет найдется немало людей, которые могут предоставить более изящное решение. [001943]



Содержание раздела