Udostępnij za pośrednictwem


ToolStrip — Architektura formantu

Klasy ToolStrip i ToolStripItem zapewniają elastyczny, rozszerzalny system do wyświetlania elementów paska narzędzi, stanu i menu. Wszystkie te klasy są zawarte w System.Windows.Forms przestrzeni nazw i są one zwykle nazywane prefiksem "ToolStrip" (np ToolStripOverflow. ) lub sufiksem "Strip" (na przykład MenuStrip).

ToolStrip

W poniższych tematach opisano ToolStrip i kontrolki, które pochodzą z niego.

ToolStrip jest abstrakcyjną klasą bazową dla MenuStrip, StatusStripi ContextMenuStrip. Poniższy model obiektów przedstawia hierarchię ToolStrip dziedziczenia.

Diagram that shows the ToolStrip object model.

Dostęp do wszystkich elementów w kolekcji ToolStrip można uzyskać za pośrednictwem kolekcji Items . Dostęp do wszystkich elementów w kolekcji ToolStripDropDownItem można uzyskać za pośrednictwem kolekcji DropDownItems . W klasie pochodnej z ToolStripklasy można również użyć DisplayedItems właściwości , aby uzyskać dostęp tylko do tych elementów, które są obecnie wyświetlane. Są to elementy, które nie znajdują się obecnie w menu przepełnienia.

Poniższe elementy zostały specjalnie zaprojektowane tak, aby bezproblemowo współdziałały zarówno z ToolStripSystemRenderer wszystkimi orientacjami, jak i ToolStripProfessionalRenderer we wszystkich orientacjach. Są one domyślnie dostępne w czasie projektowania dla kontrolki ToolStrip :

MenuStrip to kontener najwyższego poziomu, który zastępuje MainMenuelement . Zapewnia również obsługę kluczy i wiele funkcji interfejsu dokumentu (MDI). Funkcjonalnie ToolStripDropDownItem i ToolStripMenuItem współpracują z elementem MenuStrip, chociaż pochodzą one z elementu ToolStripItem.

Poniższe elementy zostały specjalnie zaprojektowane tak, aby bezproblemowo współdziałały zarówno z ToolStripSystemRenderer wszystkimi orientacjami, jak i ToolStripProfessionalRenderer we wszystkich orientacjach. Są one domyślnie dostępne w czasie projektowania dla kontrolki MenuStrip :

StatusStrip

StatusStrip zastępuje kontrolkę StatusBar . Specjalne funkcje obejmują StatusStrip niestandardowy układ tabeli, obsługę rozmiaru i przenoszenia uchwytów formularza oraz Spring właściwość, która umożliwia ToolStripStatusLabel automatyczne wypełnienie dostępnego miejsca.

Poniższe elementy zostały specjalnie zaprojektowane tak, aby bezproblemowo współdziałały zarówno z ToolStripSystemRenderer wszystkimi orientacjami, jak i ToolStripProfessionalRenderer we wszystkich orientacjach. Są one domyślnie dostępne w czasie projektowania dla kontrolki StatusStrip :

ContextMenuStrip

ContextMenuStripContextMenuzastępuje element . Możesz skojarzyć element z dowolną kontrolką ContextMenuStrip , a kliknięcie prawym przyciskiem myszy automatycznie wyświetli menu kontekstowe (lub menu skrótów). Programowo można wyświetlić ContextMenuStrip przy użyciu Show metody . ContextMenuStrip obsługuje scenariusze z możliwością Opening anulowania i Closing zdarzenia do obsługi dynamicznej populacji i scenariuszy wielokrotnego kliknięcia. ContextMenuStrip obsługuje obrazy, stan sprawdzania elementu menu, tekst, klucze dostępu, skróty i kaskadowe menu.

Poniższe elementy zostały specjalnie zaprojektowane tak, aby bezproblemowo współdziałały zarówno z ToolStripSystemRenderer wszystkimi orientacjami, jak i ToolStripProfessionalRenderer we wszystkich orientacjach. Są one domyślnie dostępne w czasie projektowania dla kontrolki ContextMenuStrip :

ToolStrip — funkcje ogólne

W poniższych tematach opisano funkcje i zachowanie ogólne ToolStrip dla kontrolek pochodnych i .

Malarstwo

Niestandardowe malowanie można wykonywać na ToolStrip kilka sposobów. Podobnie jak w przypadku innych kontrolek formularzy systemu Windows, ToolStrip ToolStripItem obie te metody i zdarzenia mają zastępowalne OnPaint metody i Paint zdarzenia. Podobnie jak w przypadku zwykłego malowania, układ współrzędnych jest powiązany z obszarem klienta kontrolki; oznacza to, że lewy górny róg kontrolki to 0, 0. Zdarzenie Paint i OnPaint metoda ToolStripItem zachowywania się jak inne zdarzenia farby sterującej.

Kontrolki ToolStrip zapewniają również bardziej precyzyjny dostęp do renderowania elementów i kontenera za pośrednictwem ToolStripRenderer klasy, która ma zastępowalne metody malowania tła, tła elementu, obrazu elementu, strzałki elementu, tekstu elementu i obramowania ToolStripelementu . Argumenty zdarzeń dla tych metod uwidaczniają kilka właściwości, takich jak prostokąty, kolory i formaty tekstu, które można dostosować zgodnie z potrzebami.

Aby dostosować tylko kilka aspektów sposobu malowania elementu, zazwyczaj zastępujesz element ToolStripRenderer.

Jeśli piszesz nowy element i chcesz kontrolować wszystkie aspekty obrazu, przesłoń metodę OnPaint . Z poziomu OnPaintprogramu można użyć metod z klasy ToolStripRenderer.

Domyślnie element ToolStrip jest dwukrotnie buforowany, korzystając z OptimizedDoubleBuffer ustawienia .

Rodzicielstwo

Koncepcja własności kontenera i elementu nadrzędnego jest bardziej złożona w ToolStrip kontrolkach niż w innych kontrolkach kontenera windows Forms. Jest to niezbędne do obsługi dynamicznych scenariuszy, takich jak przepełnienie, udostępnianie elementów rozwijanych w wielu ToolStrip elementach i obsługę generowania elementu ContextMenuStrip z kontrolki.

Poniższa lista zawiera opis elementów członkowskich związanych z rodzicielstwami i objaśnienia ich użycia.

  • OwnerItem uzyskuje dostęp do elementu, który jest źródłem elementu rozwijanego. Jest to podobne do SourceControl, ale zamiast zwracać kontrolkę, zwraca wartość ToolStripItem.

  • SourceControl Określa, która kontrolka jest źródłem ContextMenuStrip , gdy wiele kontrolek współużytkuje ten sam ContextMenuStripelement .

  • GetCurrentParent jest akcesorem tylko do odczytu do Parent właściwości . Element nadrzędny różni się od właściciela w tym, że element nadrzędny określa zwrócony bieżący ToolStrip , w którym jest wyświetlany element, który może znajdować się w obszarze przepełnienia.

  • Owner Zwraca kolekcję ToolStrip Items, której kolekcja Items zawiera bieżący ToolStripItemelement . Jest to najlepszy sposób odwołowania ImageList się do innych właściwości najwyższego poziomu ToolStrip bez konieczności pisania specjalnego kodu do obsługi przepełnienia.

Zachowanie odziedziczonych kontrolek

Następujące kontrolki są blokowane za każdym razem, gdy są używane w dziedziczeniu:

Na przykład utwórz nową aplikację Windows Forms przy użyciu co najmniej jednej kontrolki na poprzedniej liście. Ustaw modyfikator dostępu co najmniej jednej kontrolki na public lub protected, a następnie skompiluj projekt. Dodaj formularz dziedziczony z pierwszego formularza, a następnie wybierz dziedziczony formant. Kontrolka jest zablokowana, zachowuje się tak, jakby jej modyfikator dostępu był private.

ToolStripContainer — obsługa dziedziczenia

Kontrolka ToolStripContainer obsługuje ograniczone scenariusze dziedziczone, podobnie jak w poniższym przykładzie:

  1. Utwórz nową aplikację Windows Forms.

  2. Dodaj element ToolStripContainer do formularza.

  3. Ustaw modyfikator ToolStripContainer dostępu elementu na lub protectedpublic .

  4. Dodaj dowolną kombinację kontrolek ToolStrip, MenuStripi ContextMenuStrip do ToolStripPanel regionów obiektu ToolStripContainer.

  5. Skompiluj projekt.

  6. Dodaj formularz dziedziczony z pierwszego formularza.

  7. Wybierz dziedziczony ToolStripContainer formularz.

Dziedziczone zachowanie kontrolek podrzędnych

Po wykonaniu poprzednich kroków następuje następujące zachowanie dziedziczone:

  • W projektancie kontrolka jest wyświetlana z dziedziczonej ikony.

  • Kontrolki ToolStripPanel są zablokowane. Nie można wybrać ani zmienić ich układu.

  • Kontrolki ToolStripContentPanelmożna dodać do , przenieść kontrolki i ustawić je jako podrzędne kontrolki .ToolStripContentPanel

  • Zmiany są utrwalane po utworzeniu formularza.

    Uwaga

    Usuń modyfikatory dostępu ze wszystkich ToolStripPanel kontrolek będących częścią elementu ToolStripContainer. Modyfikator dostępu do kontrolki ToolStripContainer kontroluje całą kontrolę.

Zaufanie częściowe

Ograniczenia związane z ToolStripczęściowym zaufaniem mają na celu zapobieganie nieumyślnym wpisowi danych osobowych, które mogą być używane przez nieautoryzowane osoby lub usługi. Środki ochronne są następujące:

  • ToolStripDropDown kontrolki wymagają AllWindows wyświetlania elementów w obiekcie ToolStripControlHost. Dotyczy to zarówno kontrolek wewnętrznych, takich jak ToolStripTextBox, ToolStripComboBox, i, jak i ToolStripProgressBar kontrolek utworzonych przez użytkownika. Jeśli to wymaganie nie zostanie spełnione, te elementy nie są wyświetlane. Wyjątek nie jest zgłaszany.

  • AutoClose Ustawienie właściwości na false wartość jest niedozwolone, a parametr zdarzenia, który można anulowaćClosing, jest ignorowany. Uniemożliwia to wprowadzanie więcej niż jednego naciśnięć klawiszy bez odrzucania elementu listy rozwijanej. Jeśli to wymaganie nie zostanie spełnione, takie elementy nie są wyświetlane. Wyjątek nie jest zgłaszany.

  • Wiele zdarzeń obsługi naciśnięć klawiszy nie zostanie zgłoszonych, jeśli wystąpią w częściowych kontekstach zaufania innych niż AllWindows.

  • Klucze dostępu nie są przetwarzane, gdy AllWindows nie zostanie udzielona.

Sposób użycia

Następujące wzorce użycia mają wpływ na ToolStrip układ, interakcję z klawiaturą i zachowanie użytkownika końcowego:

  • Dołączono do elementu ToolStripPanel

    Można ToolStrip zmienić położenie obiektu w obrębie ToolStripPanel i w poprzek ToolStripPanel. Właściwość Dock jest ignorowana, a jeśli Stretch właściwość to false, rozmiar ToolStrip elementu rośnie w miarę dodawania elementów do elementu ToolStripPanel. Zazwyczaj element ToolStrip nie uczestniczy w kolejności tabulacji.

  • Zadokowane

    Element ToolStrip jest umieszczony po jednej stronie kontenera w stałej pozycji, a jego rozmiar rozszerza się na całej krawędzi, do której jest zadokowany. Zazwyczaj element ToolStrip nie uczestniczy w kolejności tabulacji.

  • Bezwzględnie rozmieszczone

    Element ToolStrip jest podobny do innych kontrolek, w tym, że jest umieszczany przez Location właściwość, ma stały rozmiar i zazwyczaj uczestniczy w kolejności tabulacji.

Interakcja z klawiaturą

Klawisze dostępu

W połączeniu z klawiszem ALT lub po klawiszu ALT klucze dostępu są jednym ze sposobów aktywowania kontrolki przy użyciu klawiatury. ToolStrip obsługuje zarówno jawne, jak i niejawne klucze dostępu. Jawna definicja używa znaku ampersand (&) poprzedzającego literę. Niejawna definicja używa algorytmu, który próbuje znaleźć pasujący element na podstawie kolejności znaków w danej Text właściwości.

Klawisze skrótu

Klawisze skrótów Keys używane przez MenuStrip kombinację wyliczenia (która nie jest specyficzna dla kolejności) do zdefiniowania klawisza skrótu. Możesz również użyć ShortcutKeyDisplayString właściwości , aby wyświetlić klawisz skrótu tylko z tekstem, na przykład wyświetlając "Del" zamiast "Usuń".

Klawisz ALT aktywuje wskazywane MenuStrip przez MainMenuStrip. Z tego miejsca klawisze CTRL+TAB nawigują między kontrolkami ToolStrip w obrębie ToolStripPanels. Klawisz TAB i klawisze strzałek na klawiaturze liczbowej nawigują między elementami w obiekcie ToolStrip. Specjalny algorytm obsługuje nawigację w regionie przepełnienia. Pasek SPACJI ToolStripButtonwybiera znak , ToolStripDropDownButtonlub ToolStripSplitButton.

Koncentracja uwagi i walidacja

Po aktywowaniu za pomocą klawisza MenuStrip ALT kontrolka lub ToolStrip zazwyczaj nie należy ani nie usuwa fokusu z kontrolki, która aktualnie ma fokus. Jeśli w menu rozwijanym MenuStriplub znajduje się kontrolka hostowanaMenuStrip, kontrolka zyskuje fokus, gdy użytkownik naciska klawisz TAB. Ogólnie rzecz biorąc, zdarzenia GotFocus, EnterLostFocus, i Leave mogą MenuStrip nie być wywoływane, gdy są aktywowane przez klawiaturę. W takich przypadkach należy zamiast tego użyć zdarzeń MenuActivate i MenuDeactivate .

Domyślnie CausesValidation jest to false. Wywołaj Validate jawnie formularz, aby przeprowadzić walidację.

Układ

Układ można kontrolować ToolStrip , wybierając jeden z elementów członkowskich ToolStripLayoutStyle właściwości LayoutStyle .

Układy stosu

Układanie to rozmieszczanie elementów obok siebie na obu końcach obiektu ToolStrip. Poniższa lista zawiera opis układów stosu.

Inne funkcje układów stosu

Alignment określa koniec ToolStrip elementu, do którego jest wyrównany element.

Gdy elementy nie mieszczą się w elemecie ToolStrip, zostanie automatycznie wyświetlony przycisk przepełnienia. Ustawienie Overflow właściwości określa, czy element jest zawsze wyświetlany w obszarze przepełnienia, zgodnie z potrzebami, czy nigdy.

LayoutCompleted W przypadku można sprawdzić Placement właściwość, aby określić, czy element został umieszczony na głównym ToolStrip, przepełnieniu ToolStriplub jeśli w ogóle nie jest wyświetlany. Typowymi przyczynami, dla których element nie jest wyświetlany, jest to, że element nie pasuje do głównego ToolStrip elementu, a jego Overflow właściwość została ustawiona na Neverwartość .

Utwórz ruchomy, umieszczając go w elemencie ToolStrip ToolStripPanel i ustawiając dla niego GripStyle wartość Visible.

Inne opcje układu

Pozostałe opcje układu to Flow i Table.

Układ przepływu

Flow layout jest wartością domyślną dla ContextMenuStrip, ToolStripDropDownMenui ToolStripOverflow. Jest on podobny do .FlowLayoutPanel Funkcje Flow układu są następujące:

Układ tabeli

Tablelayout jest wartością domyślną dla .StatusStrip Jest podobny do TableLayoutPanel. Funkcje Flow układu są następujące:

ToolStripItem

W poniższych tematach opisano ToolStripItem i kontrolki, które pochodzą z niego.

ToolStripItem jest abstrakcyjną klasą bazową dla wszystkich elementów, które przechodzą do klasy ToolStrip. Poniższy model obiektów przedstawia hierarchię ToolStripItem dziedziczenia.

Diagram that shows the ToolStripItem object model.

ToolStripItem klasy dziedziczą bezpośrednio z ToolStripItemklasy , lub dziedziczą pośrednio z ToolStripItem za pośrednictwem ToolStripControlHost lub ToolStripDropDownItem.

ToolStripItemkontrolki muszą być zawarte w ToolStripobiekcie , StatusStripMenuStriplub ContextMenuStrip i nie można ich dodać bezpośrednio do formularza. Różne klasy kontenerów zostały zaprojektowane tak, aby zawierały odpowiedni podzestaw ToolStripItem kontrolek.

W poniższej tabeli wymieniono kontrolki zapasów ToolStripItem i kontenery, w których wyglądają najlepiej. Mimo że dowolny ToolStrip element może być hostowany w dowolnym ToolStripkontenerze pochodnym, te elementy zostały zaprojektowane tak, aby wyglądały najlepiej w następujących kontenerach:

Uwaga

ToolStripDropDown nie jest wyświetlany w przyborniku projektanta.

Element zawarty ToolStrip MenuStrip ContextMenuStrip StatusStrip Toolstripdropdown
ToolStripButton Tak Nie. Nie. Nie. Tak
ToolStripComboBox Tak Tak Tak Nie Tak
ToolStripSplitButton Tak Nie. Nie. Tak Tak
ToolStripLabel Tak Nie. Nie. Tak Tak
ToolStripSeparator Tak Tak Tak Nie Tak
ToolStripDropDownButton Tak Nie. Nie. Tak Tak
ToolStripTextBox Tak Tak Tak Nie Tak
ToolStripMenuItem Nie Tak Tak Nie. Nie.
ToolStripStatusLabel Nie. Nie. Nie. Tak Nie
ToolStripProgressBar Tak Nie. Nie. Tak Nie
ToolStripControlHost Tak Tak Nie Tak Tak

Toolstripbutton

ToolStripButton to element przycisku dla elementu ToolStrip. Można go wyświetlić za pomocą różnych stylów obramowania i można go użyć do reprezentowania i aktywowania stanów operacyjnych. Można również zdefiniować ją tak, aby domyślnie miała fokus.

ToolStripLabel

Element ToolStripLabel zapewnia funkcje etykiet w ToolStrip kontrolkach. Element ToolStripLabel jest jak element ToolStripButton , który domyślnie nie uzyskuje fokusu i nie jest renderowany jako wypchnięty lub wyróżniony.

ToolStripLabel jako element hostowany obsługuje klucze dostępu.

LinkColorUżyj właściwości , LinkVisitedi LinkBehavior w elemecie ToolStripLabel , aby obsługiwać kontrolkę linku w obiekcie ToolStrip.

ToolStripStatusLabel

ToolStripStatusLabel jest wersją ToolStripLabel przeznaczoną specjalnie do użytku w programie StatusStrip. Funkcje specjalne obejmują BorderStyle, BorderSidesi Spring.

Toolstripseparator

Element ToolStripSeparator dodaje pionową lub poziomą linię do paska narzędzi lub menu w zależności od orientacji. Zapewnia grupowanie lub rozróżnienie między elementami, takimi jak te w menu.

Możesz dodać element ToolStripSeparator w czasie projektowania, wybierając go z listy rozwijanej. Można jednak również automatycznie utworzyć obiekt ToolStripSeparator , wpisując łącznik (-) w węźle szablonu projektanta lub w metodzie Add .

Toolstripcontrolhost

ToolStripControlHost jest abstrakcyjną klasą bazową dla ToolStripComboBox, ToolStripTextBoxi ToolStripProgressBar. ToolStripControlHost może hostować inne kontrolki, w tym kontrolki niestandardowe, na dwa sposoby:

  • Skonstruuj element ToolStripControlHost z klasą pochodzącą z Controlklasy . Aby w pełni uzyskać dostęp do hostowanej kontrolki i właściwości, należy oddać Control właściwość z powrotem do rzeczywistej klasy, którą reprezentuje.

  • Rozszerz ToolStripControlHostklasę , a w konstruktorze bez parametrów dziedziczonej klasy wywołaj konstruktor klasy bazowej przekazujący klasę, która pochodzi z Controlklasy . Ta opcja umożliwia opakowywanie typowych metod kontroli i właściwości w celu łatwego dostępu w obiekcie ToolStrip.

Toolstripcombobox

ToolStripComboBox jest zoptymalizowany pod kątem ComboBox hostowania w obiekcie ToolStrip. Podzbiór właściwości i zdarzeń hostowanej kontrolki są widoczne na ToolStripComboBox poziomie, ale ComboBox podstawowa kontrolka jest w pełni dostępna za pośrednictwem ComboBox właściwości .

Toolstriptextbox

ToolStripTextBox jest zoptymalizowany pod kątem TextBox hostowania w obiekcie ToolStrip. Podzbiór właściwości i zdarzeń hostowanej kontrolki są widoczne na ToolStripTextBox poziomie, ale TextBox podstawowa kontrolka jest w pełni dostępna za pośrednictwem TextBox właściwości .

ToolStripProgressBar

ToolStripProgressBar jest zoptymalizowany pod kątem ProgressBar hostowania w obiekcie ToolStrip. Podzbiór właściwości i zdarzeń hostowanej kontrolki są widoczne na ToolStripProgressBar poziomie, ale ProgressBar podstawowa kontrolka jest w pełni dostępna za pośrednictwem ProgressBar właściwości .

Toolstripdropdownitem

ToolStripDropDownItem jest abstrakcyjną klasą bazową dla ToolStripMenuItemelementów , ToolStripDropDownButtoni ToolStripSplitButton, które mogą hostować elementy bezpośrednio lub hostować dodatkowe elementy w kontenerze listy rozwijanej. W tym celu należy ustawić DropDown właściwość na wartość i ToolStripDropDown ustawić Items właściwość ToolStripDropDown. Uzyskaj dostęp do tych elementów listy rozwijanej DropDownItems bezpośrednio za pośrednictwem właściwości .

Toolstripmenuitem

ToolStripMenuItem to element, który ToolStripDropDownItem współpracuje z elementami ToolStripDropDownMenu i ContextMenuStrip obsługuje specjalne wyróżnianie, układ i układ kolumn dla menu.

Toolstripdropdownbutton

ToolStripDropDownButton wygląda jak ToolStripButton, ale wyświetla obszar listy rozwijanej po kliknięciu go przez użytkownika. Ukryj lub wyświetl strzałkę listy rozwijanej, ustawiając ShowDropDownArrow właściwość . ToolStripDropDownButton hostuje element ToolStripOverflowButton wyświetlający elementy, które przepełnią element ToolStrip.

Toolstripsplitbutton

ToolStripSplitButton łączy funkcje przycisków i przycisków rozwijanych.

DefaultItem Użyj właściwości , aby zsynchronizować Click zdarzenie wybranego elementu listy rozwijanej z elementem wyświetlanym na przycisku.

ToolStripItem — funkcje ogólne

ToolStripItem udostępnia następujące funkcje ogólne i opcje dziedziczenia kontrolek:

  • Zdarzenia podstawowe

  • Obsługa obrazów

  • Wyrównanie

  • Relacja tekstu i obrazu

  • Styl wyświetlania

Zdarzenia podstawowe

ToolStripItem kontrolki odbierają własne zdarzenia kliknięcia, myszy i malowania oraz mogą również wykonywać wstępne przetwarzanie klawiatury.

Obsługa obrazów

Właściwości Image, ImageAlign, ImageIndex, ImageKeyi ImageScaling odnoszą się do różnych aspektów obsługi obrazów. Użyj obrazów w ToolStrip kontrolkach, ustawiając te właściwości bezpośrednio lub ustawiając właściwość tylko ImageList w czasie wykonywania.

Skalowanie obrazów jest określane przez interakcję właściwości w systemach ToolStrip i ToolStripItemw następujący sposób:

Wyrównanie

Wartość Alignment właściwości określa koniec ToolStrip , na którym pojawia się element. Właściwość Alignment działa tylko wtedy, gdy styl ToolStrip układu obiektu jest ustawiony na jedną z wartości przepełnienia stosu.

Elementy są umieszczane w ToolStrip kolejności, w której elementy są wyświetlane w kolekcji Items. Aby programowo zmienić lokalizację elementu, użyj Insert metody , aby przenieść element w kolekcji. Ta metoda przenosi element, ale nie duplikuje go.

Relacja tekstu i obrazu

Właściwość TextImageRelation definiuje względne rozmieszczenie obrazu w odniesieniu do tekstu na ToolStripItemobiekcie . Elementy, które nie mają obrazu, tekstu lub obu, są traktowane jako przypadki specjalne, dzięki czemu ToolStripItem nie wyświetla pustego miejsca dla brakującego elementu lub elementów.

Styl wyświetlania

DisplayStyle Umożliwia ustawienie wartości właściwości Tekst i Obraz elementu, wyświetlając tylko to, co chcesz. Jest to zwykle używane do zmiany tylko stylu wyświetlania w przypadku wyświetlania tego samego elementu w innym kontekście.

Klasy akcesoriów

Klasy, które zapewniają różne inne funkcje, obejmują:

Zobacz też