Biểu mẫu & Linh kiện
Tổng quan về các thành phần đồ họa
Hệ thống kịch bản xử lý hai loại thành phần: thành phần trực quan và thành phần không trực quan.
Các thành phần trực quan được sử dụng để xây dựng giao diện người dùng, còn các thành phần không trực quan được sử dụng cho các tác vụ khác nhau, chẳng hạn như TimerOpenDialogMainMenu
- Thành phần
thành phần phi trực quan có thể được sử dụng để kích hoạt mã cụ thể theo các khoảng thời gian đã lên lịch, và người dùng không bao giờ nhìn thấy thành phần này.Timer - Thành phần
,Button vàEdit là các thành phần trực quan.Memo
Cả hai loại thành phần đều xuất hiện trong giai đoạn thiết kế, nhưng các thành phần không hiển thị sẽ không hiển thị trong giai đoạn chạy chương trình. Các thành phần từ
- Thuộc tính
- Sự kiện
- Phương thức
Một
Một
Một
Tất cả các biểu mẫu kịch bản đều có một hoặc nhiều thành phần. Các thành phần 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ụ, một LabelEditButton
Bất kỳ sự kết hợp nào của các thành phần đều có thể được đặt trên một biểu mẫu, và trong khi kịch bản đang chạy, người dùng có thể tương tác với bất kỳ thành phần nào trên biểu mẫu. Nhiệm vụ của lập trình viên 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 một Edit
Hệ thống Scripting cung cấp một số thành phần có thể được sử dụng để tạo giao diện người dùng phức tạp cho các tập lệnh. Để đặt một thành phần vào biểu mẫu, hãy tìm biểu tượng của thành phần đó trênbảng Công cụ và nhấp đúp vào biểu tượng đó. Thao tác này sẽ đặt thành phần vào biểu mẫu đang hoạt động. Hình thức hiển thị của hầu hết các thành phần được thiết lập thông qua các thuộc tính của chúng. Ban đầu, một thành phần được đặt ở vị trí mặc định trên biểu mẫu nhưng có thể được di chuyển (kéo) và thay đổi kích thước (kéo giãn) theo yêu cầu. Bạn cũng có thể thay đổi kích thước và vị trí sau này bằng cách sử dụng
Khi một thành phần được thả vào biểu mẫu, hệ thống Tạo tập lệnh sẽ tự động tạo mã cần thiết để sử dụng thành phần đó và cập nhật biểu mẫu tập lệnh. Chỉ cần thiết lập các thuộc tính và triển khai mã xử lý sự kiện để sử dụng các phương thức mong muốn nhằm làm cho thành phần trên biểu mẫu hoạt động.
Thiết kế biểu mẫu kịch bản
Một biểu mẫu kịch bản được thiết kế để tương tác với người dùng trong môi trường. Thiết kế biểu mẫu kịch bản là cốt lõi của phát triển trực quan.
Trong thực tế, tất cả các thành phần đều được đặt trên một biểu mẫu kịch bản, và mỗi thuộc tính được thiết lập đều được lưu trữ trong một tệp mô tả biểu mẫu (một *.DFM*.PAS.PAS.DFM
Khi làm việc với một biểu mẫu kịch bản và các thành phần của nó, tất cả các thuộc tính của phần tử đều có thể được kiểm tra và sửa đổi bằng cách sử dụng Caption
Tạo biểu mẫu kịch bản mới
Khi dự án kịch bản đang mở, nhấp chuột phải vào một dự án trong EditScript1.pas
Hiển thị biểu mẫu kịch bản
Một kịch bản cần có một thủ tục để hiển thị biểu mẫu khi biểu mẫu kịch bản được thực thi. Trong thủ tục này, phương thức ShowModalVisibleShowModal
Procedure RunDialog; Begin DialogForm.ShowModal; End;
Ví dụ ShowModalRunDialogDialogFormDialogForm.ShowModal
Ví 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;
Khi người dùng nhấp vào một trong hai nút trên biểu mẫu tập lệnh này, hộp thoại sẽ đóng lại. Không cần phải gọi phương thức CloseModalResult
Lưu ý rằng nếu bạn muốn thiết lập thuộc tính ModalResultCancelCancelTrueSender.Cancel := TrueCancelButtonClick
Chấp nhận đầu vào từ người dùng
Một trong những thành phần phổ biến có thể nhận đầu vào từ người dùng là thành phần TEditTMaskEdit
Ví dụ dưới đây minh họa quy trình khi người dùng nhấp vào nút sau khi nhập nội dung vào hộp chỉnh sửa. Nếu người dùng không nhập gì vào thành phần chỉnh sửa (trống), trình xử lý sự kiện sẽ phản hồi bằng một thông báo cảnh báo.
Procedure TScriptForm.ButtonClick(Sender : TObject); Begin If Edit1.Text = '' Then Begin ShowMessage('Warning - empty input!'); Exit; End; // do something else for the input End;
Lưu ý rằng người dùng có thể chuyển tiêu điểm nhập liệu của hộp thoại bằng cách nhấn phím
Phản hồi sự kiện
Khi nhấp vào một nút trên biểu mẫu hoặc thành phần, Hệ thống kịch bản sẽ phản hồi bằng cách nhận thông báo sự kiện từ Altium Designer và gọi phương thức xử lý sự kiện thích hợp.
Dự án HelloWorld từ Scripts\DelphiScript Scripts\General\
Tập lệnh ví dụ ShowModal từ Scripts\DelphiScript Scripts\General\
Viết trình xử lý sự kiện
Mỗi thành phần trong tập lệnh biểu mẫu có một tập hợp các tên sự kiện, và chúng được sử dụng bởi các trình xử lý sự kiện tập lệnh để xác định cách tập lệnh sẽ phản ứng với các hành động của người dùng trong Altium Designer. Ví dụ: khi người dùng nhấp vào một nút trên biểu mẫu, Altium Designer sẽ gửi một thông báo đến tập lệnh và tập lệnh sẽ phản ứng với sự kiện mới này. Nếu OnClick
Mã để phản hồi các sự kiện thường được chứa trong các trình xử lý sự kiện DelphiScript, và tất cả các thành phần đều có một tập hợp các sự kiện mà chúng có thể phản ứng. Ví dụ, tất cả các thành phần có thể nhấp đều có một OnClickOnEnterOnExitOnEnterOnExit
Tóm lại, sự kiện là mối liên kết giữa một hành động 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 lại hành động đó. Đoạn mã phản hồi này được gọi là trình xử lý sự kiện. Đoạn mã này thay đổi các giá trị thuộc tính và gọi các phương thức.
Thuộc tính của thành phần
Để xem danh sách các thuộc tính của một thành phần, hãy chọn thành phần đó và mở
Sự kiện của thành phần
Để xem danh sách các sự kiện mà một thành phần có thể phản ứng, hãy chọn thành phần đó và mở
Ví dụ: chọn TButtonOnClickOnClick

Nếu một nút có CloseCloseClickOnClickClose
Tóm lại, hãy chọn một thành phần nút trên biểu mẫu hoặc bằng cách sử dụng OnClick
Các phương thức của thành phần
Để xem danh sách các phương thức của một thành phần, hãy tham khảo tài liệu Tham chiếu thành phần.
Thả thành phần vào biểu mẫu tập lệnh
Để sử dụng các thành phần từ bảng Công cụ trong một tập lệnh, cần phải có sẵn một biểu mẫu tập lệnh trước khi có thể thả các thành phần vào biểu mẫu đó. Thông thường, khi các thành phần được thả vào biểu mẫu tập lệnh, các đối tượng này không cần phải được tạo hoặc hủy — biểu mẫu tập lệnh sẽ tự động thực hiện việc này.
Hệ thống kịch bản cũng tự động tạo mã cần thiết để sử dụng thành phần và cập nhật biểu mẫu kịch bản. Sau đó, bạn chỉ cần thiết lập các thuộc tính, đặt mã vào trình xử lý sự kiện và sử dụng các phương thức cần thiết để triển khai một biểu mẫu kịch bản hoạt động.
Tạo thành phần trong tập lệnh
Các thành phần có thể được tạo hoặc hủy trực tiếp trong một tập lệnh bằng cách truyền tham số NilConstructorOpenSaveTOpenDialogTSaveDialog
Tùy chỉnh các biểu mẫu kịch bản
Các điểm chính để tùy chỉnh biểu mẫu kịch bản là:
- Để buộc một biểu mẫu luôn hiển thị ở trên cùng so với các bảng điều khiển đang mở khác, hãy đặt thuộc tính
thuộc tính thànhFormStyle .fsStayOnTop - Để xác định hành vi mặc định của biểu mẫu, hãy đặt
thành một trong các giá trị sau;FormKind ,fkNone ,fkNormal hoặcfkServerPanel .fkModal - Nếu
được đóng lại, thì biểu mẫu sẽ là biểu mẫu dạng modal — tức là, sẽ chờ người dùng nhập liệu trước khi tiếp tục, chẳng hạn như đóng biểu mẫu. NếufkModal thì biểu mẫu sẽ được hiển thị dưới dạng bảng điều khiển máy chủ. NếufkServerPanel thì biểu mẫu sẽ hoạt động như một biểu mẫu thông thường không phải dạng modal.fkNormal - Để loại bỏ thanh cuộn mặc định của biểu mẫu, hãy thay đổi giá trị của thuộc tính
vàHorzScrollBar .VertScrollBar - Để biến biểu mẫu thành khung MDI hoặc thành phần con MDI, hãy sử dụng thuộc tính
.FormStyle - Để thay đổi kiểu viền của biểu mẫu, hãy sử dụng thuộc tính
vàBorderIcons (kết quả sẽ hiển thị trong thời gian chạy).BorderStyle - Để thay đổi biểu tượng của biểu mẫu khi thu nhỏ, hãy sử dụng thuộc tính
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 sử dụng thuộc tính
thuộc tính này.Position - Để chỉ định trạng thái ban đầu của biểu mẫu (ví dụ: thu nhỏ, mở rộng hoặc bình thường), hãy sử dụng thuộc tính
thuộc tính này.WindowState - Để xác định vùng làm việc của biểu mẫu trong thời gian chạy, hãy sử dụng thuộc tính
vàClientHeight (lưu ý rằngClientWidth vàClientHeight đại diện cho khu vực bên trong đường viền của biểu mẫu;ClientWidth cònHeight đại diện cho toàn bộ khu vực của biểu mẫu).Width - Để chỉ định điều khiển nào sẽ có tiêu điểm ban đầu trong biểu mẫu tại thời điểm chạy, hãy sử dụng thuộc tính
thuộc tính này.ActiveControl - Để chuyển tất cả các sự kiện bàn phím đến biểu mẫu, bất kể điều khiển nào được chọn, hãy sử dụng thuộc tính
thuộc tính này.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 sử dụng thuộc tính
thuộc tính.Menu
Làm mới biểu mẫu và thành phần kịch bản
Khi giao diện của biểu mẫu kịch bản trở nên lỗi thời, ví dụ như các điều khiển không được cập nhật hoặc vẽ lại, thì các điều khiển có thể trông như bị đóng băng hoặc bị hỏng — điều này có thể do quá trình xử lý nền nặng nề từ kịch bản đó gây ra.
Phương thức 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;
Đoạn mã trên được trích từ PCB Logo CreatorScripts\Delphiscript Scripts\Pcb\PCB Logo Creator