양식 및 구성 요소
그래픽 컴포넌트 개요
스크립팅 시스템은 시각적 컴포넌트와 비시각적 컴포넌트, 두 가지 유형의 컴포넌트를 처리합니다.
시각적 컴포넌트는 사용자 인터페이스를 구축하는 데 사용되며, 비시각적 컴포넌트는 다음과 같은 다양한 작업에 사용됩니다. TimerOpenDialogMainMenu
- 이
비시각적 컴포넌트는 예약된 간격으로 특정 코드를 실행하는 데 사용될 수 있으며, 사용자에게는 절대 표시되지 않습니다.Timer - 이
,Button 그리고Edit 컴포넌트는 시각적 컴포넌트입니다.Memo
두 유형의 컴포넌트 모두 설계 시점에 표시되지만, 비시각적 컴포넌트는 실행 시점에 표시되지 않습니다.
- 속성
- 이벤트
- 메서드
A
'이벤트'
A
모든 스크립트 폼에는 하나 이상의 컴포넌트가 있습니다. 컴포넌트는 일반적으로 정보를 표시하거나 사용자가 작업을 수행할 수 있게 해줍니다. 예를 들어, LabelEditButton
폼에는 컴포넌트를 자유롭게 조합하여 배치할 수 있으며, 스크립트가 실행되는 동안 사용자는 폼상의 모든 컴포넌트와 상호 작용할 수 있습니다. 사용자가 버튼을 클릭하거나 Edit
스크립팅 시스템은 스크립트를 위한 복잡한 사용자 인터페이스를 만드는 데 사용할 수 있는 다양한 컴포넌트를 제공합니다. 폼에 컴포넌트를 배치하려면도구 팔레트 Panel에서 해당 아이콘을 찾아 더블 클릭하십시오. 이 작업을 수행하면 활성 폼에 컴포넌트가 배치됩니다. 대부분의 컴포넌트의 시각적 표현은 해당 속성을 통해 설정됩니다. 컴포넌트는 처음에 양식의 Default 위치에 배치되지만, 필요에 따라 위치를 변경(끌어다 놓기)하거나 크기를 조정(늘리기)할 수 있습니다. 또한 나중에
컴포넌트를 폼에 드롭하면 스크립팅 시스템이 해당 컴포넌트를 사용하는 데 필요한 코드를 자동으로 생성하고 스크립트 폼을 업데이트합니다. 폼에 배치된 컴포넌트가 정상적으로 작동하도록 하려면 속성을 설정하고, 원하는 메서드를 호출하기 위한 이벤트 핸들러 코드만 구현하면 됩니다.
스크립트 폼 설계
스크립트 폼은 환경 내에서 사용자와 상호 작용하도록 설계되었습니다. 스크립트 폼 설계는 시각적 개발의 핵심입니다.
실제로는 모든 컴포넌트가 스크립트 폼에 배치되며, 설정된 각 속성은 해당 폼을 설명하는 파일( *.DFM*.PAS.PAS.DFM
스크립트 폼과 그 컴포넌트를 다룰 때, 모든 요소 속성은 Caption
새 스크립트 폼 만들기
스크립트 프로젝트를 연 상태에서 EditScript1.pas
스크립트 폼 표시하기
스크립트에는 스크립트 양식이 실행될 때 양식을 표시하는 프로시저가 포함되어야 합니다. 이 프로시저 내에서 ShowModalVisibleShowModal
Procedure RunDialog; Begin DialogForm.ShowModal; End;
이 ShowModalRunDialogDialogFormDialogForm.ShowModal
아래에 ModalResultmrOkmrCancelShowModal
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;
사용자가 이 스크립트 양식의 두 버튼 중 하나를 클릭하면 대화 상자가 닫힙니다. CloseModalResult
폼의 ModalResultCancelCancelTrueSender.Cancel := TrueCancelButtonClick
사용자로부터 입력 받기
사용자로부터 입력을 받을 수 있는 일반적인 컴포넌트 중 하나는 TEditTMaskEdit
아래 예제는 사용자가 편집 상자에 내용을 입력한 후 버튼을 클릭할 때의 과정을 보여줍니다. 사용자가 편집 컴포넌트에 아무것도 입력하지 않은 경우(비어 있는 경우), 이벤트 핸들러는 경고 메시지를 표시합니다.
Procedure TScriptForm.ButtonClick(Sender : TObject); Begin If Edit1.Text = '' Then Begin ShowMessage('Warning - empty input!'); Exit; End; // do something else for the input End;
사용자는
이벤트에 대응하기
양식이나 컴포넌트의 버튼이 클릭되면 스크립팅 시스템은 Altium Designer로부터 이벤트 알림을 수신하고 적절한 이벤트 핸들러 메서드를 호출하여 이에 대응합니다.
스크립트 컬렉션의 Scripts\DelphiScript Scripts\General\
스크립트 컬렉션의Scripts\DelphiScript Scripts\General\
이벤트 핸들러 작성
폼 스크립트의 각 컴포넌트에는 일련의 이벤트 이름이 있으며, 이러한 이벤트 이름은 Altium Designer에서 사용자 동작에 대해 스크립트가 어떻게 반응할지 결정하는 스크립트 이벤트 핸들러에 의해 사용됩니다. 예를 들어, 사용자가 폼의 버튼을 클릭하면 Altium Designer는 스크립트에 메시지를 전송하고, 스크립트는 이 새로운 이벤트에 반응합니다. OnClick
이벤트에 반응하는 코드는 일반적으로 DelphiScript 이벤트 핸들러에 포함되어 있으며, 모든 컴포넌트는 반응할 수 있는 일련의 이벤트를 가지고 있습니다. 예를 들어, 클릭 가능한 모든 컴포넌트에는 OnClickOnEnterOnExitOnEnterOnExit
요약하자면, 이벤트는 버튼 클릭과 같은 Altium Designer 내의 발생 사항과, 해당 발생 사항에 반응하는 코드 조각을 연결하는 매개체입니다. 반응하는 코드를 이벤트 핸들러라고 합니다. 이 코드는 속성 값을 수정하고 메서드를 호출합니다.
컴포넌트의 속성
컴포넌트의 속성 목록을 보려면, 컴포넌트를 선택한 후
컴포넌트 이벤트
컴포넌트가 반응할 수 있는 이벤트 목록을 보려면, 컴포넌트를 선택한 후
예를 들어, TButtonOnClickOnClick

버튼에 CloseCloseClickOnClickClose
요약하자면, 폼에서 직접 또는 컴포넌트를 사용하여 OnClick
컴포넌트 메서드
컴포넌트의 메서드 목록을 보려면 ‘컴포넌트 참조’ 문서를 참조하십시오.
스크립트 폼에 컴포넌트 드롭하기
스크립트에서 도구 패널의 컴포넌트를 사용하려면, 컴포넌트를 폼에 드롭하기 전에 스크립트 폼이 존재해야 합니다. 일반적으로 컴포넌트를 스크립트 폼에 드롭할 때, 이러한 객체를 직접 생성하거나 소멸시킬 필요는 없습니다. 스크립트 폼이 이를 자동으로 처리합니다.
또한 스크립팅 시스템은 컴포넌트 사용에 필요한 코드를 자동으로 생성하고 스크립트 폼을 업데이트합니다. 그 후에는 속성을 설정하고, 이벤트 핸들러에 코드를 작성하며, 필요한 메서드를 사용하여 정상적으로 작동하는 스크립트 폼을 구현하기만 하면 됩니다.
스크립트에서 컴포넌트 생성
스크립트 내에서 NilConstructorOpenSaveTOpenDialogTSaveDialog
스크립트 폼 Custom 사용자 정의
스크립트 폼을 Custom할 때의 핵심 사항은 다음과 같습니다.
- 폼이 열려 있는 다른 Panel들 위에 항상 표시되도록 하려면
속성을FormStyle 로 설정하십시오.fsStayOnTop - 폼의 Default 동작을 정의하려면
다음 값 중 하나로 설정하십시오;FormKind ,fkNone ,fkNormal 또는fkServerPanel 로 설정하십시오.fkModal - 만약
가 닫혀 있다면, 해당 양식은 모달 양식이 됩니다. 즉, 양식을 닫는 등의 작업을 진행하기 전에 사용자의 입력을 기다립니다. 만약fkModal 인 경우, 양식은 서버 Panel로 표시됩니다. 만약fkServerPanel 인 경우, 양식은 일반적인 비모달 양식으로 작동합니다.fkNormal - 폼의 Default 스크롤 막대를 제거하려면
및HorzScrollBar 속성의 값을 변경하십시오.VertScrollBar - 폼을 MDI 프레임 또는 MDI 자식으로 만들려면
속성을 사용하십시오.FormStyle - 폼의 테두리 스타일을 변경하려면
및BorderIcons 속성을 사용합니다(결과는 런타임에 표시됩니다).BorderStyle - 최소화된 폼의 아이콘을 변경하려면
속성을 사용합니다.Icon - 응용 프로그램 창에서 폼의 초기 위치를 지정하려면
속성을 사용합니다.Position - 폼의 초기 상태(예: 최소화, 최대화 또는 일반)를 지정하려면
속성을 사용하십시오.WindowState - 실행 시 폼의 작업 영역을 정의하려면
및ClientHeight 속성을 사용합니다(단,ClientWidth 와ClientHeight 는 폼 테두리 안쪽 영역을 나타냅니다;ClientWidth 그리고Height 는 폼의 전체 영역을 나타냅니다).Width - 실행 시 양식에서 어떤 컨트롤이 초기 포커스를 가질지 지정하려면
속성을 사용합니다.ActiveControl - 선택된 컨트롤과 관계없이 모든 키보드 이벤트를 폼으로 전달하려면
속성을 사용하십시오.KeyPreview - 폼에 메뉴가 두 개 이상 포함된 경우 특정 메뉴를 지정하려면
속성을 사용합니다.Menu
스크립트 폼 및 컴포넌트 새로 고침
스크립트 폼의 표면이 최신 상태가 아닐 때(예: 컨트롤이 업데이트되거나 다시 그려지지 않은 경우), 컨트롤이 멈춘 것처럼 보이거나 손상된 것처럼 보일 수 있습니다. 이는 해당 스크립트의 집중적인 백그라운드 처리 때문일 수 있습니다.
스크립트 폼의 UpdateUpdate
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 CreatorScripts\Delphiscript Scripts\Pcb\PCB Logo Creator