Lập trình script cho các thành phần đồ họa
Tài liệu tham khảo này trình bày các thành phần đồ họa được hỗ trợ cho scripting cùng với các thuộc tính và phương thức chính của chúng.
Các thành phần biểu mẫu trực quan có thể dùng trong script của Altium Designer phần lớn được dẫn xuất từ Visual Component Library (VCL) của Embarcadero, là một tập hợp các thành phần trực quan được định nghĩa sẵn để phát triển ứng dụng Windows bằng ngôn ngữ Delphi và C++.
Được phát triển như một thư viện lớp trực quan, các lớp VCL được kế thừa từ đối tượng TComponent (bản thân nó cũng là hậu duệ của đối tượng gốc TObject) trong một hệ phân cấp đối tượng tuyến tính. Vì vậy, một thành phần script thông dụng, chẳng hạn như đối tượng TButton, sẽ kế thừa các thuộc tính, phương thức và sự kiện từ các đối tượng cấp trên của nó. Trong trường hợp này, hệ phân cấp lớp là: TObject → TPersistent → TComponent → TControl → TWinControl → TButtonControl → TButton.
Lưu ý rằng các thành phần được dẫn xuất từ đối tượng TControl nhìn chung là các thành phần trực quan (controls), còn các thành phần thông dụng được dẫn xuất từ TWinControl chủ yếu là các lớp bao quanh Windows API.
► Xem Embarcadero RAD Studio VCL để có cái nhìn tổng quan về kiến trúc và các thành phần VCL.
Khi tạo một Form trong Altium Designer Script Editor, các thành phần được truy cập từ bảng Tool Palette. Script Forms có một tệp *.DFM liên kết, bao gồm chi tiết về cấu hình của form, vị trí các thành phần và các thuộc tính khác – tệp này có thể được tìm thấy trong thư mục chứa của dự án script. Altium Designer cho phép sử dụng các thành phần này bằng cả DelphiScript hoặc VBScript khi thiết kế Script Forms.

Bảng Tool Palette chứa các điều khiển trực quan được phân loại, có thể kéo thả lên một script Form.
Bảng Tool Palette panel chứa các nhóm thành phần được phân loại có thể đặt lên một Script Form. Các thành phần khả dụng được sắp xếp thành các mục có thể mở rộng trong bảng Tool Palette, được phân loại thành Standard, Additional, Win32, System, Dialogs, Altium Standard và Instrument Controls.
Các thành phần (hay “controls”) có trong Palette là các thành phần trực quan khi được dùng trên script form, nghĩa là người dùng có thể nhìn thấy một control và có thể tương tác với nó trong lúc chạy. Mọi control đều có các thuộc tính, phương thức và sự kiện mô tả các khía cạnh về hình thức hiển thị của chúng, chẳng hạn như thuộc tính vị trí của control, các phương thức để vẽ hoặc di chuyển control, và các sự kiện phản hồi thao tác của người dùng.
Các thuộc tính và sự kiện có sẵn trong bảng Object Inspector panel đối với thành phần form hiện đang được chọn, bao gồm cả chính form đó. Các phương thức là các procedure và function được thành phần đó hỗ trợ.
Tổng quan về Script Forms
Script Forms
Một Script Form là giao diện người dùng chính trong script, mặc dù vẫn còn các dạng khác như hộp thoại, cửa sổ phụ, v.v. Để tạo một Script Form mới khi đang mở một dự án trong Altium Designer, hãy chọn File » New » Script » Script Form hoặc nhấp chuột phải vào tên dự án Script và chọn Add New to Project » Script Form. Nếu ngôn ngữ VBScript được bật, lệnh này sẽ khả dụng cho cả VB Script và Delphi Script.
Một Script Form mới sẽ xuất hiện với tên mặc định là Form1, có thể thay đổi thông qua thuộc tính Name (trong mục Misc) ở bảng Object Inspector. Tên của script form phải là duy nhất trong một dự án.
Khi thiết kế một script Form, hãy mở bảng Object Inspector từ nút Script ở thanh trạng thái phía dưới.
Một form trống về cơ bản là một cửa sổ trực quan mà bạn có thể thêm các control vào. Hộp thoại và panel là các loại form khác nhau, và theo mặc định, một form bao gồm chức năng cửa sổ tiêu chuẩn như:
- Controls
- Các nút Minimize và Maximize
- Thanh tiêu đề
- Có thể thay đổi kích thước bằng cách kéo viền
Những tính năng này, cùng với mọi thuộc tính form khác có sẵn, có thể được thay đổi tại thời điểm thiết kế bằng bảng Object Inspector. Vì Script Form là một thành phần VCL nên nó có ba mục sau:
- Properties – Các đặc tính của một đối tượng ảnh hưởng đến hành vi hiển thị hoặc hoạt động của nó. Ví dụ, thuộc tính
Visiblexác định một đối tượng có thể được nhìn thấy trên script form hay không. - Events – Các hành động hoặc sự kiện xảy ra được script phát hiện. Script phải bao gồm mã cho từng trình xử lý Event, được thiết kế để bắt một sự kiện cụ thể như nhấp chuột.
- Methods – Các procedure script được gắn với các đối tượng (trong trường hợp này là các đối tượng thành phần) và xác định hành vi của chúng.
► Xem Writing Scripts để có hướng dẫn cơ bản về phát triển script dựa trên form.
Thuộc tính, Phương thức và Sự kiện của Form
Các control trong bảng Tool Palette dựa trên Embarcadero Visual Component Library (VCL). Để biết đầy đủ chi tiết về các phương thức, thuộc tính và sự kiện cho thành phần Form (TForm), hãy tham khảo tài liệu VCL của Embarcadero.
Thuộc tính TForm
Các Properties khả dụng cho đối tượng thành phần TForm, tức script form cơ sở, có thể được xem theo các cách sau:
- Thông qua bảng Object Inspector – Trong Form view của trình biên tập (đã chọn thẻ Form ), nhấp vào phần thân của chính form và chọn thẻ Object Inspector's Properties .

Lưu ý rằng chỉ các đối tượng thành phần trực quan mới xuất hiện trong bảng. Các đối tượng không trực quan, hoạt động như các điều khiển ngầm phía sau, sẽ không được hiển thị trên form.
- Bằng cách sử dụng tính năng Code Completion – Trong Code view của trình biên tập (đã chọn thẻ Code ), cửa sổ Code Completion theo ngữ cảnh sẽ hiển thị tất cả các tùy chọn mã cho tên một đối tượng.

Đối với đối tượng Form, nhập TForm. (lưu ý dấu chấm) để kích hoạt cửa sổ. Thu hẹp tìm kiếm bằng cách gõ vài chữ cái đầu của thuộc tính mong muốn – lưu ý rằng cả thuộc tính và phương thức đều được hiển thị.
- Từ tài liệu tham chiếu của Embarcadero tại trang TForm Properties reference page.
Phương thức TForm
Các Methods khả dụng cho đối tượng thành phần TForm có thể được xem theo các cách sau:
- Sử dụng tính năng Code Completion – Trong Code view của trình biên tập, nhập tên một thành phần theo sau bởi dấu chấm. Cửa sổ Code Completion sẽ mở ra để hiển thị các phương thức mã (và thuộc tính) của một tên đối tượng. Lưu ý rằng cửa sổ mã có thể được kích hoạt thủ công bằng phím tắt Crtl+Space.

- Tham khảo tài liệu của Embarcadero tại trang TForm Methods reference page. Lưu ý rằng trang này hiển thị tất cả các Methods được kế thừa, tuy nhiên tùy chọn này có thể được bỏ chọn.
Sự kiện TForm
Các Events khả dụng cho đối tượng thành phần TForm có thể được xem theo các cách sau:
- Bảng Object Inspector – Trong Form view của trình biên tập, nhấp vào phần thân của chính form và chọn thẻ Events của Object Inspector.

- Tài liệu tham chiếu của Embarcadero tại trang TFrom Events reference page.
Thuộc tính, Sự kiện và Phương thức của Thành phần
Các control trong bảng Tool Palette dựa trên Embarcadero Visual Component Library (VCL). Để biết đầy đủ chi tiết về các phương thức, thuộc tính và sự kiện của phần lớn các thành phần, hãy tham khảo các danh mục thành phần trong tài liệu VCL của Embarcadero. Một số loại Component trong Tool Palette, đặc biệt là Altium Instrument Controls, là riêng của Altium Designer và không có trong tài liệu tham chiếu của Embarcadero.
Thuộc tính Thành phần
Để xem danh sách các Properties của một thành phần:
- Chọn một thành phần trên Form và kích hoạt thẻ Properties trong bảng Object Inspector – như được minh họa ở trên cho đối tượng thành phần
TForm. - Chọn liên kết Properties (ở phía trên) trên trang tham chiếu của thành phần tương ứng trong tài liệu tham chiếu Embarcadero. Ví dụ, trong trường hợp control
TButton, hãy chọn danh mục Standard Component, trang TButton rồi đến chế độ xem Properties.
Sự kiện Thành phần
Để xem danh sách các Events mà một thành phần có thể phản ứng với:
- Chọn một thành phần trên Form và kích hoạt thẻ Events trong bảng Object Inspector – như được minh họa ở trên cho đối tượng thành phần
TForm. - Chọn trang tham chiếu thành phần phù hợp rồi chọn liên kết Events của nó trong tài liệu tham chiếu Embarcadero. Lưu ý rằng điều này hữu ích như một hướng dẫn về các sự kiện khả dụng cho một thành phần và có thể không hoàn toàn khớp với các sự kiện có sẵn cho các thành phần scripting của Altium Designer.
Để tạo một procedure xử lý sự kiện, hãy chọn sự kiện mà thành phần cần phản ứng với trong thẻ Object Inspector Events rồi nhấp đúp vào trường nhập Event. Procedure xử lý sự kiện, được đặt tên theo thành phần và hành động sự kiện, sau đó sẽ được tự động tạo trong script. Nếu sự kiện được đổi tên trong bảng Object Inspector thì procedure mã tương ứng cũng sẽ được đổi tên theo.

Phương thức Thành phần
Tham khảo tài liệu Component Categories để biết thông tin về các Methods khả dụng cho một thành phần Tool Palette.
Tài liệu này bao gồm tham chiếu cho các danh mục đối tượng điều khiển sau.
- Standard
- Additional
- Win32
- System
- Dialog
- Altium Standard
- Instrument Controls
Phần lớn các danh mục này tập hợp các loại điều khiển form trực quan dựa trên các thành phần VCL chuẩn kiểu Delphi. Hai danh mục Altium Standard và Instrument Controls là ngoại lệ, vì chúng cung cấp các thành phần chỉ có trong hệ thống scripting của Altium Designer.
► Xem Tool Palette Component Categories.
Làm việc với Forms và Components
Tùy biến Script Forms
- Để làm cho một biểu mẫu luôn nằm trên các panel đang mở khác, ví dụ, hãy đặt thuộc tính
FormStylethànhfsStayOnTop. - Để xác định hành vi mặc định của một biểu mẫu, hãy đặt
FormKindthành một trong các giá trị sau;fkNone, fkNormal, fkServerPanelhoặcfkModal.- Nếu chọn
fkModalthì biểu mẫu sẽ là biểu mẫu modal. Nghĩa là biểu mẫu sẽ chờ người dùng nhập liệu trước khi tiếp tục các thao tác như đóng biểu mẫu. - Nếu chọn
fkServerPanelthì biểu mẫu sẽ được hiển thị dưới dạng panel Server. - Nếu chọn
fkNormalthì biểu mẫu hoạt động như một biểu mẫu không modal thông thường.
- Nếu chọn
- Để thêm/xóa thanh cuộn của biểu mẫu, hãy thay đổi giá trị của các thuộc tính
HorzScrollBarvàVertScrollBar. - Để biến biểu mẫu thành khung hoặc phần tử con MDI (Multiple Document Interface), hãy dùng thuộc tính
FormStyle. - Để thay đổi kiểu đường viền của biểu mẫu, hãy dùng các thuộc tính
BorderIconsvàBorderStyle. (Kết quả sẽ hiển thị khi chạy.) - Để thay đổi biểu tượng cho biểu mẫu khi thu nhỏ, hãy dùng thuộc tính
Icon. - Để chỉ định vị trí ban đầu của biểu mẫu trong cửa sổ ứng dụng, hãy dùng thuộc tính
Position. - Để chỉ định trạng thái ban đầu của biểu mẫu, (ví dụ: thu nhỏ, phóng to hoặc bình thường) hãy dùng thuộc tính
WindowState. - Để xác định vùng làm việc của biểu mẫu khi chạy, hãy dùng các thuộc tính
ClientHeightvàClientWidth. Lưu ý rằngClientHeightvàClientWidthbiểu thị vùng bên trong đường viền của biểu mẫu, trong khiHeightvàWidthbiểu thị toàn bộ vùng của biểu mẫu. - Để chỉ định điều khiển nào có tiêu điểm ban đầu trong biểu mẫu khi chạy, hãy dùng thuộc tính
ActiveControlđể chọn từ các thành phần hiện có. - Để chuyển tất cả sự kiện bàn phím đến biểu mẫu, bất kể điều khiển nào đang được chọn, hãy dùng thuộc tính
KeyPreview. - Để chỉ định một menu cụ thể, nếu biểu mẫu chứa nhiều hơn một menu, hãy dùng thuộc tính
Menu.
Làm mới Biểu mẫu và Thành phần
Trong một số trường hợp, phần hiển thị trực quan của biểu mẫu script có thể không còn cập nhật, ví dụ nếu quá trình xử lý nền chuyên sâu từ script khiến các điều khiển không được cập nhật hoặc vẽ lại, làm chúng có vẻ bị treo hoặc lỗi hiển thị.
Phương thức Update của biểu mẫu script cung cấp một cách lập trình để làm mới nội dung đồ họa của biểu mẫu hoặc (các) điều khiển cụ thể. Trong ví dụ mã bên dưới, các dòng mã của phương thức Update được tô xám để làm nổi bật.
Using the Update method to refresh the Status Bar:
Procedure TConverterForm.loadbuttonClick(Sender: TObject);
Var
I, J : Integer;
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
For J := 0 to Image1.Picture.Height – 1 Do
For I := 0 to Image1.Picture.Height – 1 Do
Begin
If Image1.Canvas.Pixels[I,J] <> clWhite Then
Image1.Canvas.Pixels[I,J] := clBlack;
End;
End;
ScalingFactorChange(Nil);
convertbutton.Enabled := True;
LoadButton.Enabled := False;
XStatusBar1.SimpleText := ' Ready...';
XStatusBar1.Update;
End;
End;
Tham khảo dự án script PCB Logo Creator nằm trong thư mục Scripts\Delphiscript Scripts\PCB\PCB Logo Creator của bộ sưu tập scripts có thể tải xuống .
