Formularze i komponenty
Przegląd komponentów graficznych
System skryptowy obsługuje dwa rodzaje komponentów: komponenty wizualne i niewizualne.
Komponenty wizualne służą do tworzenia interfejsu użytkownika, natomiast komponenty niewizualne są wykorzystywane do różnych zadań, takich jak TimerOpenDialogMainMenu
- Komponent
komponent niewizualny może służyć do uruchamiania określonego kodu w zaplanowanych odstępach czasu i nigdy nie jest widoczny dla użytkownika.Timer - Ten
,Button orazEdit są komponentami wizualnymi.Memo
Oba typy komponentów pojawiają się w czasie projektowania, ale komponenty niewizualne nie są widoczne w czasie wykonywania. Komponenty z panelu
- Właściwości
- Zdarzenia
- Metody
A
Zdarzenie
Procedura
Wszystkie formularze skryptowe zawierają co najmniej jeden komponent. Komponenty zazwyczaj wyświetlają informacje lub umożliwiają użytkownikowi wykonanie jakiejś czynności. Na przykład LabelEditButton
Na formularzu można umieścić dowolną kombinację komponentów, a podczas działania skryptu użytkownik może wchodzić w interakcję z dowolnym komponentem na formularzu. Zadaniem programisty jest określenie, co ma się stać, gdy użytkownik kliknie przycisk lub zmieni tekst w Edit
System skryptowy udostępnia szereg komponentów, które można wykorzystać do tworzenia złożonych interfejsów użytkownika dla skryptów. Aby umieścić komponent w formularzu, należy znaleźć jego ikonę wpanelu Paleta narzędzi i kliknąć ją dwukrotnie. Ta czynność umieszcza komponent w aktywnym formularzu. Wygląd większości komponentów ustawia się za pomocą ich właściwości. Komponent jest początkowo umieszczany w domyślnej pozycji na formularzu, ale można go przesuwać (przeciągać) i zmieniać jego rozmiar (rozciągać) zgodnie z potrzebami. Rozmiar i położenie można również zmienić później, korzystając z
Po upuszczeniu komponentu na formularz system skryptowy automatycznie generuje kod niezbędny do korzystania z komponentu i aktualizuje formularz skryptowy. Aby komponent na formularzu działał zgodnie z oczekiwaniami, wystarczy ustawić właściwości i zaimplementować kod obsługi zdarzeń, wykorzystujący żądane metody.
Projektowanie formularzy skryptowych
Formularz skryptowy jest przeznaczony do interakcji z użytkownikiem w danym środowisku. Projektowanie formularzy skryptowych stanowi podstawę programowania wizualnego.
W praktyce wszystkie komponenty umieszcza się na formularzu skryptowym, a każda ustawiona właściwość jest zapisywana w pliku opisującym formularz ( *.DFM*.PAS.PAS.DFM
Podczas pracy z formularzem skryptowym i jego komponentami wszystkie właściwości elementów można przeglądać i modyfikować za pomocą Caption
Tworzenie nowego formularza skryptowego
Po otwarciu projektu skryptowego kliknij prawym przyciskiem myszy projekt w EditScript1.pas
Wyświetlanie formularza skryptu
Skrypt musi zawierać procedurę, która wyświetla formularz po uruchomieniu formularza skryptu. W ramach tej procedury można wywołać metodę ShowModalVisibleShowModal
Procedure RunDialog; Begin DialogForm.ShowModal; End;
Poniższy ShowModalRunDialogDialogFormDialogForm.ShowModal
Przedstawiony 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;
Gdy użytkownik kliknie którykolwiek z przycisków w tym formularzu skryptowym, okno dialogowe zostanie zamknięte. Nie ma potrzeby wywoływania metody CloseModalResult
Należy pamiętać, że jeśli chcesz ustawić ModalResultCancelCancelTrueSender.Cancel := TrueCancelButtonClick
Przyjmowanie danych od użytkownika
Jednym z popularnych komponentów, które mogą przyjmować dane wprowadzane przez użytkownika, jest komponent TEditTMaskEdit
Poniższy przykład ilustruje proces, który ma miejsce, gdy użytkownik kliknie przycisk po wpisaniu czegoś w polu edycji. Jeśli użytkownik nie wpisał niczego w komponencie edycji (pole jest puste), procedura obsługi zdarzenia wyświetla komunikat ostrzegawczy.
Procedure TScriptForm.ButtonClick(Sender : TObject); Begin If Edit1.Text = '' Then Begin ShowMessage('Warning - empty input!'); Exit; End; // do something else for the input End;
Należy zauważyć, że użytkownik może zmienić fokus okna dialogowego za pomocą klawisza
Reagowanie na zdarzenia
Po kliknięciu przycisku w formularzu lub komponencie system skryptowy reaguje, odbierając powiadomienie o zdarzeniu z programu Altium Designer i wywołując odpowiednią metodę obsługi zdarzeń.
Projekt HelloWorld z Scripts\DelphiScript Scripts\General\
Przykładowy skrypt ShowModal z Scripts\DelphiScript Scripts\General\
Tworzenie procedur obsługi zdarzeń
Każdy komponent w skrypcie formularza posiada zestaw nazw zdarzeń, które są wykorzystywane przez procedury obsługi zdarzeń skryptu, określające sposób reakcji skryptu na działania użytkownika w programie Altium Designer. Na przykład, gdy użytkownik kliknie przycisk w formularzu, program Altium Designer wysyła komunikat do skryptu, a skrypt reaguje na to nowe zdarzenie. Jeśli OnClick
Kod reagujący na zdarzenia jest zazwyczaj zawarty w procedurach obsługi zdarzeń DelphiScript, a wszystkie komponenty mają zestaw zdarzeń, na które mogą reagować. Na przykład wszystkie komponenty, które można kliknąć, mają OnClickOnEnterOnExitOnEnterOnExit
Podsumowując, zdarzenie to powiązanie między zdarzeniem w programie Altium Designer, takim jak kliknięcie przycisku, a fragmentem kodu, który reaguje na to zdarzenie. Kod reagujący na zdarzenie to procedurą obsługi zdarzenia. Kod ten modyfikuje wartości właściwości i wywołuje metody.
Właściwości komponentu
Aby wyświetlić listę właściwości komponentu, należy zaznaczyć komponent i otworzyć
Zdarzenia komponentu
Aby wyświetlić listę zdarzeń, na które komponent może reagować, wybierz komponent i otwórz kartę
Na przykład wybierz TButtonOnClickOnClick

Jeśli przycisk posiada CloseCloseClickOnClickClose
Podsumowując, należy wybrać komponent przycisku albo bezpośrednio w formularzu, albo za pomocą OnClick
Metody komponentów
Aby zapoznać się z listą metod danego komponentu, zajrzyj do dokumentu „Kompendium komponentów ”.
Umieszczanie komponentów na formularzu skryptowym
Aby użyć komponentów z panelu Paleta narzędzi w skrypcie, musi istnieć formularz skryptowy, na którym można upuścić komponenty. Zazwyczaj po upuszczeniu komponentów na formularz skryptowy obiekty te nie muszą być tworzone ani niszczone — formularz skryptowy robi to automatycznie.
System skryptowy automatycznie generuje również kod niezbędny do korzystania z komponentu i aktualizuje formularz skryptowy. Następnie wystarczy ustawić właściwości, umieścić kod w procedurach obsługi zdarzeń oraz użyć wymaganych metod, aby zaimplementować działający formularz skryptowy.
Tworzenie komponentów w skrypcie
Komponenty można bezpośrednio tworzyć lub usuwać w skrypcie, przekazując parametr NilConstructorOpenSaveTOpenDialogTSaveDialog
Dostosowywanie formularzy skryptowych
Najważniejsze kwestie dotyczące dostosowywania formularzy skryptowych to:
- Aby wymusić wyświetlanie formularza na wierzchu innych otwartych paneli, należy ustawić właściwość
właściwość naFormStyle .fsStayOnTop - Aby zdefiniować domyślne zachowanie formularza, należy ustawić
na jedną z poniższych wartości:FormKind ,fkNone ,fkNormal lubfkServerPanel .fkModal - Jeśli
jest zamknięte, formularz będzie formularzem modalnym — to znaczy będzie czekał na wprowadzenie danych przez użytkownika przed kontynuowaniem, np. przed zamknięciem formularza. JeślifkModal , formularz zostanie wyświetlony jako panel serwera. JeślifkServerPanel , formularz będzie działał jak zwykły formularz niemodalny.fkNormal - Aby usunąć domyślne paski przewijania formularza, należy zmienić wartość parametru
iHorzScrollBar .VertScrollBar - Aby ustawić formularz jako ramkę MDI lub element podrzędny MDI, należy użyć
.FormStyle - Aby zmienić styl obramowania formularza, należy użyć właściwości
iBorderIcons (zmiany są widoczne w czasie wykonywania).BorderStyle - Aby zmienić ikonę zminimalizowanego formularza, należy użyć właściwości
.Icon - Aby określić początkowe położenie formularza w oknie aplikacji, należy użyć właściwości
właściwości.Position - Aby określić stan początkowy formularza (np. zminimalizowany, zmaksymalizowany lub normalny), należy użyć właściwości
.WindowState - Aby zdefiniować obszar roboczy formularza w czasie wykonywania, należy użyć właściwości
orazClientHeight (należy pamiętać, żeClientWidth iClientHeight oznaczają obszar wewnątrz obramowania formularza;ClientWidth aHeight oznaczają cały obszar formularza).Width - Aby określić, który element sterujący ma początkowy fokus w formularzu w czasie wykonywania, należy użyć właściwości
właściwości.ActiveControl - Aby przekazać wszystkie zdarzenia klawiaturowe do formularza, niezależnie od wybranego elementu sterującego, należy użyć właściwości
.KeyPreview - Aby określić konkretne menu, jeśli formularz zawiera więcej niż jedno menu, należy użyć właściwości
.Menu
Odświeżanie formularzy skryptowych i komponentów
Gdy zawartość formularza skryptowego staje się nieaktualna — na przykład gdy elementy sterujące nie są aktualizowane lub nie są odświeżane — mogą one wyglądać na zawieszone lub uszkodzone; może to wynikać z intensywnego przetwarzania w tle realizowanego przez ten skrypt.
Metoda 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;
Powyższy fragment kodu pochodzi z PCB Logo CreatorScripts\Delphiscript Scripts\Pcb\PCB Logo Creator