양식 및 구성 요소

그래픽 컴포넌트 개요

스크립팅 시스템은 시각적 컴포넌트와 비시각적 컴포넌트, 두 가지 유형의 컴포넌트를 처리합니다.

시각적 컴포넌트는 사용자 인터페이스를 구축하는 데 사용되며, 비시각적 컴포넌트는 다음과 같은 다양한 작업에 사용됩니다. Timer, OpenDialogMainMenu 컴포넌트 등 다양한 작업에 사용됩니다.

  • Timer 비시각적 컴포넌트는 예약된 간격으로 특정 코드를 실행하는 데 사용될 수 있으며, 사용자에게는 절대 표시되지 않습니다.
  • Button, Edit 그리고 Memo 컴포넌트는 시각적 컴포넌트입니다.

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

  • 속성
  • 이벤트
  • 메서드

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

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

A Method 는 항상 객체와 연관되어 있으며 객체의 동작을 정의하는 프로시저입니다.

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

폼에는 컴포넌트를 자유롭게 조합하여 배치할 수 있으며, 스크립트가 실행되는 동안 사용자는 폼상의 모든 컴포넌트와 상호 작용할 수 있습니다. 사용자가 버튼을 클릭하거나 Edit .

스크립팅 시스템은 스크립트를 위한 복잡한 사용자 인터페이스를 만드는 데 사용할 수 있는 다양한 컴포넌트를 제공합니다. 폼에 컴포넌트를 배치하려면도구 팔레트 Panel에서 해당 아이콘을 찾아 더블 클릭하십시오. 이 작업을 수행하면 활성 폼에 컴포넌트가 배치됩니다. 대부분의 컴포넌트의 시각적 표현은 해당 속성을 통해 설정됩니다. 컴포넌트는 처음에 양식의 Default 위치에 배치되지만, 필요에 따라 위치를 변경(끌어다 놓기)하거나 크기를 조정(늘리기)할 수 있습니다. 또한 나중에 Object Inspector Panel을 사용하여 크기나 위치를 변경할 수도 있습니다.

컴포넌트를 폼에 드롭하면 스크립팅 시스템이 해당 컴포넌트를 사용하는 데 필요한 코드를 자동으로 생성하고 스크립트 폼을 업데이트합니다. 폼에 배치된 컴포넌트가 정상적으로 작동하도록 하려면 속성을 설정하고, 원하는 메서드를 호출하기 위한 이벤트 핸들러 코드만 구현하면 됩니다.

스크립트 폼 설계

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

실제로는 모든 컴포넌트가 스크립트 폼에 배치되며, 설정된 각 속성은 해당 폼을 설명하는 파일( *.DFM 파일)에 저장되며, 이 파일은 관련 스크립트 코드( *.PAS 파일)과 연관 관계를 맺고 있습니다. 모든 스크립트 폼마다 .PAS 파일과 그에 대응하는 .DFM 파일이 존재합니다.

스크립트 폼과 그 컴포넌트를 다룰 때, 모든 요소 속성은 Object Inspector Panel을 통해 모든 컴포넌트 속성을 확인하고 수정할 수 있습니다. Shift 키를 누른 채 컴포넌트를 클릭하거나, 폼상의 컴포넌트 주위에 선택 사각형을 드래그하여 여러 개를 선택할 수 있습니다. 스크립트 폼에는 제목( Caption 속성을 가지고 있습니다 Object Inspector Panel의 속성)이 있습니다.

새 스크립트 폼 만들기

스크립트 프로젝트를 연 상태에서 Projects Panel에서 프로젝트를 마우스 오른쪽 버튼으로 클릭한 다음, Add New to Project 항목을 클릭한 후 항목을 선택합니다. Delphi Script Form 항목을 선택합니다. Default 이름이 EditScript1.pas로 새 스크립트 양식이 열립니다.

스크립트 폼 표시하기

스크립트에는 스크립트 양식이 실행될 때 양식을 표시하는 프로시저가 포함되어야 합니다. 이 프로시저 내에서 ShowModal 메서드를 호출할 수 있습니다. Visible 스크립트 폼의 ShowModal 메서드가 올바르게 작동하려면 양식의속성을 false로 설정해야 합니다.

ShowModal example:

Procedure RunDialog;
Begin
  DialogForm.ShowModal;
End;

ShowModal 예제는 RunDialog 호출될 때 스크립트 컴포넌트를 표시하는 매우 간단한 방법입니다. DialogForm 메서드가 호출되기 전에 객체의 구성 요소에 값을 할당할 수 있다는 점에 유의하십시오. DialogForm.ShowModal 호출되기 전에 객체의 구성 요소에 값을 할당할 수 있다는 점에 유의하십시오.

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

ModalResult Example:

Procedure TForm.OKButtonClick(Sender: TObject);
Begin
  ModalResult := mrOK;
End;

Procedure TForm.CancelButtonClick(Sender: TObject);
Begin
  ModalResult := mrCancel;
End;

Procedure RunShowModalExample;
Begin
  // Form's Visible property must be false for ShowModal to work correctly.
  If Form.ShowModal = mrOk Then ShowMessage('mrOk');
  If Form.ShowModal = mrCancel Then ShowMessage('mrCancel');
End;
또한 ModalResult 값을 mrOk 값을 OK 버튼과 mrCancel 버튼의 Cancel 버튼의 값을로 설정하여 위와 동일한 결과를 얻을 수도 있습니다.

사용자가 이 스크립트 양식의 두 버튼 중 하나를 클릭하면 대화 상자가 닫힙니다. Close 메서드를 호출할 필요가 없습니다. ModalResult 메서드가 설정되어 있으면 스크립트 엔진이 스크립트 폼을 자동으로 닫기 때문입니다.

폼의 ModalResult 값을 Cancel 값을 설정하려면 Esc 키를 누를 때 폼의속성을 Object Inspector Panel을 사용하여 ‘취소’ 버튼의 Cancel 속성을 True로 설정하거나, Sender.Cancel := True 를 폼의 버튼 CancelButtonClick 이벤트 핸들러에를 삽입하십시오.

사용자로부터 입력 받기

사용자로부터 입력을 받을 수 있는 일반적인 컴포넌트 중 하나는 TEdit 컴포넌트입니다. 이 컴포넌트에는 사용자가 문자열을 입력할 수 있는 필드가 있습니다. 또한, 문자열로 저장된 입력 마스크를 가진 편집 컴포넌트인 TMaskEdit와 같은 다른 델파이 컴포넌트도 있다는 점에 유의하십시오. 이 컴포넌트는 문자열로 저장된 입력 마스크를 가진 편집 컴포넌트로, 이를 통해 입력을 제어하거나 필터링합니다.

아래 예제는 사용자가 편집 상자에 내용을 입력한 후 버튼을 클릭할 때의 과정을 보여줍니다. 사용자가 편집 컴포넌트에 아무것도 입력하지 않은 경우(비어 있는 경우), 이벤트 핸들러는 경고 메시지를 표시합니다.

Procedure TScriptForm.ButtonClick(Sender : TObject);
Begin
  If Edit1.Text = '' Then
  Begin
    ShowMessage('Warning - empty input!');
    Exit;
  End;
  // do something else for the input
End;

사용자는 Tab 키를 사용하거나 폼 내의 다른 컨트롤을 클릭하여 대화 상자의 입력 포커스를 변경할 수 있습니다.

이벤트에 대응하기

양식이나 컴포넌트의 버튼이 클릭되면 스크립팅 시스템은 Altium Designer로부터 이벤트 알림을 수신하고 적절한 이벤트 핸들러 메서드를 호출하여 이에 대응합니다.

See also
스크립트 컬렉션의 Scripts\DelphiScript Scripts\General\ 폴더에 있는 HelloWorld 프로젝트입니다.
스크립트 컬렉션의Scripts\DelphiScript Scripts\General\ 폴더에 있는 ShowModal 예제 스크립트.

이벤트 핸들러 작성

폼 스크립트의 각 컴포넌트에는 일련의 이벤트 이름이 있으며, 이러한 이벤트 이름은 Altium Designer에서 사용자 동작에 대해 스크립트가 어떻게 반응할지 결정하는 스크립트 이벤트 핸들러에 의해 사용됩니다. 예를 들어, 사용자가 폼의 버튼을 클릭하면 Altium Designer는 스크립트에 메시지를 전송하고, 스크립트는 이 새로운 이벤트에 반응합니다. OnClick 버튼에 대한 이벤트가 지정되어 있으면 해당 이벤트가 실행됩니다.

이벤트에 반응하는 코드는 일반적으로 DelphiScript 이벤트 핸들러에 포함되어 있으며, 모든 컴포넌트는 반응할 수 있는 일련의 이벤트를 가지고 있습니다. 예를 들어, 클릭 가능한 모든 컴포넌트에는 OnClick 사용자가 컴포넌트를 클릭할 때 발생되는 이벤트를 가지고 있습니다. 이러한 모든 컴포넌트는 포커스를 얻거나 잃을 때 발생하는 이벤트도 가지고 있습니다. 그러나 OnEnterOnExit 코드가 지정되지 않은 경우(OnEnter - 컨트롤이 포커스를 획득한 경우; OnExit - 컨트롤이 포커스를 잃었을 때) 해당 이벤트는 스크립트에 의해 무시됩니다.

요약하자면, 이벤트는 버튼 클릭과 같은 Altium Designer 내의 발생 사항과, 해당 발생 사항에 반응하는 코드 조각을 연결하는 매개체입니다. 반응하는 코드를 이벤트 핸들러라고 합니다. 이 코드는 속성 값을 수정하고 메서드를 호출합니다.

컴포넌트의 속성

컴포넌트의 속성 목록을 보려면, 컴포넌트를 선택한 후 Properties 탭을 엽니다. Object Inspector Panel에서

컴포넌트 이벤트

컴포넌트가 반응할 수 있는 이벤트 목록을 보려면, 컴포넌트를 선택한 후 Events 탭을 엽니다. Object Inspector Panel에서 탭을 엽니다. 이벤트 처리 프로시저를 생성하려면 컴포넌트가 반응하도록 할 이벤트를 선택한 다음 이벤트 이름을 두 번 클릭하십시오. 그러면 스크립팅 시스템이 이벤트 핸들러 프레임워크 코드를 자동으로 삽입합니다.

예를 들어, TButton 컴포넌트에서 Tool Palette Panel에서컴포넌트를 선택하여 스크립트 양식에 드래그한 다음, OnClick 이름 옆을 더블클릭하십시오. Object Inspector Panel. The scripting system will bring the Code Editor to focus and the skeleton code for the OnClick 이벤트에 대한 코드 뼈대가 생성됩니다.

버튼에 Close 메서드가 CloseClick 메서드가 정의되어 있다면, 예를 들어 버튼이 클릭될 때 버튼 이벤트 핸들러가 해당 OnClick 이벤트를 캡처하여 이벤트 핸들러 내부의 코드가 실행되도록 합니다. 결과적으로, Close 메서드는 스크립트 양식을 닫습니다.

요약하자면, 폼에서 직접 또는 컴포넌트를 사용하여 Object Inspector Panel을 통해 버튼 컴포넌트를 선택하고, Events 페이지에서 버튼 컴포넌트를 선택한 다음, OnClick 이벤트의 오른쪽을 더블 클릭하면 스크립트에 새로운 이벤트 핸들러가 나타납니다. 또는 버튼 자체를 더블 클릭하면 스크립팅 시스템이 이 OnClick 이벤트에 대한 핸들러를 추가합니다. 다른 유형의 컴포넌트는 기본 동작이 다를 수 있습니다.

컴포넌트 메서드

컴포넌트의 메서드 목록을 보려면 ‘컴포넌트 참조’ 문서를 참조하십시오.

스크립트 폼에 컴포넌트 드롭하기

스크립트에서 도구 패널의 컴포넌트를 사용하려면, 컴포넌트를 폼에 드롭하기 전에 스크립트 폼이 존재해야 합니다. 일반적으로 컴포넌트를 스크립트 폼에 드롭할 때, 이러한 객체를 직접 생성하거나 소멸시킬 필요는 없습니다. 스크립트 폼이 이를 자동으로 처리합니다.

또한 스크립팅 시스템은 컴포넌트 사용에 필요한 코드를 자동으로 생성하고 스크립트 폼을 업데이트합니다. 그 후에는 속성을 설정하고, 이벤트 핸들러에 코드를 작성하며, 필요한 메서드를 사용하여 정상적으로 작동하는 스크립트 폼을 구현하기만 하면 됩니다.

스크립트에서 컴포넌트 생성

스크립트 내에서 Nil 파라미터를 Constructor 컴포넌트의 핸들을 전달하여 직접 생성하거나 소멸시킬 수 있습니다. 일반적으로 스크립트 폼이 이를 자동으로 처리하므로 컴포넌트의 핸들을 전달할 필요는 없습니다. 예를 들어, OpenSave 대화 상자(TOpenDialogTSaveDialog 클래스)를 생성하고 소멸시킬 수 있습니다.

스크립트 폼 Custom 사용자 정의

스크립트 폼을 Custom할 때의 핵심 사항은 다음과 같습니다.

  • 폼이 열려 있는 다른 Panel들 위에 항상 표시되도록 하려면 FormStyle 속성을 fsStayOnTop로 설정하십시오.
  • 폼의 Default 동작을 정의하려면 FormKind 다음 값 중 하나로 설정하십시오; fkNone, fkNormal, fkServerPanel 또는 fkModal로 설정하십시오.
  • 만약 fkModal 가 닫혀 있다면, 해당 양식은 모달 양식이 됩니다. 즉, 양식을 닫는 등의 작업을 진행하기 전에 사용자의 입력을 기다립니다. 만약 fkServerPanel 인 경우, 양식은 서버 Panel로 표시됩니다. 만약 fkNormal 인 경우, 양식은 일반적인 비모달 양식으로 작동합니다.
  • 폼의 Default 스크롤 막대를 제거하려면 HorzScrollBarVertScrollBar 속성의 값을 변경하십시오.
  • 폼을 MDI 프레임 또는 MDI 자식으로 만들려면 FormStyle 속성을 사용하십시오.
  • 폼의 테두리 스타일을 변경하려면 BorderIconsBorderStyle 속성을 사용합니다(결과는 런타임에 표시됩니다).
  • 최소화된 폼의 아이콘을 변경하려면 Icon 속성을 사용합니다.
  • 응용 프로그램 창에서 폼의 초기 위치를 지정하려면 Position 속성을 사용합니다.
  • 폼의 초기 상태(예: 최소화, 최대화 또는 일반)를 지정하려면 WindowState 속성을 사용하십시오.
  • 실행 시 폼의 작업 영역을 정의하려면 ClientHeightClientWidth 속성을 사용합니다(단, ClientHeightClientWidth 는 폼 테두리 안쪽 영역을 나타냅니다; Height 그리고 Width 는 폼의 전체 영역을 나타냅니다).
  • 실행 시 양식에서 어떤 컨트롤이 초기 포커스를 가질지 지정하려면 ActiveControl 속성을 사용합니다.
  • 선택된 컨트롤과 관계없이 모든 키보드 이벤트를 폼으로 전달하려면 KeyPreview 속성을 사용하십시오.
  • 폼에 메뉴가 두 개 이상 포함된 경우 특정 메뉴를 지정하려면 Menu 속성을 사용합니다.

스크립트 폼 및 컴포넌트 새로 고침

스크립트 폼의 표면이 최신 상태가 아닐 때(예: 컨트롤이 업데이트되거나 다시 그려지지 않은 경우), 컨트롤이 멈춘 것처럼 보이거나 손상된 것처럼 보일 수 있습니다. 이는 해당 스크립트의 집중적인 백그라운드 처리 때문일 수 있습니다.

스크립트 폼의 Update 스크립트 폼의 메서드와 여러 스크립트 컴포넌트 Tool Palette Panel의 많은 스크립트 컴포넌트들은 폼이나 특정 컨트롤의 그래픽 내용을 새로 고칠 수 있는 방법을 제공합니다. 아래 예제에서 Update 메서드가 포함된 줄은 아래 예제에서 회색으로 강조 표시되어 있습니다.

StatusBar component and its Update method Example:

Procedure TConverterForm.loadbuttonClick(Sender: TObject);
Begin
 If OpenPictureDialog1.Execute then
 Begin
 XPProgressBar1.Position := 0;
 XStatusBar1.SimpleText  := '  Loading...';
 XStatusBar1.Update;
 
 // loading a monochrome bitmap only
 Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
 
 // Check if image is monochrome, otherwise prompt a warning
 If Image1.Picture.Bitmap.PixelFormat > pf1bit Then
 Begin
 ShowWarning('The image is not a monochrome!');
 Close;
 End;
 
 lImageSize.Caption := IntToStr(Image1.Picture.Width) + ' x ' +
 IntToStr(Image1.Picture.Height) + ' mils';
 
 convertbutton.Enabled  := True;
 LoadButton.Enabled     := False;
 XStatusBar1.SimpleText := '  Ready...';
 XStatusBar1.Update;
 End;
End;

위의 코드 조각은 PCB Logo Creator 스크립트 프로젝트에서 가져온 것으로, 이 프로젝트는 Scripts\Delphiscript Scripts\Pcb\PCB Logo Creator 폴더에서 찾을 수 있습니다.

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

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

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

구버전 문서

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

콘텐츠