Komponent z kilku inych...

0

Witam, mam mały problem.

Chcę zrobić komponent, który będzie korzystał z kilku inych. Załóżmy dla uproszczenia, że ma to być panel z umieszczonym na nim Shape'em.

Żeby stworzyć komponent z panelu nie ma problemu - jako klasę macierzystą podaję TPanel. Ale co zrobić, żeby w jego wnętrzu znajdował się jeszcze Shape?

Drugi problem, który też pewnie później wystąpi, to jak zrobić, aby dało się na tym, komponencie umieszczać potem inne komponety (w czasie projektowania aplikacji)? Chodzi o to, żeby działał jak normalny panel, ale z otoczką z shape'a.

Jeśli ktoś może mi pomóc - to byłbym zobowiązany.

0

Jeśli dziedziczysz z TPanel, to drugi problem masz rozwiązany. A pierwszy: umieść obiekt klasy TShape jako prywatne pole Twojego komponentu i twórz go dynamicznie w konstruktorze, ustaw wszystkie wartości a zwolnij w destruktorze.

0

Jeśli będziesz tego komponentu używał tylko w tym programie to wykorzystaj Frame'a, będzie prościej i wygodniej 'konserwować' program.

0

Tak wygląda mój kod:

UNIT PanelForm;

INTERFACE

USES
  SysUtils, Classes, Controls, ExtCtrls, StdCtrls;

TYPE
  TPanelForm = class(TPanel)

  PRIVATE
    Ramka: TShape;
  protected

  public
    CONSTRUCTOR Create(AOwner : TComponent); override;
    DESTRUCTOR  Destroy; override;

  published

  END;

PROCEDURE Register;

IMPLEMENTATION

PROCEDURE Register;
BEGIN
  RegisterComponents('Samples', [TPanelForm]);
END;

CONSTRUCTOR TPanelForm.Create(AOwner: TComponent);
BEGIN
  inherited Create(AOwner);
  Ramka := TShape.Create(Self);
END;

DESTRUCTOR TPanelForm.Destroy;
BEGIN
  inherited Destroy;
END;

END.

Jednak po zainstalowaniu komponentu i ustawieniu go na formie, nadal nie widać w nim Shape'a. Nie pomagają również zabiegi w stylu ustawiania w konstruktorze właściwości Visible := True itp.

I co dalej?
Kombinuję, ale coś mi nie wychodzi.

0

A czy Shape czasem nie musi mieć ustawionego rodzica? .. [ Parent ]

0
Deti napisał(a)

A czy Shape czasem nie musi mieć ustawionego rodzica? .. [ Parent ]

Rodzica? OK, ale jak go przyporządkować, jeżeli wszystko jest tworzone dynamicznie???

0

Parent := ... ?

0
Parent:=Self;

Oto cały sekret.
Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1