Ich gehe mal von aus, dass du dein Panel schon dynamisch erstellt hast.
Dann gehe wie Folgt vor:
Delphi-Quellcode:
MeinDynamischesPanel := TPanel.create(Form1);
MeinDynamischesEdit := TEdit.create(MeinDynamischesPanel);
MeinDynamischesEdit.Parent := MeinDynamischesPanel; //kann man glaube ich auch weglassen
... und so für alle anderen Objekte.
Was dein OnMouseDown Ereignis betrifft:
Du musst eine Procedure mit folgenden Parametern in dein Formular einbinden:
Delphi-Quellcode:
...
public
Procedure MeinOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
...
dann die eigentliche Funktion
Delphi-Quellcode:
Procedure TForm1.MeinOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
... Quelltext
end;
Jetzt kannste diese Funktion für z.B. dein Panel benutzen:
Delphi-Quellcode:
...
MeinDynamischesPanel.OnMouseDown := MeinOnMouseDown;
Da du diese Procedure ja nun auch für alle anderen Panels nutzen kannst musst du in der Funktion selber noch zwischen deinen ganzen Panels unterscheiden:
Delphi-Quellcode:
Procedure TForm1.MeinOnMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Sender.Classname = 'TPanel' then
with TPanel(Sender) do
....
end;