Topic: получить (Sender) динамического компонента

не могу получить  (Sender) динамического компонента

var
quantity: integer =4;
pa:TdbImageDataBase;

procedure Form1_OnShow (Sender: TObject; Action: string);
begin
  paCreate;
end;

procedure paCreate;
var
i,j,n:integer = 0;
begin
    for j:=0 to quantity -1 do
    for i:=0 to quantity -1 do
    begin
       pa:=TdbImageDataBase.Create(Form1);
       pa.Parent:=Form1;
       pa.Name:='pa'+IntToStr(n);
       pa.Width:=200;
       pa.Height:=100;
       pa.Top:=5;
       pa.Left:=(200*n)+(5*n);
       pa.Visible:=True;
       pa.OnMouseDown:=@selectpa;
       n:=n+1;
    end;
end;

procedure selectpa (Sender: TObject; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
  showmessage(TdbImageDataBase(Sender).Name);
end;

что я делаю не так ? помогите

2 (edited by k245 2021-08-10 12:39:01)

Re: получить (Sender) динамического компонента

есть нюанс с обработчиком, точнее, с набором передаваемых параметров в процедуру.


Либо использовать такой боекомплект параметров


onMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer). 

Либо привязывать иначе:
     

       ...
       pa.Visible:=True;
       AssignEvents(pa);
       pa.dbOnMouseDown := 'selectpa';
       ...
Визуальное программирование: блог и телеграм-канал.

Re: получить (Sender) динамического компонента

k245 wrote:

есть нюанс с обработчиком, точнее, с набором передаваемых параметров в процедуру.

спасибо!!