본문 바로가기
Delphi/문법

델파이 Self

by MonoSoft 2023. 9. 20.
728x90
반응형

델파이 Self

728x90

 

 

 

 

 

Self

일반적으로 method가 있는 object (예: Form에는 Create method가 있다)의 reference 이다.

 

객체 지향 프로그래밍에서

"self"는 주로 현재 객체(인스턴스)를 가리키는 특별한 키워드 또는 식별자이다.

 

일반적으로 method가 있는 object (예: Form에는 Create method가 있다)의 reference 이다.

 

Delphi에서는 "self" 대신에 "Self"라는 예약어를 사용합니다.

 

"Self"를 사용하여 현재 객체의 속성 및 메서드에

접근하거나 다른 객체와 구분하기 위해 사용됩니다.

 

예를 들면,

 

Button1 := TButton.Create(Self);

 

위의 예와 같은 경우에 Self는 Button의 Owner인 Form을 가리킨다.

 

Form 내에서 정의한 method는 그 Form 내에서 쓸 때 Form의 이름을 붙일 필요가 없다.

 

마치 다음의 코드를 쓴것과 동일한 효과를 나타낸다.

 

With Self do

begin

....

end;

 

폼안에서 다른 폼을 생성하고자 할 때

Form 자체의 Create method를 이용하는 방법은 보통 다음과 같이 쓴다.

 

1) Form1 := TForm1.Create(Self);

2) Form2 := TForm2.Create(Application);

 

'1)'과 '2)'는 Owner가 다르다.

따라서 위의 코드가 'MainForm1' 내의 코드라고 가정한다면,

'1)'은 MainForm1 이 Close 될 때 Owner가

MainForm 이므로 MainForm보다 먼저 Close된다.

 

그러나

 

'2)'는 Owner가 Application 이므로 프로그램이

끝날때 까지 저절로 Close 되지 않는다.

(* Applicatin은 다음에 설명합니다. ^^;)

 

심심하면 Form의 Parent 를 Self로 지정해 보라.

그러면 OS 수준의 Error를 경험하게 될것이다.

(^^;) - Class method에서도 Self를 쓰는데,

조금 의미가 다르나, 본인이 잘 모르므로 생략한다.^^;

 

추가 샘풀

unit MainUnit;

 

interface

 

uses

  SysUtils;

 

type

  TMyClass = class

  private FValue: Integer;

  public constructor Create;

  procedure SetValue(NewValue: Integer);

  function GetValue: Integer;

end;

 

implementation

 

constructor TMyClass.Create;

begin

  FValue := 0;

end;

 

procedure TMyClass.SetValue(NewValue: Integer);

begin

// Self를 사용하여 현재 객체의 속성 설정

Self.FValue := NewValue;

end;

 

function TMyClass.GetValue: Integer;

begin

  // Self를 사용하여 현재 객체의 속성 반환

  Result := Self.FValue;

end;

 

end.

 

program DelphiSelfExample;

 

uses  MainUnit;

 

var

  MyObject: TMyClass;

begin

  MyObject := TMyClass.Create;

  MyObject.SetValue(42); // 현재 객체(MyObject)의 속성 설정

  Writeln('Value: ', MyObject.GetValue); // 현재 객체(MyObject)의 속성 출력

  MyObject.Free;

end.

728x90
반응형

'Delphi > 문법' 카테고리의 다른 글

델파이 Parameter  (0) 2023.09.22
델파이 Application  (0) 2023.09.21
델파이 Owner 와 Parent  (0) 2023.09.13
델파이 포인터 (Pointer) 11편  (0) 2023.08.24
델파이 포인터 (Pointer) 10편  (0) 2023.08.23

댓글