Self

Adam Boduch

Self - wewnętrzny wskaźnik na obiekt

W definicji metod klasy słowo Self wskazuje na obiekt, w którym jest używane. Spójrz na definicję metody Button1Click:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Self.Caption := 'Nowy tytuł';

  Caption := 'Nowy tytuł #2';
end;

Taki kod skompiluje się prawidłowo, obie instrukcje są równoważne, słowo kluczowe Self można nazwać ukrytym elementem klasy, który zapewnia odwołanie zarówno do pól, metod czy właściwości.

Poniższy przykład realizuje dynamiczne utworzenie komponentu na formularzu, po kliknięciu w przycisk:

procedure TForm1.Button1Click(Sender: TObject);
var
  MyButton : TButton;
begin
  MyButton := TButton.Create(Self);
  MyButton.Parent := Self;
  MyButton.Caption := 'MyButton';
  MyButton.Left := 10;
  MyButton.Top := 10;
end;

W konstruktorze klasy TButton należy podać parametr, który określa komponent rodzicielski, na którym zostanie utworzona nowa kontrolka. Może to być albo formularz albo TPanel albo inny komponent zdolny do przechowywania w sobie innych kontrolek. W parametrze konstruktora umieszczono słowo Self, które wskazuje na obiekt, w którym umieszczony jest kod, czyli w tym wypadku - na obiekt Form1. Równie dobrze ten kod mógłby wyglądać tak:

procedure TForm1.Button1Click(Sender: TObject);
var
  MyButton : TButton;
begin
  MyButton := TButton.Create(Form1);
  MyButton.Parent := Form1;
  MyButton.Caption := 'MyButton';
  MyButton.Left := 10;
  MyButton.Top := 10;
end;

Zobacz też:

0 komentarzy