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 Timer, OpenDialog i MainMenu komponenty.

  • Komponent Timer 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.
  • Ten Button, Edit oraz Memo są komponentami wizualnymi.

Oba typy komponentów pojawiają się w czasie projektowania, ale komponenty niewizualne nie są widoczne w czasie wykonywania. Komponenty z panelu Tool Palette są zorientowane obiektowo i posiadają trzy następujące elementy:

  • Właściwości
  • Zdarzenia
  • Metody

A Property to cecha obiektu, która wpływa na jego widoczne zachowanie lub operacje wykonywane przez ten obiekt. Na przykład właściwość Visible określa, czy obiekt ten jest widoczny w formularzu skryptowym.

Zdarzenie Event to akcja lub zdarzenie wykryte przez skrypt. W skrypcie programista pisze kod dla każdego procedora obsługi zdarzeń, przeznaczonego do przechwytywania konkretnego zdarzenia, takiego jak kliknięcie myszą.

Procedura Method to procedura, która jest zawsze powiązana z obiektem i definiuje jego zachowanie.

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 Label służy do wyświetlania tekstu statycznego, a Edit pole służy do umożliwienia użytkownikowi wprowadzenia danych, a Button może służyć do inicjowania działań.

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 Object Inspector panelu.

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 plik), który jest powiązany z odpowiednim kodem skryptowym ( *.PAS ). Dla każdego formularza skryptowego istnieje plik .PAS plik oraz odpowiadający mu .DFM plik.

Podczas pracy z formularzem skryptowym i jego komponentami wszystkie właściwości elementów można przeglądać i modyfikować za pomocą Object Inspector panelu. Można zaznaczyć więcej niż jeden element, klikając je z wciśniętym klawiszem Shift lub przeciągając prostokąt zaznaczenia wokół elementów na formularzu. Formularz skryptowy posiada tytuł (właściwość Caption w Object Inspector ).

Tworzenie nowego formularza skryptowego

Po otwarciu projektu skryptowego kliknij prawym przyciskiem myszy projekt w Projects i kliknij Add New to Project pozycję w menu kontekstowym, a następnie wybierz Delphi Script Form pozycję. Otworzy się nowy formularz skryptu o domyślnej nazwie 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ę ShowModal można wywołać metodę formularza. Visible Właściwość formularza musi mieć wartość false, aby ShowModal metoda formularza skryptowego miała działać poprawnie.

ShowModal example:

Procedure RunDialog;
Begin
  DialogForm.ShowModal;
End;

Poniższy ShowModal przykład przedstawia bardzo proste podejście do wyświetlania formularza skryptowego w momencie RunDialog wywołana zostanie procedura. Należy pamiętać, że wartości można przypisywać do elementów DialogForm obiektu przed DialogForm.ShowModal wywołania metody.

Przedstawiony ModalResult Poniższy przykład właściwości jest nieco bardziej złożony. Poniższe metody w skrypcie są wykorzystywane dla przycisków na formularzu skryptowym. Metody te powodują zamknięcie okna dialogowego, gdy użytkownik kliknie przycisk OK lub Cancel , co zwraca mrOk lub mrCancel z ShowModal odpowiednio.

ModalResult Example:

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;
Można również ustawić ModalResult wartość na mrOk dla OK przycisk oraz mrCancel dla Cancel w ich procedurach obsługi zdarzeń, aby uzyskać taki sam efekt jak powyżej.

Gdy użytkownik kliknie którykolwiek z przycisków w tym formularzu skryptowym, okno dialogowe zostanie zamknięte. Nie ma potrzeby wywoływania metody Close , ponieważ po ustawieniu metody ModalResult metoda jest ustawiona, silnik skryptowy automatycznie zamyka formularz skryptowy.

Należy pamiętać, że jeśli chcesz ustawić ModalResult na Cancel po naciśnięciu przez użytkownika przycisku Esc , należy użyć Object Inspector panel, aby ustawić właściwość przycisku „Anuluj” Cancel na Truelub wstaw Sender.Cancel := True w procedurze obsługi zdarzenia przycisku CancelButtonClick .

Przyjmowanie danych od użytkownika

Jednym z popularnych komponentów, które mogą przyjmować dane wprowadzane przez użytkownika, jest komponent TEdit komponent. Komponent ten posiada pole, w którym użytkownik może wpisać ciąg znaków. Należy zauważyć, że istnieją również inne komponenty Delphi, takie jak TMaskEdit, który jest komponentem edycji z maską wprowadzania danych przechowywaną w ciągu znaków — służy ona do kontrolowania lub filtrowania wprowadzanych danych.

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 Tab lub klikając inny element sterujący w formularzu.

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ń.

See also
Projekt HelloWorld z Scripts\DelphiScript Scripts\General\ folderu kolekcji skryptów.
Przykładowy skrypt ShowModal z Scripts\DelphiScript Scripts\General\kolekcji skryptów.

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 zostało zdefiniowane zdarzenie dla przycisku, zostanie ono wykonane.

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ą OnClick zdarzenie, które jest wyzwalane, gdy użytkownik kliknie komponent. Wszystkie takie komponenty mają również zdarzenie związane z uzyskaniem i utratą fokusu. Jeśli jednak kod dla OnEnter nie został określony OnExit nie został określony (OnEnter - kontrolka uzyskała fokus; OnExit – kontrolka utraciła fokus), zdarzenie to zostanie zignorowane przez skrypt.

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ć Properties kartę w Object Inspector panelu.

Zdarzenia komponentu

Aby wyświetlić listę zdarzeń, na które komponent może reagować, wybierz komponent i otwórz kartę Events kartę w Object Inspector panelu. Aby utworzyć procedurę obsługi zdarzenia, wybierz zdarzenie, na które komponent ma reagować, i kliknij dwukrotnie nazwę zdarzenia — system skryptowy automatycznie wstawi kod szkieletu procedury obsługi zdarzenia.

Na przykład wybierz TButton komponent z Tool Palette i upuść go na formularz skryptu, a następnie kliknij dwukrotnie obok OnClick nazwy zdarzenia w Object Inspector . System skryptowy aktywuje edytor kodu i wygeneruje szkielet kodu dla OnClick zostanie wygenerowany szkielet kodu.

Jeśli przycisk posiada Close metodę w CloseClick obsługę zdarzeń, na przykład po kliknięciu przycisku, obsługa zdarzenia przycisku przechwyci OnClick zdarzenie, co spowoduje wykonanie kodu znajdującego się wewnątrz procedury obsługi zdarzenia. W konsekwencji Close metoda zamknie formularz skryptowy.

Podsumowując, należy wybrać komponent przycisku albo bezpośrednio w formularzu, albo za pomocą Object Inspector panelu, wybierz Events stronę, a następnie kliknij dwukrotnie prawą stronę OnClick zdarzenia, a w skrypcie pojawi się nowa procedura obsługi zdarzenia. Alternatywnie można dwukrotnie kliknąć sam przycisk, a system skryptowy doda procedurę obsługi dla tego OnClick zdarzenia. Należy pamiętać, że inne typy komponentów będą miały inne domyślne działania.

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 Nil parametru do Constructor komponentu. Zazwyczaj nie ma potrzeby przekazywania uchwytu formularza, ponieważ formularz skryptowy automatycznie się tym zajmuje. Na przykład można utworzyć i zniszczyć Open oraz Save okna dialogowe (TOpenDialog oraz TSaveDialog z biblioteki Embarcadero Delphi RTL).

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ść FormStyle właściwość na fsStayOnTop.
  • Aby zdefiniować domyślne zachowanie formularza, należy ustawić FormKind na jedną z poniższych wartości: fkNone, fkNormal, fkServerPanel lub fkModal.
  • Jeśli fkModal 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śli fkServerPanel , formularz zostanie wyświetlony jako panel serwera. Jeśli fkNormal , formularz będzie działał jak zwykły formularz niemodalny.
  • Aby usunąć domyślne paski przewijania formularza, należy zmienić wartość parametru HorzScrollBar i 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 BorderIcons i BorderStyle (zmiany są widoczne w czasie wykonywania).
  • 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 Position właściwości.
  • 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 ClientHeight oraz ClientWidth (należy pamiętać, że ClientHeight i ClientWidth oznaczają obszar wewnątrz obramowania formularza; Height a Width oznaczają cały obszar formularza).
  • 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 ActiveControl właściwości.
  • 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 Update metoda formularza skryptowego oraz wiele komponentów skryptowych z Tool Palette , umożliwiają odświeżenie zawartości graficznej formularza lub konkretnych elementów sterujących. W poniższym przykładzie wiersze zawierające metodę Update metody są w poniższym przykładzie zaznaczone na szaro.

StatusBar component and its Update method Example:

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 Creator projektu skryptowego, który można znaleźć w Scripts\Delphiscript Scripts\Pcb\PCB Logo Creator folderze z kolekcją skryptów dostępnych do pobrania.

AI-LocalizedTłumaczenie SI
Jeśli znajdziesz błąd, zaznacz tekst/obraz i naciśnij Ctrl + Enter aby wysłać nam wiadomość.
Dostępność funkcji

Dostępne funkcje zależą od tego, z którego rozwiązania Altium korzystasz – Altium Develop, Altium Agile Teams, Altium Agile Enterprise lub Altium Designer (w ramach aktywnej subskrypcji terminowej).

Jeśli opisana funkcja nie jest widoczna w Twoim oprogramowaniu, skontaktuj się z działem sprzedaży Altium, aby dowiedzieć się więcej.

Starsza dokumentacja

Dokumentacja Altium Designer nie jest już wersjonowana. Jeśli potrzebujesz dostępu do dokumentacji dla starszych wersji Altium Designer, odwiedź sekcję Starsza dokumentacja na stronie Inne instalatory.

Content