Sử dụng các thành phần biểu mẫu VBScript

Sử dụng Thành phần trong Biểu mẫu VBScript

Mặc dù Forms và Components được xây dựng dựa trên Visual Component Library (VCL) của Embarcadero Delphi™, Tool Palette dựa trên Delphi của Altium Designer vẫn được dùng để thả Controls lên một biểu mẫu khi sử dụng VBScript. Ngoài ra, các trình xử lý sự kiện được tạo ra và mã được viết bằng ngôn ngữ VBScript, bất kể nguồn gốc Delphi của Form/Component trong Altium Designer.

Tổng quan về Components

Hệ thống scripting xử lý hai loại component: component trực quan và component không trực quan. Các component trực quan được dùng để xây dựng giao diện người dùng, còn các component không trực quan được dùng cho những tác vụ khác nhau, chẳng hạn như các chức năng do các component Timer, OpenDialogMainMenu cung cấp. Ví dụ, component không trực quan Timer được dùng để kích hoạt đoạn mã cụ thể theo các khoảng thời gian định sẵn và người dùng sẽ không bao giờ nhìn thấy nó. Các component Button, EditMemo là component trực quan — người dùng có thể nhìn thấy chúng.

Cả hai loại component đều xuất hiện tại thời điểm thiết kế, nhưng các component không trực quan sẽ không hiển thị khi chạy. Các component từ panel Tool Palette đều hướng đối tượng và có ba mục sau:

  • Thuộc tính
  • Sự kiện
  • Phương thức

Một property là đặc tính của một đối tượng, ảnh hưởng đến hành vi hiển thị hoặc các thao tác của đối tượng đó. Ví dụ, thuộc tính Visible xác định liệu đối tượng này có thể được nhìn thấy trong một script form hay không.

Một event là một hành động hoặc sự việc được script phát hiện. Trong script, lập trình viên viết mã cho từng event handler, được thiết kế để bắt một sự kiện cụ thể, chẳng hạn như nhấp chuột.

Một method là một thủ tục luôn gắn với một đối tượng và xác định hành vi của đối tượng đó.

Tất cả script form đều có một hoặc nhiều component. Component thường hiển thị thông tin hoặc cho phép người dùng thực hiện một hành động. Ví dụ, Label được dùng để hiển thị văn bản tĩnh, hộp Edit được dùng để cho phép người dùng nhập dữ liệu, và Button có thể được dùng để khởi tạo hành động.

Bất kỳ tổ hợp component nào cũng có thể được đặt trên một form, cho phép người dùng tương tác với chúng khi script đang chạy (runtime). Nhiệm vụ của lập trình viên script là quyết định điều gì sẽ xảy ra khi người dùng nhấp vào một nút hoặc thay đổi văn bản trong hộp Edit.

Hệ thống Scripting cung cấp nhiều component để tạo các giao diện người dùng đơn giản hoặc phức tạp cho script. Tất cả các component có thể đặt trên form đều có trong panel Tool Palette.

Để đặt một component lên form, hãy tìm biểu tượng của nó trong panel Tool Palette và nhấp đúp vào đó. Thao tác này sẽ đặt một component lên form đang hoạt động ở vị trí mặc định, với chiều rộng và chiều cao mặc định. Biểu diễn trực quan của hầu hết các component được xác định bởi tập thuộc tính liên kết của chúng.

Một component đã được đặt, ở vị trí và kích thước mặc định, có thể được thay đổi kích thước hoặc vị trí bằng chuột hoặc thông qua panel Object Inspector. Khi một component được thả lên form, hệ thống Scripting sẽ tự động tạo mã cơ bản cần thiết để sử dụng component đó và cập nhật script form. Để component trên Form hoạt động, việc còn lại chỉ là thiết lập thuộc tính, đưa mã vào các event handler và sử dụng các phương thức khi cần.

Thiết kế Script Form

Một script form được thiết kế để tương tác với người dùng trong môi trường Altium Designer. Thiết kế script form là cốt lõi của phát triển trực quan trong Altium Designer.

Mỗi component được đặt trên một script form và mọi thuộc tính được thiết lập đều được lưu trong một tệp mô tả form (tệp *.dfm) và có mối quan hệ với mã script liên kết (tệp *.vbs). Vì vậy, với mỗi script form sẽ có tệp *.vbs và tệp *.dfm tương ứng.

Khi làm việc với script form và các component của nó, có thể truy cập và chỉnh sửa thuộc tính của chúng bằng panel Object Inspector. Có thể chọn nhiều component bằng cách giữ Shift và nhấp vào các component, hoặc kéo một khung chọn bao quanh các component trên script form. Một script form có tiêu đề được ánh xạ tới thuộc tính Caption trong panel Object Inspector.

Tạo Script Form Mới

Khi một script project đang mở, nhấp chuột phải vào project trong panel Projects và chọn các mục Add New to Project rồi VB Script Form từ menu ngữ cảnh. Một script form mới sẽ được tạo với tên mặc định EditScript1.vbs . Ngoài ra, trong một project *.PrjPCB, hãy chọn lệnh File » New » Script Files » VB Script Form.

Hiển thị Script Form

Một script cần có một routine để hiển thị form khi script form được thực thi trong Altium Designer. Trong routine này, phương thức ShowModal được gọi cho form. Thuộc tính Visible của form cần được đặt thành false (bỏ chọn) để phương thức ShowModal của script form hoạt động chính xác.

Ví dụ ShowModal

Sub RunDialog
  DialogForm.ShowModal
End Sub

Ví dụ ShowModal ở trên là một cách đơn giản để hiển thị script form khi hộp thoại RunDialog từ script được gọi. Lưu ý rằng có thể gán giá trị cho các component của đối tượng DialogForm trước khi phương thức DialogForm.ShowModal được gọi.

Ví dụ ModalResult bên dưới phức tạp hơn. Các phương thức phía sau của nó được dùng cho các nút trong script form. Các phương thức script khiến hộp thoại kết thúc khi người dùng nhấp vào nút OK hoặc Cancel, tương ứng sẽ trả về mrOk hoặc mrCancel từ phương thức 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

Điều tương tự như trên cũng có thể được thực hiện bằng cách đặt giá trị ModalResult thành mrOk cho nút OK và thành mrCancel cho nút Cancel trong các event handler của chúng. Khi người dùng nhấp vào một trong hai nút, hộp thoại sẽ đóng. Không cần gọi phương thức Close, vì khi phương thức ModalResult đã được thiết lập, script engine sẽ tự động đóng script form.

Lưu ý rằng để đặt ModalResult của form thành cancel khi người dùng nhấn phím Esc, hãy đặt thuộc tính Cancel của nút Cancel thành true (được chọn) trong panel Object Inspector, hoặc chèn Sender.Cancel := True vào event handler CancelButtonClick của nút trên form.

Chấp nhận Dữ liệu Nhập từ Người dùng

Một trong những component phổ biến có thể nhận dữ liệu nhập từ người dùng là component EditBox. Component EditBox này có một trường văn bản nơi người dùng có thể gõ vào một chuỗi ký tự. Ngoài ra còn có các component khác có thể nhận văn bản như masked edit component, tức là một edit component có mặt nạ nhập cho trường văn bản. Mặt nạ này kiểm soát, hoặc lọc, dữ liệu nhập và được lưu trong một chuỗi tham số.

Ví dụ bên dưới minh họa điều gì xảy ra khi người dùng nhấp vào nút sau khi nhập văn bản vào hộp edit. Lưu ý rằng nếu người dùng không nhập văn bản nào vào edit component, event handler sẽ phản hồi bằng một thông báo cảnh báo

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

Lưu ý rằng người dùng có thể chuyển tiêu điểm nhập trên form bằng phím Tab hoặc bằng cách nhấp vào một điều khiển khác trên form.

Phản hồi với Sự kiện

Khi một form hoặc component được người dùng chọn, Altium Designer gửi một thông điệp đến Hệ thống Scripting, hệ thống này sẽ phản hồi thông báo sự kiện bằng cách gọi phương thức event handler thích hợp.

Viết Event Handler

Một script có thể cần phản hồi với các sự kiện có thể xảy ra với một component tại thời điểm chạy. Một sự kiện là cầu nối giữa một tình huống xảy ra trong Altium Designer, chẳng hạn như nhấp vào một nút, và một đoạn mã phản hồi với tình huống đó. Đoạn mã phản hồi đó là event handler, có chức năng sửa đổi giá trị thuộc tính và gọi các phương thức.

Cùng với các thuộc tính của component, mỗi component còn có một tập tên sự kiện. Lập trình viên script quyết định cách nó sẽ phản ứng với hành động của người dùng trong Altium Designer. Chẳng hạn, khi người dùng nhấp vào một nút trên form, Altium Designer gửi một thông điệp đến script và script phản ứng với sự kiện mới này — nếu sự kiện OnClick của nút được chỉ định, nó sẽ được thực thi.

Tất cả các component như vậy cũng có sự kiện để nhận và mất tiêu điểm. Tuy nhiên, nếu mã cho OnEnter và OnExit không được chỉ định (OnEnter - điều khiển có tiêu điểm; OnExit - điều khiển mất tiêu điểm), sự kiện sẽ bị script bỏ qua.

Thuộc tính Component

Để xem danh sách thuộc tính của một component, hãy chọn component đó và kích hoạt tab Properties trong panel Object Inspector.

Sự kiện của Component

Để xem danh sách sự kiện mà một component có thể phản ứng, hãy chọn component đó và kích hoạt tab Events trong panel Object Inspector. Để tạo một thủ tục xử lý sự kiện cho component phản ứng, hãy chọn sự kiện phù hợp và nhấp đúp vào tên của nó.

Ví dụ, chọn component Button1 từ panel Tool Palette, thả nó lên script form, rồi nhấp đúp bên cạnh tên sự kiện OnClick. Hệ thống scripting sẽ chuyển tiêu điểm về Code Editor, nơi mã khung cho sự kiện OnClick sẽ được tạo. Nếu một nút có phương thức Close trong event handler CloseClick của nó, khi nút được nhấp thì event handler của nó sẽ bắt sự kiện nhấp chuột và đoạn mã bên trong event handler sẽ được thực thi. Tức là, phương thức Close sẽ đóng script form.

Tóm lại, một event handler được tạo trong script bằng cách chọn một component trên form, hoặc bằng panel Object Inspector, rồi nhấp đúp vào bên phải của sự kiện mong muốn (ví dụ, OnClick) trong tab Events của Inspector — khung mã thích hợp sẽ xuất hiện trong script.

Ngoài ra, bằng cách nhấp đúp vào một nút, hệ thống scripting sẽ thêm một handler cho sự kiện OnClick. Các loại component khác sẽ có những hành động mặc định hoàn toàn khác.

Phương thức của Component

Xem Component Reference để biết danh sách các phương thức của một component, và tham khảo tài liệu Embarcadero Delphi để có thông tin chi tiết hơn.

Tạo các thành phần trong thời gian chạy

Các thành phần có thể được tạo và hủy trực tiếp trong một script. Thông thường, không cần truyền handle của biểu mẫu vì biểu mẫu script sẽ tự động xử lý việc đó — thay vào đó, hãy truyền tham số Nil vào hàm khởi tạo của thành phần.

Ví dụ: có thể tạo và hủy các hộp thoại OpenSave (các lớp TOpenDialogTSaveDialog, là một phần của Delphi RTL).

AI-LocalizedBản địa hóa bằng AI
Nếu bạn phát hiện vấn đề, hãy chọn văn bản/hình ảnh và nhấnCtrl + Enterđể gửi phản hồi cho chúng tôi.
Tính khả dụng của tính năng

Các tính năng có sẵn cho bạn phụ thuộc vào giải pháp Altium mà bạn đang sử dụng – Altium Develop, một phiên bản của Altium Agile (Agile Teams hoặc Agile Enterprise), hoặc Altium Designer (đang còn hiệu lực).

Nếu bạn không thấy tính năng được đề cập trong phần mềm của mình, liên hệ Bộ phận Kinh doanh của Altium để tìm hiểu thêm.

Tài liệu cũ

Tài liệu Altium Designer không còn được phân phiên bản. Nếu bạn cần truy cập tài liệu cho các phiên bản cũ hơn của Altium Designer, hãy truy cập mục Tài liệu cũ trên trang Trình cài đặt khác.

Nội dung