VBScript 양식 컴포넌트 사용

VBScript 양식에서 컴포넌트 사용하기

폼과 컴포넌트는 Embarcadero Delphi™의 Visual Component Library(VCL)를 기반으로 하지만, Altium Designer에서는 Delphi 기반의 Tool Palette VBScript를 사용할 때는 여전히 폼에 컨트롤을 배치하는 데 사용됩니다. 또한, Altium Designer에서 폼/컴포넌트의 Delphi 기반 여부와 관계없이 이벤트 핸들러는 VBScript 언어로 생성되며 코드도 VBScript 언어로 작성됩니다.

컴포넌트 개요

스크립팅 시스템은 시각적 컴포넌트와 비시각적 컴포넌트, 두 가지 유형의 컴포넌트를 처리합니다. 시각적 컴포넌트는 사용자 인터페이스를 구축하는 데 사용되며, 비시각적 컴포넌트는 Timer, OpenDialogMainMenu 컴포넌트가 제공하는 기능과 같은 다양한 작업에 사용됩니다. 예를 들어, 비시각적 Timer 컴포넌트는 예약된 간격으로 특정 코드를 실행하는 데 사용되며, 사용자에게는 절대 표시되지 않습니다. Button, Edit 그리고 Memo 컴포넌트는 시각적 컴포넌트로, 사용자에게 표시됩니다.

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

  • 속성
  • 이벤트
  • 메서드

A property 속성은 객체의 가시적인 동작이나 연산에 영향을 미치는 객체의 특성입니다. 예를 들어, Visible 속성은 이 객체가 스크립트 형식에서 표시될 수 있는지 여부를 결정합니다.

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

A method 는 항상 객체와 연관되어 있으며 해당 객체의 동작을 정의하는 절차입니다.

모든 스크립트 폼에는 하나 이상의 컴포넌트가 있습니다. 컴포넌트는 일반적으로 정보를 표시하거나 사용자가 작업을 수행할 수 있게 해줍니다. 예를 들어, 라벨(Label)은 정적 텍스트를 표시하는 데 사용되고, 편집 상자(Edit box)는 사용자가 데이터를 입력할 수 있게 하며, 버튼(Button)은 작업을 시작하는 데 사용할 수 있습니다.

폼에는 컴포넌트를 자유롭게 조합하여 배치할 수 있으며, 이를 통해 스크립트 실행 중(런타임)에 사용자가 해당 컴포넌트와 상호 작용할 수 있습니다. 사용자가 버튼을 클릭하거나 편집 상자의 텍스트를 변경할 때 어떤 동작이 일어날지는 스크립트 프로그래머가 결정해야 합니다.

스크립팅 시스템은 스크립트를 위한 단순하거나 복잡한 사용자 인터페이스를 생성할 수 있는 다양한 컴포넌트를 제공합니다. 폼에 배치할 수 있는 모든 컴포넌트는 도구 팔레트 Panel에서 찾을 수 있습니다.

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

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

스크립트 폼 설계

스크립트 폼은 Altium Designer 환경 내에서 사용자와 상호 작용하도록 설계되었습니다. 스크립트 폼 설계는 Altium Designer의 시각적 개발의 핵심입니다.

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

스크립트 폼과 그 컴포넌트를 다룰 때, Object Inspector Panel을 통해 속성에 접근하고 수정할 수 있습니다. 여러 컴포넌트를 선택하려면 Shift 키를 누른 상태에서 컴포넌트를 클릭하거나, 스크립트 폼에서 컴포넌트를 둘러싸는 선택 사각형을 드래그하면 됩니다. 스크립트 폼에는 Caption 속성에 매핑되어 있습니다. Object Inspector Panel.

새 스크립트 폼 만들기

스크립트 프로젝트를 연 상태에서, Projects Panel에서 마우스 오른쪽 버튼을 클릭하고 Add New to Project 다음으로 VB Script Form 항목을 선택합니다. Default로 설정된 스크립트 형식이 생성됩니다. EditScript1.vbs 이름으로 새 스크립트 양식이 생성됩니다. 또는 *.PrjPCB 프로젝트에서 다음을 선택합니다. File » New » Script Files » VB Script Form 명령어.

스크립트 양식 표시

스크립트에는 Altium Designer에서 스크립트 양식이 실행될 때 양식을 표시하는 루틴이 포함되어야 합니다. 이 루틴 내에서 양식에 대해 ShowModal 메서드를 호출하여 폼을 표시합니다. 폼의 Visible 속성을 false(선택 해제)로 설정해야 스크립트 폼의 ShowModal 메서드가 올바르게 작동하려면 양식의속성을 false(선택 해제)로 설정해야 합니다.

ShowModal 예제

Sub RunDialog
  DialogForm.ShowModal
End Sub

위의 ShowModal 예제는 스크립트에서 RunDialog 스크립트의 대화 상자가 호출될 때 스크립트 컴포넌트의 값을 설정하는 간단한 방법입니다. 값은 DialogForm 객체의 구성 요소에 값을 할당할 수 있다는 점에 유의하십시오. DialogForm.ShowModal 호출되기 전에 객체의 구성 요소에 값을 할당할 수 있다는 점에 유의하십시오.

아래에 ModalResult 아래에 제시된 예제는 더 복잡합니다. 이 예제의 후반부에 나오는 메서드들은 스크립트 양식 내의 버튼에 사용됩니다. 사용자가 OK 또는 Cancel 버튼 중 하나를 클릭하면 대화 상자가 종료되며, 이 경우 mrOk 또는 mrCancel 를 반환합니다. ShowModal 메서드에서 각각또는를 반환합니다.

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

위와 동일한 결과를 얻으려면 ModalResult 값을 mrOk 로 설정함으로써 OK 값을로 설정하고 mrCancel 로 설정하는 방법으로도이루어질 수 있습니다. 사용자가 두 버튼 중 하나를 클릭하면 대화 상자가 닫힙니다. 이벤트 Cancel 버튼의 이벤트 핸들러에서 각각값을으로,값을으로 설정하는 방법으로도 위와 동일한 결과를 얻을 수 있습니다. 사용자가 두 버튼 중 하나를 클릭하면 대화 상자가 닫힙니다. Close 메서드를 호출할 필요가 없습니다. ModalResult 메서드가 설정되어 있으면 스크립트 엔진이 스크립트 폼을 자동으로 닫기 때문입니다.

폼의 ModalResult 메서드를 설정해 두면, 사용자가키를 누를 때 폼이 자동으로 닫히게 됩니다. Esc 키를 누를 때 양식을 취소하도록 설정하려면, Cancel 버튼의 Cancel 속성을 Object Inspector Panel에서버튼의 Cancel 속성을 true(선택됨)로 설정하거나, Sender.Cancel := True 폼의 버튼 CancelButtonClick 이벤트 핸들러에 삽입하십시오.

사용자 입력 수락

사용자의 입력을 받을 수 있는 일반적인 컴포넌트 중 하나는 EditBox 컴포넌트입니다. 이 EditBox 컴포넌트에는 사용자가 문자열을 입력할 수 있는 텍스트 필드가 있습니다. 텍스트 필드 입력 마스크가 적용된 편집 컴포넌트인 ‘마스크된 편집(masked 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 - 컨트롤이 포커스를 잃음), 스크립트는 해당 이벤트를 무시합니다.

컴포넌트 속성

컴포넌트의 속성 목록을 보려면 컴포넌트를 선택한 후 Properties 탭을 활성화하십시오 Object Inspector Panel에서 [속성] 탭을 활성화하십시오.

컴포넌트 이벤트

컴포넌트가 반응할 수 있는 이벤트 목록을 보려면, 컴포넌트를 선택한 후 Events 탭을 활성화하십시오. Object Inspector Panel에서 탭을 활성화하십시오. 컴포넌트가 반응할 이벤트 처리 절차를 만들려면, 적절한 이벤트를 선택한 후 해당 이름을 두 번 클릭하십시오.

예를 들어, Button1 컴포넌트에서 Tool Palette Panel에서컴포넌트를 선택하고 스크립트 양식에 드래그한 다음, OnClick 이벤트 이름을 두 번 클릭하십시오. 스크립팅 시스템이 코드 Editor로 다시 초점을 이동하며, OnClick 이벤트에 대한 뼈대 코드가 생성되어 있습니다. 버튼에 Close 메서드가 CloseClick 메서드가 있는 경우, 버튼을 클릭하면 해당 이벤트 핸들러가 on-click 이벤트를 캡처하고, 이벤트 핸들러 내부의 코드가 실행됩니다. 즉, Close 메서드가 스크립트 폼을 닫습니다.

요약하자면, 이벤트 핸들러는 폼에서 컴포넌트를 선택하거나 Object Inspector Panel에서 구성 요소를 선택한 후, 인스펙터의 Events 탭에서 원하는 이벤트(예: OnClick)의 오른쪽을 더블 클릭하면 스크립트에 적절한 코드 템플릿이 나타납니다.

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

컴포넌트 메서드

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

실행 시 컴포넌트 생성

스크립트 내에서 컴포넌트를 직접 생성하고 소멸시킬 수 있습니다. 일반적으로 스크립트 폼이 이를 자동으로 처리하므로 폼의 핸들을 전달할 필요가 없습니다. 대신, 컴포넌트 생성자에 Nil 파라미터를 컴포넌트 생성자에 전달하십시오.

예를 들어, OpenSave 대화 상자는 생성 및 소멸될 수 있습니다( TOpenDialogTSaveDialog 클래스)를 생성 및 소멸시킬 수 있습니다.

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

사용할 수 있는 기능은 보유한 Altium 솔루션(Altium Develop, Altium Agile Teams, Altium Agile Enterprise, 또는 Altium Designer(활성 기간 중))에 따라 달라집니다.

실제 소프트웨어에서 문서화된 기능이 보이지 않는 경우, Altium 영업팀에 문의하여 자세한 내용을 확인하세요.

구버전 문서

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

콘텐츠