VBScript 양식 구성 요소 사용

VBScript 폼에서 컴포넌트 사용하기

폼과 컴포넌트는 Embarcadero Delphi™의 Visual Component Library(VCL)를 기반으로 하지만, VBScript를 사용할 때도 Altium Designer의 Delphi 기반 Tool Palette를 사용하여 폼에 컨트롤을 배치합니다. 또한 Altium Designer에서 폼/컴포넌트가 Delphi에 뿌리를 두고 있더라도, 이벤트 핸들러는 생성되며 코드는 VBScript 언어로 작성됩니다.

컴포넌트 개요

스크립팅 시스템은 두 가지 유형의 컴포넌트를 처리합니다. 시각적(Visual) 컴포넌트와 비시각적(Non-visual) 컴포넌트입니다. 시각적 컴포넌트는 사용자 인터페이스를 구성하는 데 사용되며, 비시각적 컴포넌트는 Timer, OpenDialog, MainMenu 컴포넌트가 제공하는 기능처럼 다양한 작업에 사용됩니다. 예를 들어 비시각적 Timer 컴포넌트는 예약된 간격으로 특정 코드를 활성화하는 데 사용되며 사용자에게는 절대 보이지 않습니다. Button, Edit, Memo 컴포넌트는 시각적 컴포넌트로, 사용자가 볼 수 있습니다.

두 유형의 컴포넌트는 설계 시점에는 모두 나타나지만, 비시각적 컴포넌트는 런타임에는 보이지 않습니다. Tool Palette 패널의 컴포넌트는 객체 지향이며 다음 세 가지 항목을 가집니다:

  • 속성
  • 이벤트
  • 메서드

property는 객체의 가시적 동작 또는 이 객체의 동작(연산)에 영향을 주는 객체의 특성입니다. 예를 들어 Visible 속성은 이 객체가 스크립트 폼에서 보일 수 있는지 여부를 결정합니다.

event는 스크립트가 감지한 동작 또는 발생 사건입니다. 스크립트에서 프로그래머는 마우스 클릭과 같은 특정 이벤트를 포착하도록 설계된 각 이벤트 핸들러에 대한 코드를 작성합니다.

method는 항상 객체와 연관된 프로시저로, 해당 객체의 동작을 정의합니다.

모든 스크립트 폼에는 하나 이상의 컴포넌트가 있습니다. 컴포넌트는 보통 정보를 표시하거나 사용자가 어떤 동작을 수행할 수 있게 합니다. 예를 들어 Label은 고정 텍스트를 표시하는 데 사용되고, Edit 박스는 사용자가 데이터를 입력할 수 있게 하며, Button은 동작을 시작하는 데 사용할 수 있습니다.

어떤 조합의 컴포넌트든 폼에 배치할 수 있으며, 스크립트가 실행 중(런타임)일 때 사용자가 이들과 상호작용할 수 있습니다. 사용자가 버튼을 클릭하거나 Edit 박스의 텍스트를 변경했을 때 어떤 일이 일어날지 결정하는 것은 스크립트 프로그래머의 몫입니다.

스크립팅 시스템은 스크립트용 단순 또는 복잡한 사용자 인터페이스를 만들기 위한 다양한 컴포넌트를 제공합니다. 폼에 배치할 수 있는 모든 컴포넌트는 Tool Palette panel에서 찾을 수 있습니다.

폼에 컴포넌트를 배치하려면 Tool Palette 패널에서 해당 아이콘을 찾아 더블클릭합니다. 그러면 기본 위치와 기본 너비/높이로 활성 폼에 컴포넌트가 배치됩니다. 대부분의 컴포넌트의 시각적 표현은 연관된 속성 세트에 의해 결정됩니다.

기본 위치와 크기(너비-높이)로 배치된 컴포넌트는 마우스를 사용하거나 Object Inspector 패널을 통해 크기 조정 또는 위치 변경을 할 수 있습니다. 컴포넌트를 폼에 드롭하면 스크립팅 시스템이 컴포넌트를 사용하는 데 필요한 기본 코드를 자동으로 생성하고 스크립트 폼을 업데이트합니다. 폼에서 컴포넌트가 동작하도록 하려면, 남은 작업은 속성을 설정하고 이벤트 핸들러에 코드를 넣고 필요에 따라 메서드를 사용하는 것입니다.

스크립트 폼 설계하기

스크립트 폼은 Altium Designer 환경 내에서 사용자와 상호작용하도록 설계됩니다. 스크립트 폼 설계는 Altium Designer에서의 비주얼 개발 핵심입니다.

스크립트 폼에 배치된 각 컴포넌트와 설정된 모든 속성은 폼을 설명하는 파일(*.dfm 파일)에 저장되며, 연관된 스크립트 코드(*.vbs 파일)와 관계를 가집니다. 따라서 각 스크립트 폼마다 *.vbs 파일과 이에 대응하는 *.dfm 파일이 존재합니다.

스크립트 폼과 그 컴포넌트로 작업할 때, 속성은 Object Inspector 패널을 사용해 접근하고 수정할 수 있습니다. Shift-클릭으로 여러 컴포넌트를 선택하거나, 스크립트 폼에서 컴포넌트들 주위로 선택 사각형을 드래그하여 여러 개를 선택할 수 있습니다. 스크립트 폼의 제목은 Object Inspector 패널의 Caption 속성에 매핑됩니다.

새 스크립트 폼 만들기

스크립트 프로젝트가 열려 있는 상태에서 Projects 패널에서 프로젝트를 우클릭하고 컨텍스트 메뉴에서 Add New to Project 다음 VB Script Form 항목을 선택합니다. 기본 EditScript1.vbs name으로 새 스크립트 폼이 생성됩니다. 또는 *.PrjPCB 프로젝트에서 File » New » Script Files » VB Script Form 명령을 선택합니다.

스크립트 폼 표시하기

스크립트 폼이 Altium Designer에서 실행될 때 폼을 표시하는 루틴이 스크립트에 있어야 합니다. 이 루틴 안에서 폼에 대해 ShowModal 메서드가 호출됩니다. 스크립트 폼의 ShowModal 메서드가 올바르게 동작하려면 폼의 Visible 속성을 false(체크 해제)로 설정해야 합니다.

ShowModal 예제

Sub RunDialog
  DialogForm.ShowModal
End Sub

위의 ShowModal 예제는 스크립트에서 RunDialog 대화상자를 호출할 때 스크립트 폼을 표시하는 간단한 방법입니다. DialogForm.ShowModal 메서드가 호출되기 전에 DialogForm 객체의 컴포넌트에 값을 할당할 수 있다는 점에 유의하세요.

아래에 표시된 ModalResult 예제는 더 복잡합니다. 뒤쪽 메서드들은 스크립트 폼의 버튼에 사용됩니다. 스크립트 메서드는 사용자가 OK 또는 Cancel 버튼 중 하나를 클릭하면 대화상자가 종료되도록 하며, ShowModal 메서드에서 각각 mrOk 또는 mrCancel를 반환합니다.

ModalResult Example

sub bOKButtonClick(Sender)
  ModalResult := mrOK
end sub
 
sub bCancelButtonClick(Sender)
  ModalResult := mrCancel
end sub
 
sub RunShowModalExample
  'Form Visible property must be false for ShowModal to work properly.
  If Form.ShowModal = mrOk     Then ShowMessage("mrOk")
  If Form.ShowModal = mrCancel Then ShowMessage("mrCancel")
end sub

위와 같은 동작은 이벤트 핸들러에서 OK 버튼의 ModalResult 값을 mrOk로, Cancel 버튼의 ModalResult 값을 mrCancel로 설정하는 것으로도 구현할 수 있습니다. 사용자가 어느 버튼을 클릭하든 대화상자가 닫힙니다. ModalResult 메서드가 설정되면 스크립트 엔진이 스크립트 폼을 자동으로 닫기 때문에 Close 메서드를 호출할 필요가 없습니다.

사용자가 Esc 키를 눌렀을 때 폼의 ModalResult를 cancel로 설정하려면, Object Inspector 패널에서 Cancel 버튼의 Cancel 속성을 true(체크)로 설정하거나, 폼의 버튼 CancelButtonClick 이벤트 핸들러에 Sender.Cancel := True를 삽입하세요.

사용자 입력 받기

사용자 입력을 받을 수 있는 일반적인 컴포넌트 중 하나는 EditBox 컴포넌트입니다. 이 EditBox 컴포넌트에는 사용자가 문자열을 입력할 수 있는 텍스트 필드가 있습니다. 또한 텍스트를 받을 수 있는 다른 컴포넌트도 있는데, 예를 들어 마스크드 에디트 컴포넌트는 텍스트 필드 입력 마스크가 있는 edit 컴포넌트입니다. 마스크는 입력을 제어(또는 필터링)하며 매개변수 문자열에 저장됩니다.

아래 예제는 사용자가 edit 박스에 텍스트를 입력한 뒤 버튼을 클릭했을 때 어떤 일이 발생하는지 보여줍니다. 사용자가 edit 컴포넌트에 아무 텍스트도 입력하지 않았다면 이벤트 핸들러는 경고 메시지로 응답한다는 점에 유의하세요.

sub TScriptForm.ButtonClick(Sender)
  If Edit1.Text = "" Then
  ShowMessage("Warning - empty input!")
  Exit
  End
  ' do something else for the input
End sub

또한 사용자는 Tab 키를 사용하거나 다른 폼 컨트롤을 클릭하여 폼에서 입력 포커스를 이동할 수 있습니다.

이벤트에 응답하기

사용자가 폼 또는 컴포넌트를 선택하면, Altium Designer는 스크립팅 시스템에 메시지를 보내고 스크립팅 시스템은 해당 이벤트 알림에 응답하여 적절한 이벤트 핸들러 메서드를 호출합니다.

이벤트 핸들러 작성하기

스크립트는 런타임에 컴포넌트에서 발생할 수 있는 이벤트에 응답해야 할 수 있습니다. 이벤트는 버튼 클릭과 같은 Altium Designer에서의 발생 사건과, 그 발생에 응답하는 코드 조각 사이의 연결입니다. 응답하는 코드는 이벤트 핸들러이며, 속성 값을 변경하고 메서드를 호출합니다.

각 컴포넌트는 속성과 함께 이벤트 이름 세트를 가지고 있습니다. 스크립트 프로그래머는 Altium Designer에서 사용자의 동작에 어떻게 반응할지 결정합니다. 예를 들어 사용자가 폼의 버튼을 클릭하면 Altium Designer가 스크립트에 메시지를 보내고 스크립트는 이 새 이벤트에 반응합니다. 버튼에 대해 OnClick 이벤트가 지정되어 있다면 그것이 실행됩니다.

이러한 모든 컴포넌트에는 포커스를 얻고 잃는 이벤트도 있습니다. 그러나 OnEnter 및 OnExit에 대한 코드가 지정되지 않으면(OnEnter - 컨트롤이 포커스를 가짐; OnExit - 컨트롤이 포커스를 잃음) 해당 이벤트는 스크립트에서 무시됩니다.

컴포넌트 속성

컴포넌트의 속성 목록을 보려면 컴포넌트를 선택하고 Object Inspector 패널에서 Properties 탭을 활성화합니다.

컴포넌트 이벤트

컴포넌트가 반응할 수 있는 이벤트 목록을 보려면 컴포넌트를 선택하고 Object Inspector 패널에서 Events 탭을 활성화합니다. 컴포넌트가 반응할 이벤트 처리 프로시저를 만들려면 적절한 이벤트를 선택하고 해당 이름을 더블클릭합니다.

예를 들어 Tool Palette 패널에서 Button1 컴포넌트를 선택해 스크립트 폼에 드롭한 다음, OnClick 이벤트 이름 옆을 더블클릭합니다. 스크립팅 시스템은 코드 에디터로 포커스를 이동하며, OnClick 이벤트에 대한 스켈레톤 코드가 생성되어 있습니다. 버튼의 CloseClick 이벤트 핸들러에 Close 메서드가 있으면, 버튼을 클릭할 때 이벤트 핸들러가 클릭 이벤트를 포착하고 이벤트 핸들러 내부의 코드가 실행됩니다. 즉, Close 메서드가 스크립트 폼을 닫습니다.

요약하면, 이벤트 핸들러는 폼에서 컴포넌트를 선택하거나 Object Inspector 패널을 사용한 다음, Inspector의 Events 탭에서 원하는 이벤트(예: OnClick) 오른쪽을 더블클릭하여 스크립트에 생성됩니다. 그러면 해당 코드 프레임워크가 스크립트에 나타납니다.

또는 버튼을 더블클릭하면 스크립팅 시스템이 OnClick 이벤트에 대한 핸들러를 추가합니다. 다른 유형의 컴포넌트는 기본 동작이 완전히 다를 수 있습니다.

컴포넌트 메서드

컴포넌트의 메서드 목록은 Component Reference를 참조하고, 더 자세한 정보는 Embarcadero Delphi 문서를 참고하세요.

런타임에 컴포넌트 생성하기

스크립트에서 컴포넌트를 직접 생성하고 제거할 수 있습니다. 일반적으로 폼의 핸들을 전달할 필요는 없습니다. 스크립트 폼이 이를 자동으로 처리하기 때문입니다. 대신 컴포넌트 생성자(Constructor)에 Nil 매개변수를 전달하세요.

예를 들어, OpenSave 대화상자는 생성 및 제거할 수 있습니다(Delphi RTL의 일부인 TOpenDialogTSaveDialog 클래스).

AI-LocalizedAI로 번역됨
만약 문제가 있으시다면, 텍스트/이미지를 선택하신 상태에서 Ctrl + Enter를 누르셔서 저희에게 피드백을 보내주세요.
기능 제공 여부

사용 가능한 기능은 보유하고 계시는 Altium 솔루션에 따라 달라집니다. 해당 솔루션은 Altium Develop, Altium Agile의 에디션(Agile Teams 또는 Agile Enterprise), 또는 활성기간 내의 Altium Designer 중 하나입니다.

안내된 기능이 고객님의 소프트웨어에서 보이지 않는 경우, 보다 자세한 내용을 위해 Altium 영업팀 에 문의해 주세요.

구버전 문서

Altium Designer 문서는 더 이상 버전별로 제공되지 않습니다. 이전 버전의 Altium Designer 문서가 필요하신 경우, Other Installers 페이지의 Legacy Documentation 섹션을 방문해 주세요.

콘텐츠