Переопределить Метод Mousedown

rrr

Active member
03.03.2013
36
0
#1
Хочу набросать на panel много прямоугольников с полями и двигать их мышкой.

Объявляю тип:

type
TPost = class( TPanel)
LabelCode: TLabel;
LabelName: TLabel;
EditCode: TEdit;
EditName: TEdit;
procedure MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

Пишу процедуру (это тестовая, лишь бы отозвалась на мой клик):

procedure TPost.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
frmMain.StatusBar.SimpleText:='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
end;


По клику создаю прямоугольник (он честно появляется на панели)

TPost.Create(Self).Name := ('Post'+inttostr(nPanNumber) );

Присваиваю ему top, left, и прочие свойства. Тыкаю мышкой - процедура не вызывается. Ставил чекпойнт в дебаггере - таки не вызывается.
Что я делаю не так, подскажите, pls.
 

Vadik(R)

Well-known member
12.12.2007
469
0
#2
Видимо, ты не определил процедуру для самого движения прямоугольника. Надо её, во-первых, описать, а во-вторых - присвоить обработчик динамически созданному прямоугольнику, так же, как и ты присваиваешь имя.