Writing Scripts
스크립트 작성하기
스크립트를 작성할 때 적용되는 몇 가지 필수 개념과 용어가 있습니다:
- 프로세스는 스크립트에서 명령을 실행할 수 있는 명령 문자열입니다.
- 컴포넌트는 도구 팔레트 패널에 있는 시각적 제어 객체로, 스크립트 폼에 드래그 앤 드롭하여 디자인을 조작할 수 있습니다.
- 스크립트 폼에 배치된 컴포넌트는 메소드, 속성, 그리고 이벤트를 가지고 있습니다.
- 객체 인터페이스는 스크립트에서 디자인 문서의 데이터를 추출하고 수정하는 데 사용할 수 있는 특별한 객체 인터페이스입니다.
스크립트 언어
기본 스크립팅 언어는 DelphiScript (*.pas)로 설정되어 있습니다. 스크립팅 엔진 자체는 Embarcadero Delphi로 작성되었으며, 도구 팔레트 패널은 Delphi의 VCL(Visual Component Library)을 기반으로 합니다.
DelphiScript 유닛
간단하고 기본적인 스크립팅 연습은 새 프로젝트와 스크립트 파일을 생성함으로써 완료될 수 있습니다. 프로젝트와 스크립트 파일이 DelphiScript 언어로 설정되어 있다고 가정할 때, 아래와 같이 간단한 'Hello World' 스크립트를 입력할 수 있습니다.
Procedure ShowAMessage;
Var
DefaultMessage;
Begin
DefaultMessage := 'Hello World!';
ShowMessage(DefaultMessage);
End;
절차 내에는 DefaultMessage 변수에 의해 정의된 "Hello World" 메시지와 함께 대화 상자를 여는 표준 DelphiScript ShowMessage 함수가 있습니다.
스크립트에서 모든 변수가 변형 타입이기 때문에 스크립트에서 DefaultMessage 변수 타입을 정의할 필요가 없습니다.
스크립트 실행하기
스크립트 중 하나를 실행하려면 메인 메뉴에서 파일 » 스크립트 실행을 선택한 다음 실행할 항목 선택 대화 상자에서 사용 가능한 스크립트 절차를 선택하십시오. 버전이 실행되면 메시지를 표시하는 대화 상자가 열립니다.

파일 » 스크립트 실행 메뉴에서 간단한 HelloWorld 스크립트 단위를 실행하는 모습.
실행 명령 자체와 함께, 드롭다운 실행 메뉴는 스크립트 제어 및 디버깅 명령의 범위를 제공합니다.
실행 명령이 처음 선택되면, 스크립트의 메인 절차(ShowAMessage가 이 경우에 해당)를 지정할 수 있게 하는 실행할 항목 선택 대화 상자가 열립니다. 한 번 설정하면, 실행 명령을 사용하여 편집기에서 스크립트를 반복해서 쉽게 실행할 수 있습니다. 다른 절차로 설정을 변경하거나 스크립트 프로젝트를 닫았다 다시 열어 설정을 지우려면 실행 » 프로젝트 시작 절차 설정을 사용하세요.
실행 중인 스크립트를 중지하려면 중지 버튼, 메인 메뉴에서 실행 » 중지를 선택하거나 Ctrl+F3 단축키를 사용하세요.
DelphiScript 폼
새 스크립트 프로젝트를 설정한 후, 프로젝트에 새 스크립트를 추가합니다.
현재 포커스된 폼이나 그 구성 요소의 속성 값을 보고 편집하려면 오브젝트 인스펙터 패널을 엽니다. 오브젝트 인스펙터 패널은 폼의 속성을 변경하고 현재 폼과 관련된 이벤트 핸들러에 코드를 삽입하는 데 사용됩니다.

오브젝트 인스펙터 패널에서 스크립트 폼의 창 구성 및 속성이 보여집니다.
스크립트 양식에는 문서 하단에 코드 탭과 양식 탭이 두 개 있음을 유의하세요.
코드 탭에는 위에 표시된 이벤트 핸들러와 절차가 포함되어 있으며, 양식 탭은 대화 상자를 나타내고 컨트롤 및 관련 이벤트 핸들러가 있습니다. 두 탭 사이를 전환하려면 탭을 사용하거나 F12 단축키를 사용하세요.
오브젝트 인스펙터 패널을 사용하면 활성 스크립트 폼의 컴포넌트들의 속성과 이벤트를 조사하고 편집할 수 있습니다. 디자인 편집기 창에서 활성 스크립트 폼의 단일 컴포넌트를 클릭하면 해당 컴포넌트가 선택되고 오브젝트 인스펙터 패널에 연결된 속성이 표시됩니다. 또는, 패널 상단의 드롭다운 필드를 사용하여 현재 활성 폼에 배치된 모든 컴포넌트 목록에서 선택할 수 있습니다. 폼 자체도 포함됩니다.

폼 대화 상자와 그 동작을 구성하기 위해 오브젝트 인스펙터 패널을 사용하세요.
정보는 속성과 이벤트의 두 탭에 걸쳐 표시됩니다:
- 패널의 속성 탭은 선택된 구성 요소에 대한 모든 속성 속성을 나열합니다. 사용 가능한 속성 목록은 현재 검사 중인 구성 요소의 특정 유형에 따라 다릅니다. 속성은 객체의 보이는 행동이나 작업에 영향을 미치는 객체의 특성입니다. 예를 들어, 행동 하위 카테고리의 Visible 속성은 객체가 배치된 스크립트 폼에 표시되는지 여부를 결정합니다. 구성 요소의 속성은 필요에 따라 수정할 수 있습니다. 속성 옆의 필드 안으로 클릭하고 직접 입력하거나 체크 박스를 토글하거나 적절하게 드롭다운에서 항목을 선택하세요.
- 패널의 이벤트 탭은 현재 선택된 구성 요소가 반응할 수 있는 모든 이벤트의 목록을 제공합니다. 다시 말하지만, 사용 가능한 이벤트 목록은 현재 검사 중인 구성 요소의 특정 유형에 따라 다릅니다. 양식의 버튼이 클릭되는 등의 이벤트가 발생하면 스크립트는 코드에 이벤트 처리 절차가 정의되어 있는 경우 적절한 조치를 취합니다. 이러한 유형의 절차를 이벤트 핸들러라고 합니다.
FormName.EventName. 그러면 이벤트 처리 절차의 기본 코드가 메인 스크립트 코드에 추가되며, 디자인 공간에서 활성 탭으로 설정됩니다. 이벤트가 발생하여 실행 중인 스크립트에 의해 감지될 때 원하는 반응을 제공하도록 이벤트 처리 절차의 '채우기' 부분을 코딩할 수 있습니다.
패널의 하단 부분은 현재 선택된 속성이나 이벤트에 대한 요약 설명을 제공합니다(해당하는 경우).
이 폼 스크립트의 경우, 오브젝트 인스펙터 패널에서 폼의 캡션 속성을 HelloWorldForm에서 Hello World!로 변경하세요. 이 문자열은 아래에 보여진 예제 이벤트 핸들러 및 절차 코드에서 사용된 것과 일치합니다.
컨트롤 추가 및 구성
기본 폼이 구성되면, 도구 팔레트 패널에 접근하여 필요에 따라 대화 상자에 컨트롤을 추가할 수 있습니다. Delphi의 시각적 구성 요소 라이브러리를 기반으로 하는 도구 팔레트는 창 컨트롤의 다양한 범위를 제공하는 구성 요소 팔레트로, 구성 요소 카테고리로 구성되어 있습니다(자세한 내용은 스크립팅 그래픽 구성 요소 및 구성 요소 카테고리 페이지를 참조하십시오).

도구 팔레트 패널 섹션은 영역 제목 탭을 사용하여 확장하거나 축소할 수 있습니다. 패널 상단의 컨트롤, 카테고리 이름, 그리고 마우스 오른쪽 버튼 메뉴를 사용하여 패널의 컨트롤 표시를 구성하세요: 카테고리 확장/축소, 팔레트 항목의 표시 방식 변경 등. 모든 패널에서 사용되는 컴포넌트는 Borland Delphi Visual Component Library의 `TComponent`에서 파생됩니다.
'Hello World' 프로젝트의 대화형 버전에서는 폼에 표시와 닫기 두 개의 버튼이 있습니다. 도구 팔레트 패널의 표준 영역에서 TButton을 클릭하세요.
이 작업을 두 번 수행하여 폼에 두 개의 버튼을 배치합니다. 하나의 버튼은 별도의 대화 상자에서 'Hello World!' 메시지를 표시하는 데 사용되고, 두 번째 버튼은 메인 대화 상자를 닫는 데 사용됩니다.
패널의 모든 컴포넌트는 관련된 속성, 메서드, 이벤트를 가지고 있습니다. 여기서:
- 속성은 객체의 가시적 행동이나 작업에 영향을 미치는 객체의 특성입니다. 예를 들어,
Visible속성은 객체가 스크립트 폼에서 볼 수 있는지 여부를 결정합니다. - 메서드는 항상 객체와 연관되어 있으며 그 객체의 행동을 정의하는 절차입니다.
- 이벤트는 스크립트에 의해 감지된 행동이나 발생입니다. 스크립트에서 프로그래머는 마우스 클릭과 같은 특정 이벤트를 캡처하도록 설계된 각 이벤트 핸들러에 대한 코드를 작성합니다.
구성 요소의 속성과 이벤트는 배치 후 객체 검사기 패널을 사용하여 조사하고 수정할 수 있습니다.
객체 검사기 패널을 사용하면 두 버튼 구성의 기본 이름과 캡션을 변경할 수 있습니다.
첫 번째 버튼 이름을bDisplay로 설정하고 그 캡션을 Display로 설정하세요. 두 번째 버튼 이름을 bClose로 설정하고 그 캡션을 Close로 설정하세요. 이는 아래에 제시된 예제 이벤트 핸들러 코드와 일치하도록 하기 위함입니다.

컴포넌트를 선택하고 Object Inspector 패널에서 그 속성을 편집하세요.
이벤트 핸들러 코드는 폼에 있는 컨트롤을 직접 참조하여 구성할 수 있습니다. 이 예제에서는 Display 버튼이 기존 폼 위에 ShowMessage 대화 상자를 표시하도록 하고, Close 버튼 액션은 이 폼을 닫습니다.
이벤트 핸들러 코드
Display 버튼을 더블 클릭하면 코드 뷰에서 폼이 열리고 해당 이벤트 핸들러의 스켈레톤 코드가 생성됩니다. 또는, 버튼을 선택한 다음 Object Inspector 패널에서 Events 탭을 선택합니다. 패널에서 OnClick 이벤트를 더블 클릭하면 위와 같이 코드 뷰가 열립니다. 코드 뷰 내에서, 아래 목록에 표시된 것처럼 이벤트 핸들러에 ShowMessage 문을 포함시킬 수 있습니다.
Close(폼) 문을 적용하는 OnClick 이벤트를 생성함으로써 정의될 수 있습니다:
```delphi
절차 THelloWorldForm.bCloseClick(발신자: TObject);
시작
Close;
끝;
```
이벤트 핸들러가 정의되었으므로, 소프트웨어에서 대화 상자를 호출할 때 시작점으로 사용될 스크립트 내의 절차가 필요합니다. 이는 코드 스크립트의 끝에 추가됩니다.
양식 이름이 HelloWorldForm이고 절차 이름이 RunHelloWorld인 것에 주목하세요 — 같은 스크립트에서 양식 이름 충돌을 피하기 위해 고유한 양식 이름을 가지는 것이 중요합니다.
```
절차 RunHelloWorld;
시작
HelloWorldForm.ShowModal;
끝;
```
스크립트는 저장한 다음 메인 메뉴(**파일» 스크립트 실행**)에서 `RunHelloWorld` 절차 항목을 실행하여 HelloWorldDialog 항목 아래에서 실행할 수 있습니다.
또는, 절차를 실행 명령/버튼에 할당할 수 있으며, 이는 실행 » 시작 프로젝트 절차 설정 메뉴를 통해 이루어집니다.

HelloWorld 폼 스크립트를 실행하는 모습, 여기서 폼의 디스플레이 버튼이 ShowMessage 대화 상자를 활성화합니다.
오브젝트 인스펙터 패널을 사용하면 폼 유닛의 속성과 이벤트를 쉽게 변경할 수 있습니다. 예를 들어, 작업 공간에서 폼의 위치를 변경하려면 패널을 사용하여 폼의 위치 속성에 대한 poScreenCenter 값을 변경하십시오. 스크립트를 실행할 때 대화 상자는 데스크탑 화면의 중앙에 배치됩니다.
절차 호출하기
위에서 언급했듯이, 프로젝트 내의 모든 스크립트(동일한 언어 세트를 사용하는)는 전역 변수와 절차에 접근할 수 있으므로 한 스크립트의 절차가 프로젝트의 다른 스크립트에 있는 다른 절차를 호출할 수 있습니다.
이는 HelloWorld 예제 프로젝트에 추가된 ShowAParametricMessage 코드 섹션을 통해 보여줄 수 있습니다:
Procedure ShowAParametricMessage(S : String);
Var
DefaultMessage;
Begin
DefaultMessage := 'Hello World!';
If S = '' Then ShowMessage(DefaultMessage)
Else ShowMessage(S);
End;
이는 ShowAParametricMessage 절차에 전달될 수 있는 문자열 변수 'S'를 설정합니다.
ShowMessage 대화 상자 함수를 사용하여 표시되며, 간단한 If-Then-Else 방법은 문자열이 비어 있으면 기본 'Hello World!' 메시지가 표시되도록 합니다.
이것을 실제로 보려면 예제 프로젝트(HelloWorld.PrjScr)를 열고 아래와 같이 HelloWorldDialog 스크립트(HelloWorld 스크립트가 아님)에 회색으로 강조 표시된 줄을 추가하세요.
```
...
절차 THelloWorldForm.bDisplayClick(보낸사람: TObject);
시작
Showmessage('Hello World!');
끝;
절차 THelloWorldForm.bCloseClick(보낸사람: TObject);
시작
ShowAParametricMessage('Goodbye World');
닫기;
끝;
절차 RunHelloWorld;
시작
HelloWorldForm.ShowModal;
끝;
...
```
HelloWorldDialog 스크립트가 실행되고 닫기 버튼이 클릭되면, HelloWorld 스크립트에서 전역 ShowAParametricMessage 절차가 호출됩니다.

HelloWorld 스크립트에서 HelloWorldDialog 스크립트로 호출되는 매개 변수 절차입니다.
호출은 'Goodbye World' 메시지 문자열을 ShowAParametricMessage 절차에 전달하므로, 이 메시지는 폼이 닫히기 전에 닫기 버튼을 클릭할 때 표시됩니다.

위에 표시된 스크립트 호출은 HelloWoldDialog 폼 닫기 절차에 지정된 메시지를 삽입합니다. 전달된 문자열 매개변수가 비어 있으면,
ShowAParametricMessage(''), ShowAParametricMessage 절차에서 정의된 대로 기본 'Hello World!' 메시지가 표시됩니다.
스크립트 작성 및 디버깅 과정을 간소화하는 데 도움이 되는 단축키 목록은 스크립트 편집기 도구 페이지를 참조하세요.
코드 탐색기 패널을 사용한 스크립트 식별자 탐색
코드 탐색기 패널은 활성 스크립트 문서에서 사용되는 모든 식별자(변수, 함수, 절차)의 시각적 요약을 제공합니다.

코드 탐색기 패널
패널에 표시되는 식별자 정보는 다음과 같은 최상위 폴더 아래에 그룹화됩니다:
-
절차 및 함수 - 활성 스크립트 문서에 선언된 모든 절차와 함수를 포함합니다. 각 절차/함수에 대해, 절차/함수에 전달된 매개변수나 그 절차/함수에 로컬인 변수도 함께 나열됩니다.
-
변수 - 활성 스크립트 문서에 선언된 모든 전역 변수를 포함합니다.
프로시저/함수에 대해 지역 변수가 선언되면, 해당 프로시저/함수 아래의 변수 하위 폴더에 나열됩니다. 다양한 식별자를 구별하기 위해 고유한 아이콘이 사용됩니다:
|
|
절차 |
|
|
함수 |
|
|
절차/함수 매개변수 |
|
|
변수(지역 또는 전역) |
)
)





