• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы rrr
  • Дата начала
R

rrr

Хочу набросать на 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.
 
V

Vadik(R)

Видимо, ты не определил процедуру для самого движения прямоугольника. Надо её, во-первых, описать, а во-вторых - присвоить обработчик динамически созданному прямоугольнику, так же, как и ты присваиваешь имя.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!