델파이 Self
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.
'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 |
댓글