To ma na myśli stworzenie od podstaw komponentu. Nie da się jaśniej chyba. W tym przypadku będzie
to TPanel, na którym pop[rzez kod musisz umieścić dynamicznie tworzone buttony i inne komponety, a
także poprzez kod dodać do nich obsługe potrzebnych zdarzeń jak na przykład OnClick. Można też o ile
Ci taki rozwiązanie pasuje stworzyć osobną formatkę i ją dynamicznie tworzyć wiele razy, ale ty pewnie
chcesz mieć ten panel wiele razy w jednym okienku to tak zrób, jak pisałem. I w konstruktorze Twojego
komponentu twórz odpowiednie obiekty na tym panelu. Poniżej masz dość prosty przykład takiego kodu
unit panelik;
interface
uses
Windows, Forms, Classes, StdCtrls, ExtCtrls;
type
TMojPanel = class(TPanel)
private
procedure BtnClick(Sender : TObject);
published
constructor Create(AOwner : TComponent); override;
end;
implementation
constructor TMojPanel.Create(AOwner : TComponent);
var
Btn : TButton;
begin
inherited Create(AOwner);
Left := 8;
Top := 10;
Height := 200;
Width := 400;
Btn := TButton.Create(Self);
with Btn do
begin
Parent := Self;
Left := 8;
Top := 10;
Height := 26;
Width := 100;
Name := 'Przycisk1';
Caption := 'Kliknij mnie';
OnClick := BtnClick;
end;
end;
procedure TMojPanel.BtnClick(Sender : TObject);
begin
MessageBox(Application.Handle, 'Kliknąłeś w przycisk!',
PChar(Application.Title), MB_ICONINFORMATION + MB_OK);
end;
end.
Później dodajesz w module głownym do sekcji uses moduł panelik i tworzysz takim na przykład kodem:
var
A : TMojPanel;
begin
A := TMojPanel.Create(Self);
A.Parent := Self;
A.Name := 'Panel1';
A.Caption := '';
end;
Jak widzisz banalne. Mam nadzieję, że wszystko jasne :)