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

Тема в разделе "Delphi - FAQ", создана пользователем rrr, 13 июн 2013.

  1. rrr

    rrr Active Member

    Регистрация:
    3 мар 2013
    Сообщения:
    36
    Симпатии:
    0
    Хочу набросать на 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.
     
  2. Vadik(R)

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Видимо, ты не определил процедуру для самого движения прямоугольника. Надо её, во-первых, описать, а во-вторых - присвоить обработчик динамически созданному прямоугольнику, так же, как и ты присваиваешь имя.
     
Загрузка...

Поделиться этой страницей