Delphi, C++ Builder & .NET Część sgcUI

sgcEditors, nowoczesne kontrolki wprowadzania danych dla Delphi, C++ Builder & .NET

Piętnaście pól formularza, które wyglądają tak samo na każdym monitorze i zachowują się jak natywne edytory: kalendarz z prawdziwymi regułami rezerwacji, selektory daty i czasu, suwak zakresu, selektor koloru, chipy, gwiazdki, pole liczbowe, pola z przyciskami, wyszukiwania, z maską i walutowe, wielokolumnowa lista wyboru i memo, a do tego przełącznik ustawień, pole adresu IP, pole przedziału czasu, selektor czcionki, lista z polami wyboru, podwójna lista, NumPad i klawiatura ekranowa dla paneli dotykowych. Wpisz datę w swoim języku, sprawdź cały formularz przed zapisem, przełącz na ciemny motyw jedną właściwością i powiąż edytory ze zbiorem danych.

Piętnaście kontrolek dla VCL, FireMonkey, WinForms, WPF, AvaloniaWalidacja formularzy w każdej edycjiNatywne wpisywanie tekstu z IME i schowkiemBezpłatna edycja .NET CommunityW sgcUI Standard
Demo Gallery z kalendarzem miesięcznym, selektorami daty, czasu i daty z czasem, polem liczbowym, oceną, suwakiem zakresu, edytorem tokenów i selektorem koloru

Pola wprowadzania, na jakie zasługują Twoje formularze

Szesnaście funkcji, dzięki którym daty, kwoty, kody, wybory i tagi wpisuje się szybko i trudno się w nich pomylić.

Kontrolki

Piętnaście pól pokrywających pola prawdziwych formularzy biznesowych, każde dostępne dla VCL, FireMonkey i .NET.

Demo Gallery z kontrolkami sgcEditors

Kontrolki

Piętnaście nowoczesnych pól w jednym pakiecie

Formularze rezerwacji, strony ustawień i filtry wciąż potrzebują tych samych pól: kalendarza, selektora daty lub czasu, suwaka, koloru, listy tagów, oceny w gwiazdkach, liczby z jednostkami, kodu z maską, ceny, wyboru z długiej listy, pola wyszukiwania i komentarza. sgcEditors daje Ci wszystkie piętnaście jako jedną spójną rodzinę. Każda kontrolka istnieje dla VCL i FireMonkey z tymi samymi opublikowanymi właściwościami i zdarzeniami oraz dla WinForms, WPF i Avalonia z tymi samymi nazwami, więc to, czego uczysz się na jednej kontrolce, dotyczy pozostałych. Dzielą jeden motyw, jeden kolor akcentu i jeden model klawiatury. Upuść je ze strony SGC Editors palety, a od pierwszego uruchomienia wyglądają dobrze.

  • TsgcVCLMonthCalendar, TsgcVCLDatePicker, TsgcVCLTimePicker, TsgcVCLDateTimePicker
  • TsgcVCLRangeSlider i TsgcVCLSpinEdit dla liczb
  • TsgcVCLColorPicker, TsgcVCLTokenEdit, TsgcVCLRating
  • TsgcVCLButtonEdit, TsgcVCLSearchEdit, TsgcVCLMaskEdit, TsgcVCLCurrencyEdit, TsgcVCLLookupEdit, TsgcVCLMemo
  • Wszystkie dziedziczą po TsgcVCLCustomEditor
Przeczytaj temat pomocy
Kalendarz, który stosuje prawdziwe reguły rezerwacji

Kontrolki

Kalendarz, który stosuje prawdziwe reguły rezerwacji

Hotel, przychodnia czy wypożyczalnia nigdy nie przyjmuje dowolnej daty. Kalendarz miesięczny wybiera jedną datę albo, gdy SelectionMode ma wartość esmRange, zakres dni, a MaxRangeDays ogranicza jego długość. Dni poza MinDate i MaxDate, dni z listy DisabledDates, DisabledWeekDays takie jak weekendy oraz każdy dzień odrzucony przez Twoją procedurę OnIsDateDisabled są rysowane jako przekreślone i nie można ich wybrać. Numery tygodni ISO 8601 oraz widoki miesiąca, roku i dekady pomagają szybko skoczyć daleko do przodu. Ten sam kalendarz napędza rozwijaną listę selektorów daty, więc reguły działają wszędzie tam, gdzie wybiera się datę.

  • SelectionMode: esmSingle lub esmRange
  • MinDate, MaxDate i MaxRangeDays
  • DisabledDates, DisabledWeekDays, OnIsDateDisabled
  • ShowWeekNumbers dla numerów tygodni ISO
Przeczytaj temat pomocy
Zakresy cen i dat z dwoma uchwytami

Kontrolki Tylko zarejestrowana

Zakresy cen i dat z dwoma uchwytami

Filtry ceny, wagi lub odległości najlepiej czytają się jako zakres na szynie. Suwak zakresu wybiera wartość między Min i Max jednym uchwytem lub zakres dwoma uchwytami w RangeMode, poziomo lub pionowo. Rysuje znaczniki, etykiety i dymek z wartością nad przeciąganym uchwytem, a kliknięcie szyny przesuwa tam najbliższy uchwyt. Uchwyty nigdy się nie krzyżują, Step przyciąga wartości, a MinRange utrzymuje minimalny odstęp, więc filtr nigdy nie stanie się przypadkiem pusty. Wartości i etykiety podążają za ustawieniami regionalnymi kontrolki, łącznie z separatorami dziesiętnymi i tysięcy.

  • RangeMode z Value i EndValue
  • Min, Max, Step i MinRange
  • TickInterval, ShowLabels, ShowValueTip
  • LabelFormat lub OnFormatLabel dla walut

Community: rysowany i edytowany jest jeden uchwyt; EndValue jest zachowane, ale niepokazywane.

Przeczytaj temat pomocy
Tagi i chipy z autouzupełnianiem

Kontrolki Tylko zarejestrowana

Tagi i chipy z autouzupełnianiem

Tagi, odbiorcy i umiejętności to listy, a nie jedna linia tekstu. Edytor tokenów rysuje każdy wpis jako chip z przyciskiem usuwania, zawija chipy i przewija je, gdy się nie mieszczą. Ogranicznik, Enter, Tab lub utrata fokusu zamienia wpisany tekst w chip, a wklejenie a, b, c tworzy trzy. OnValidateToken normalizuje lub odrzuca każdy wpis, a AllowDuplicates, CaseSensitive i MaxTokens ustawiają reguły. W wersjach Zarejestrowanych lista autouzupełniania podpowiada wpisy w trakcie pisania. AddToken, RemoveToken i Clear zmieniają listę z kodu przy wczytywaniu lub zapisie rekordu.

  • Tokens przechowuje chipy; Delimiters kończy jeden
  • OnValidateToken i InvalidTokens sprawdzają każdy wpis
  • AutoCompleteItems i AutoCompleteMinChars dla podpowiedzi
  • OnTokenAdded i OnTokenRemoved zgłaszają zmiany

Community: chipy, walidacja i limity działają; lista autouzupełniania nigdy się nie otwiera.

Przeczytaj temat pomocy

Kontrolki Tylko zarejestrowana

Wybierz dowolny kolor, z przezroczystością

Edytory motywów, ustawienia wykresów i projektanci etykiet potrzebują więcej niż stałej palety. Selektor koloru układa siatkę próbek, kwadrat nasycenia i wartości, pasek odcienia, pasek alfa oraz wiersz z podglądem i polem hex, a Parts wybiera, które z nich się pojawiają. Pole hex przyjmuje #RGB, #RGBA, #RRGGBB i #RRGGBBAA. Selektor trzyma odcień osobno od koloru, więc szarość zachowuje swój odcień, a kwadrat nigdy nie skacze podczas przeciągania. Zdefiniuj paletę swojej marki jako próbki, a użytkownicy nadal mają pełny selektor o jedno kliknięcie dalej.

  • Parts z ecpSwatches, ecpHSV, ecpAlpha, ecpHex
  • Swatches i SwatchColumns dla Twojej palety
  • SelectedColor jako wartość ARGB
  • OnChangeComplete, gdy użytkownik puści mysz

Community: tylko próbki i hex; kwadrat HSV i pasek alfa nie są rysowane, a alfa to zawsze $FF.

Przeczytaj temat pomocy

Kontrolki

Przyciski, wyszukiwanie i notatki w tym samym stylu

Wiele pól potrzebuje przycisku obok tekstu: wskazanie pliku, otwarcie okna dialogowego, wyczyszczenie wartości. Pole z przyciskami umieszcza po obu stronach natywnego edytora przyciski przeglądania, listy rozwijanej, wyszukiwania, czyszczenia, plus, minus, tekstowe lub rysowane przez właściciela, każdy z własnym skrótem, a czytniki ekranu wymieniają każdy przycisk po nazwie i potrafią go nacisnąć. Pole wyszukiwania wywołuje OnSearch po przerwie w pisaniu lub od razu po Enter i ponownie proponuje poprzednie wyszukiwania w rozwijanej historii. Memo to motywowany edytor wielowierszowy z tekstem zastępczym, licznikiem znaków z opcjonalnym limitem i wysokością, która podąża za liczbą wierszy między MinLines i MaxLines.

  • TsgcVCLButtonEdit z Buttons i OnButtonClick
  • TsgcVCLSearchEdit z SearchDelay, History i OnSearch
  • TsgcVCLMemo z ShowCounter, MaxLength, AutoHeight
Przeczytaj temat pomocy

Kontrolki

Pola z maską i walutowe, które możesz współdzielić z .NET

Numery telefonów, kody pocztowe, numery kont i ceny wymagają stałego formatu. Pole z maską przyjmuje maskę wprowadzania w składni EditMask z Delphi lub w składni MaskedTextBox z .NET, więc jedna maska zachowuje się tak samo w aplikacji Delphi i .NET: literały pozostają stałe, każda pozycja przyjmuje tylko swój rodzaj znaku, a Text zwraca wartość z literałami lub bez nich. Pole walutowe przechowuje dokładną wartość Currency, w .NET decimal, bez liczb zmiennoprzecinkowych. Gdy nie ma fokusu, pokazuje pełny format waluty ustawień regionalnych, a podczas pisania liczbę z grupowaniem i symbolem lub kodem ISO. MinValue, MaxValue i AllowNegative utrzymują kwotę w zakresie.

  • EditMask i MaskSyntax: emxDelphi lub emxDotNet
  • IsComplete, EditText i SaveLiterals
  • Value, Decimals, CurrencyCode, SymbolMode
  • PositivePattern i NegativePattern
Przeczytaj temat pomocy

Kontrolki

Wybierz wiersz z listy wielokolumnowej

Klientów, produkty i kraje wybiera się po nazwie, ale zapisuje po kluczu. Pole z listą wyboru otwiera wielokolumnową listę rozwijaną z opcjonalnym wierszem nagłówka i filtruje ją podczas pisania. Pole pokazuje kolumnę wyświetlaną, a KeyValue zachowuje klucz, na przykład kod kraju stojący za jego nazwą. Wiersze pochodzą z Items, jeden wiersz na linię z komórkami rozdzielonymi znakiem |, albo z OnGetItems przy wyszukiwaniu na serwerze, a OnNotInList decyduje, co się dzieje z tekstem, który nie pasuje do żadnego wiersza. W .NET wiersze mogą też pochodzić z dowolnej kolekcji przez ItemsSource, DisplayMember i ValueMember, w WinForms, WPF i Avalonia.

  • Columns z Title, Width i Alignment
  • KeyColumn, DisplayColumn i KeyValue
  • ShowHeader, MatchMode, DropDownRows
  • .NET: ItemsSource, SelectedValue w każdej edycji
Przeczytaj temat pomocy

Kontrolki

Przełącznik dla ustawień i opcji

Strony ustawień i panele opcji włączają i wyłączają funkcje. Przełącznik to nowoczesna forma pola wyboru: zaokrąglony tor z okrągłym suwakiem, który przesuwa się do nowego stanu, opcjonalny podpis po dowolnej stronie i, jeśli chcesz, tekst Wł. i Wył. wewnątrz toru. Jest rysowany samodzielnie, w stanie włączonym przyjmuje kolor akcentu motywu i skaluje się razem z DPI. Zmiana wykonana przez użytkownika przechodzi najpierw przez OnChanging, więc reguła twojego formularza może ją odrzucić, a OnChange jest wywoływane po każdej zmianie, wykonanej przez użytkownika lub przez kod.

  • TsgcVCLToggleSwitch i TsgcFMXToggleSwitch, a w .NET TsgcWinFormsToggleSwitch, TsgcWpfToggleSwitch i TsgcAvaloniaToggleSwitch
  • Checked, Caption, CaptionPosition, ShowText z OnText i OffText, ReadOnly oraz Animated
  • TrackOnColor, TrackOffColor i ThumbColor, albo kolory motywu, oraz SwitchWidth i SwitchHeight dla rozmiaru toru
  • OnChanging anuluje zmianę wykonaną przez użytkownika za pomocą Allow, OnChange jest wywoływane po każdej zmianie, a Toggle zmienia stan tak, jak zrobiłby to użytkownik
  • Kliknięcie, przeciągnięcie suwaka, Spacja, Lewo i Prawo, formularze od prawej do lewej oraz pole wyboru ze wzorcem Toggle dla czytników ekranu
  • W WPF i Avalonia Checked domyślnie wiąże się dwukierunkowo, a w WinForms wywołuje CheckedChanged na potrzeby wiązania danych

Przełącznik jest dostępny we wszystkich edycjach, także w Community.

Przeczytaj temat pomocy

Kontrolki

Pole adresu IP dla IPv4 i IPv6

Ustawienia sieci, konfiguracja urządzeń i reguły zapory wymagają adresów. W IPv4 pole adresu IP pokazuje cztery pola oktetów oddzielone kropkami i przechodzi do następnego pola w trakcie pisania, więc adres wpisuje się równie szybko jak w zwykłym polu edycji i zawsze ma poprawną postać: wartość powyżej 255 jest ograniczana, a puste pola zmieniają się w 0, gdy fokus opuszcza pole. W IPv6 to jedno pole tekstowe, które przyjmuje cyfry szesnastkowe, dwukropki i kropki, sprawdza tekst i po opuszczeniu pola zapisuje go w kanonicznej postaci RFC 5952, więc 2001:DB8:0:0:0:0:2:1 zmienia się w 2001:db8::2:1.

  • TsgcVCLIPAddressEdit i TsgcFMXIPAddressEdit, a w .NET TsgcWinFormsIPAddressEdit, TsgcWpfIPAddressEdit i TsgcAvaloniaIPAddressEdit
  • Mode wybiera IPv4 lub IPv6, Address jest wartością, a Octets odczytuje lub ustawia jedno pole adresu IPv4
  • IsValid informuje, czy adres jest kompletny, a z Required pusty lub niekompletny adres pokazuje ramkę błędu motywu
  • Kropka lub trzecia cyfra przechodzi do następnego pola, Backspace na początku pola wraca do poprzedniego, Lewo i Prawo przekraczają granice pól, a wklejony adres wypełnia wszystkie pola
  • OnChange jest wywoływane po każdej zmianie, Clear czyści adres, a czytniki ekranu widzą pole edycji ze wzorcem Value
  • W WPF i Avalonia Address domyślnie wiąże się dwukierunkowo, a w WinForms wywołuje AddressChanged na potrzeby wiązania danych

Pole adresu IP jest dostępne we wszystkich edycjach, także w Community.

Przeczytaj temat pomocy

Kontrolki

Pole przedziału czasu dla czasu trwania

Limit czasu, interwał czy czas działania to czas trwania, a nie pora dnia. Pole przedziału czasu pokazuje go w segmentach, dni, godziny, minuty, sekundy i milisekundy, a użytkownik edytuje jeden segment naraz, pisząc, strzałkami, kółkiem myszy lub przyciskami zmiany wartości. Krok przenosi się do następnego segmentu, więc 59 sekund plus jeden to jedna minuta, a najwyższy pokazany segment nie ma górnej granicy, więc bez dni 50 godzin wyświetla się jako 50:00:00.

  • TsgcVCLTimeSpanEdit i TsgcFMXTimeSpanEdit, a w .NET TsgcWinFormsTimeSpanEdit, TsgcWpfTimeSpanEdit i TsgcAvaloniaTimeSpanEdit
  • Value w milisekundach w Delphi i TimeSpan w .NET, z częściami Days, Hours, Minutes, Seconds i Milliseconds
  • Segments wybiera pokazywane segmenty, a DisplayFormat zapisuje wartość jako zegar, 1.02:30:05.250, albo z jednostkami, 1d 2h 30m 5s 250ms
  • MinValue i MaxValue ograniczają wartość, AllowNegative przyjmuje minus na początku, a Increment i ShowButtons ustawiają krok i przyciski zmiany wartości
  • Góra i Dół zmieniają aktywny segment, PageUp i PageDown zmieniają go o dziesięć, Lewo, Prawo i Tab przechodzą między segmentami, a czytniki ekranu widzą pokrętło ze wzorcem RangeValue w sekundach
  • W WPF i Avalonia Value domyślnie wiąże się dwukierunkowo, a w WinForms wywołuje ValueChanged na potrzeby wiązania danych

Pole przedziału czasu jest dostępne we wszystkich edycjach, także w Community.

Przeczytaj temat pomocy

Kontrolki

Selektor czcionki z podglądem każdej rodziny

Projektanci raportów, edytory etykiet i strony ustawień pozwalają użytkownikowi wybrać krój pisma. Selektor czcionki to pole edycji z przyciskiem listy rozwijanej, której lista rysuje każdą rodzinę czcionek jej własnym krojem. Pisanie filtruje rodziny, ostatnio wybrane są wymienione na początku nad separatorem, a filtr zostawia tylko rodziny o stałej szerokości, dla edytora kodu lub terminala. Lista pochodzi z platformy, dopóki aplikacja jej nie wypełni.

  • TsgcVCLFontPicker i TsgcFMXFontPicker, a w .NET TsgcWinFormsFontPicker, TsgcWpfFontPicker i TsgcAvaloniaFontPicker
  • FontName jest wartością, Fonts listą rodzin, a RefreshFonts wczytuje ją ponownie po zainstalowaniu czcionki
  • ShowPreview rysuje każdą nazwę jej własnym krojem, a PreviewText dodaje przykładowy tekst po nazwie
  • RecentCount i RecentFonts zachowują ostatnio wybrane rodziny, aby aplikacja mogła je zapisać i wczytać ponownie
  • FontFilter zostawia rodziny o stałej szerokości, Alt+Dół otwiera listę, Enter lub kliknięcie wybiera rodzinę, a Escape ją zamyka
  • Selektor czcionki w Delphi rysuje podgląd krojów w Windows, w VCL i FireMonkey; na innych platformach FireMonkey nazwy są wyświetlane czcionką motywu
  • W WPF i Avalonia FontName domyślnie wiąże się dwukierunkowo

Selektor czcionki jest dostępny we wszystkich edycjach, także w Community.

Przeczytaj temat pomocy

Kontrolki

Lista z polami wyboru dla długich list opcji

Kolumny siatki, filtry raportu czy moduły licencji to długie listy opcji. Lista z polami wyboru to przewijana lista z polem wyboru w każdym wierszu, niezaznaczonym, zaznaczonym lub szarym, oraz flagą włączenia dla każdego elementu. Opcjonalny wiersz nagłówka Zaznacz wszystko zaznacza lub odznacza wszystkie włączone elementy, a opcjonalne pole filtra ukrywa wiersze niezawierające wpisanego tekstu bez zmiany ich stanu. Rysowane są tylko wiersze widoczne na ekranie, więc lista 10000 elementów pozostaje szybka.

  • TsgcVCLCheckListBox i TsgcFMXCheckListBox, a w .NET TsgcWinFormsCheckListBox, TsgcWpfCheckListBox i TsgcAvaloniaCheckListBox
  • Items z Checked, State i ItemEnabled dla każdego elementu oraz AllowGrayed dla trzeciego stanu
  • ShowCheckAll pokazuje trójstanowy wiersz Zaznacz wszystko, a ShowFilter pole filtra
  • CheckAll, UncheckAll i CheckedCount oraz OnClickCheck przed OnChange dla zmiany wykonanej przez użytkownika
  • Spacja przełącza aktywny wiersz, Ctrl+A zaznacza każdy element, litera przeskakuje do następnego elementu, który się nią zaczyna, a czytniki ekranu widzą elementy listy ze wzorcem Toggle
  • W .NET CheckedItems i CheckedIndices to listy tylko do odczytu na potrzeby wiązania, a zdarzenie ItemCheck występuje przed Change

Lista z polami wyboru jest dostępna we wszystkich edycjach, także w Community.

Przeczytaj temat pomocy

Kontrolki

Podwójna lista do wyboru i porządkowania elementów

Wybór kolumn raportu, członków grupy czy kroków procesu oznacza przenoszenie elementów z jednej listy do drugiej. Podwójna lista rysuje listę Dostępne po lewej i listę Wybrane po prawej, z przyciskami pośrodku, które przenoszą zaznaczone wiersze lub wszystkie wiersze, oraz z przyciskami Góra i Dół po zewnętrznej stronie, które zmieniają kolejność listy Wybrane. Dwukrotne kliknięcie lub przeciągnięcie przenosi element na drugą listę, a przeciągnięcie wewnątrz listy Wybrane zmienia jej kolejność.

  • TsgcVCLDualListBox i TsgcFMXDualListBox, a w .NET TsgcWinFormsDualListBox, TsgcWpfDualListBox i TsgcAvaloniaDualListBox
  • AvailableItems i SelectedItems, AvailableCaption i SelectedCaption, ShowCaptions oraz ShowReorderButtons
  • SortAvailable wstawia przeniesione z powrotem elementy w kolejności, ShowFilter dodaje pole filtra nad każdą listą, a ReadOnly zachowuje wybór i odrzuca przeniesienia
  • MoveToSelected, MoveAllToSelected, MoveToAvailable, MoveAllToAvailable, MoveUp i MoveDown robią to, co przyciski
  • OnMoving może zostawić element tam, gdzie jest, a OnChange jest wywoływane raz na operację
  • Kliknięcie, Ctrl+kliknięcie, Shift+kliknięcie i Ctrl+A zaznaczają, Tab przechodzi z jednej listy na drugą, Ctrl+Prawo i Ctrl+Lewo przenoszą, Ctrl+Góra i Ctrl+Dół zmieniają kolejność, a widok jest odbijany w formularzach od prawej do lewej
  • W WPF i Avalonia SelectedItems domyślnie wiąże się dwukierunkowo, a w WinForms wywołuje SelectedItemsChanged na potrzeby wiązania danych

Podwójna lista jest dostępna we wszystkich edycjach, także w Community.

Przeczytaj temat pomocy

Pisanie, język i dane

Szybkie wprowadzanie dla użytkowników klawiatury, sprawdzenie każdego pola przed zapisem, właściwy język dla każdego użytkownika i bezpośrednie połączenie z Twoimi zbiorami danych.

Pisanie, język i dane

Prawdziwe pisanie, nie tylko klikanie

Osoby wprowadzające dane wpisują daty, a nie klikają po kalendarzach. Każde pole tekstowe sgcEditors to prawdziwa kontrolka edycji platformy, więc kompozycja IME dla japońskiego, chińskiego i koreańskiego, schowek, cofanie, menu kontekstowe i czytniki ekranu działają. Parsowanie jest tolerancyjne: ukośniki, łączniki, kropki, dwukropki, przecinki lub spacje oddzielają pola, nazwy miesięcy i dni z ustawień regionalnych są rozumiane, a dwucyfrowe lata są przeliczane. Strzałki w górę i w dół zmieniają segment pod kursorem, a tekst, którego nie da się odczytać, wywołuje OnParseError.

  • DisplayFormat z segmentami d, m, y, h, n, s
  • OnParseError, aby przyjąć lub odrzucić dziwne dane
  • AllowEmpty i TextHint dla pól opcjonalnych
  • Pole liczbowe przyjmuje zarówno . jak i , jako separator dziesiętny
Przeczytaj temat pomocy

Wpisywanie, język i dane

NumPad dla paneli dotykowych

Panel dotykowy w hali produkcyjnej nie ma klawiatury, a klawiatura systemowa zasłania pół ekranu. NumPad wpisuje liczbę klawiszami dość dużymi na palec lub rękawicę. Umieść zadokowany pad na formularzu, a będzie pisał do kontrolki, która ma fokus, albo dołącz pad rozwijany do kontrolki, a dotknięcie kontrolki otworzy pad pod nią. Cel nie wymaga zmian: pad odczytuje jego zakres i miejsca dziesiętne i zapisuje wartość jako zmianę użytkownika, więc zaokrąglanie, limity i OnChange celu działają tak, jakby użytkownik wpisał liczbę.

  • TsgcVCLNumPad zadokowany i TsgcVCLNumPadPopup jako lista rozwijana, także dla FireMonkey i w .NET
  • Wpisuje do pola liczbowego, pola walutowego, standardowego pola edycji oraz wskaźników pokrętła i suwaka z sgcGauges
  • Associate wybiera cel albo pad podąża za kontrolką z fokusem
  • Wyświetlacz z wpisaną liczbą i wiersz limitów, na przykład Min 0 Max 120

NumPad jest w każdej edycji, także w Community. Należy do pakietu sgcUI HMI dla ekranów operatorskich.

Przeczytaj temat pomocy

Wpisywanie, język i dane

Klawiatura ekranowa dla kiosków i ekranów dotykowych

Kiosk, terminal samoobsługowy czy panel operatora potrzebuje nie tylko liczb, ale też nazw, kodów i notatek. Klawiatura ekranowa to pełna klawiatura zbudowana na tej samej ścieżce wprowadzania co NumPad. Zadokuj ją na formularzu, a będzie pisać do kontrolki, która ma fokus, albo dołącz klawiaturę rozwijaną, która otwiera się pod edytorem, gdy ten dostaje fokus. Klawiatura nigdy nie przejmuje fokusu, więc kareta i zaznaczenie celu pozostają na miejscu, a standardowe pole edycji, memo i kontrolki sgcEditors nie wymagają zmian.

  • TsgcVCLKeyboard zadokowana i TsgcVCLKeyboardPopup jako lista rozwijana, także dla FireMonkey i w .NET dla WinForms, WPF i Avalonia
  • Associate wybiera cel albo klawiatura podąża za fokusem. AutoPopup, AutoPopupAll, PopupPosition i CloseOnEnter sterują listą rozwijaną
  • Strony z literami, symbolami i cyframi, z klawiszami Shift, Caps Lock, AltGr oraz martwymi klawiszami dla liter z akcentami
  • Dziesięć wbudowanych układów (en-US, en-GB, es-ES, fr-FR, de-DE, it-IT, pt-BR, nl-NL, pl-PL, tr-TR), własne układy przez sgcKeyboardRegisterLayout oraz klawisz układu, który przełącza kolejne pozycje z Layouts
  • OnKeyText zmienia lub anuluje tekst przed zapisem, a OnEnterKey działa po Enterze
  • Motywy, formularze od prawej do lewej i klawisze odczytywane przez czytniki ekranu

Klawiatura ekranowa jest w każdej edycji, także w Community. Należy do pakietu sgcUI HMI dla ekranów operatorskich i kiosków.

Przeczytaj temat pomocy
Każda kontrolka mówi językiem użytkownika

Pisanie, język i dane

Każda kontrolka mówi językiem użytkownika

Międzynarodowe zespoły i wielojęzyczne produkty potrzebują dat, które czyta się naturalnie dla każdego użytkownika. Każda kontrolka ma własne FormatSettings, wypełniane z ustawień regionalnych użytkownika i zmienialne w czasie działania, więc dwie kontrolki na jednym formularzu mogą nawet używać dwóch ustawień regionalnych. Kalendarz i selektory biorą z nich nazwy dni i miesięcy, formaty daty i czasu, napisy AM i PM oraz separatory. FirstDayOfWeek i WeekNumbering podążają za ustawieniami regionalnymi lub Twoim wyborem, a liczby używają właściwych separatorów dziesiętnych i tysięcy. Jednostki, podpowiedzi i nazwy dostępności pozostają Twoimi własnymi właściwościami, więc tłumaczysz je razem z resztą formularza.

  • FormatSettings dla każdej kontrolki
  • FirstDayOfWeek: efdLocale lub wymuszone efdMonday
  • WeekNumbering: domyślnie ewnISO8601
  • TsgcEditorLocale dla modeli bez okna
  • Od prawej do lewej dla arabskiego i hebrajskiego: przyciski zmiany wartości, listy rozwijanej i czyszczenia przechodzą na drugą stronę, suwaki, oceny i kalendarz biegną od prawej, a pole edycji czyta się od prawej do lewej
Przeczytaj temat pomocy
Wersje powiązane z danymi dla Twoich formularzy

Pisanie, język i dane Tylko zarejestrowana

Wersje powiązane z danymi dla Twoich formularzy

Większość formularzy biznesowych w Delphi opiera się na TDataSet, a ręczne podłączanie każdego edytora jest powtarzalne. Dziesięć kontrolek powiązanych z danymi wiąże się bezpośrednio z polem przez DataSource i DataField: selektor daty, selektor czasu, pole liczbowe, ocena, suwak zakresu, którego drugi uchwyt wiąże EndDataField, pole z przyciskami, pole z maską, które przejmuje EditMask swojego pola, pole walutowe, memo oraz pole z listą wyboru, które wypełnia swoją wielokolumnową listę z drugiego zbioru danych przez ListSource, KeyField i ListField, jak TDBLookupComboBox. Pola null pokazują się jako puste, gdy AllowEmpty jest włączone, a pole wymagane zgłasza pustą wartość walidatorowi. Wiążą się przez TsgcEditorFieldLink, który używa tylko jednostki DB, więc wersje FireMonkey nie potrzebują LiveBindings. W .NET edytory WinForms wiążą pole przez DataSource, DataMember i DataField z BindingSource, DataTable, DataView lub List, a właściwości wartości WPF i Avalonia wiążą się dwukierunkowo. Upuść je na istniejący formularz, a logika zbioru danych, którą już masz, działa dalej bez zmian.

  • TsgcVCLDBDatePicker, TsgcVCLDBTimePicker, TsgcVCLDBSpinEdit
  • TsgcVCLDBRating i TsgcVCLDBRangeSlider
  • TsgcVCLDBButtonEdit, TsgcVCLDBMaskEdit, TsgcVCLDBCurrencyEdit, TsgcVCLDBMemo, TsgcVCLDBLookupEdit
  • DataSource, DataField, EndDataField; listy wyboru przez ListSource, KeyField, ListField
  • WinForms: DataSource, DataMember, DataField; WPF i Avalonia: właściwości wartości wiążą się dwukierunkowo

W pakietach .NET Community edytory WinForms nie mają DataSource, DataMember i DataField; wiązanie w WPF i Avalonia oraz ItemsSource pola z listą wyboru działają w obu edycjach.

Przeczytaj temat pomocy

Pisanie, język i dane

Sprawdź cały formularz przed zapisem

Formularz jest gotowy dopiero wtedy, gdy każde pole jest poprawne. Walidator z sgcUICore sprawdza kontrolki formularza według reguł: wymagane, zakres, długość, wyrażenie regularne, e-mail, porównanie z innym polem i Twój własny kod. Znajduje kontrolki tak jak Smart Paste, więc sprawdza kontrolki sgcEditors oraz standardowe edytory, pola memo, listy rozwijane, pola wyboru i selektory, w VCL, FireMonkey, WinForms, WPF i Avalonia. Pole z maską zgłasza niepełną wartość, a pole z listą wyboru tekst, którego nie ma na liście, bez żadnej reguły. Błędy pokazują się jako ramka w kolorze błędu motywu, ikona z komunikatem w podpowiedzi i opcjonalna lista podsumowania, a czytniki ekranu odczytują komunikat razem z polem. W .NET walidator pokazuje też błędy Twojej warstwy danych: IDataErrorInfo i INotifyDataErrorInfo w WinForms i WPF, błędy walidacji danych w Avalonia.

  • TsgcVCLValidator, TsgcFMXValidator, TsgcWinFormsValidator, TsgcWpfValidator, TsgcAvaloniaValidator
  • Reguły uvrRequired, uvrRange, uvrLength, uvrRegex, uvrEmail, uvrCompare, uvrCustom
  • Trigger: domyślnie uvtExit, uvtChange lub uvtManual; Validate przed zapisem
  • TsgcVCLValidationSummary wyświetla listę błędów i po kliknięciu ustawia fokus na polu

W każdej edycji, także w Community. Wyrażenia regularne dopasowują te same teksty w Delphi 7 do 13 i w .NET.

Przeczytaj temat pomocy

Pisanie, język i dane

Ułóż formularz albo wygeneruj go z danych

Kontrolka układu rozmieszcza kontrolki formularza, zarówno sgcEditors, jak i standardowe, w grupach, grupach z kartami i kolumnach, z etykietami wyrównanymi do jednej szerokości, rozdzielaczami, które użytkownik może przeciągać, i układami od prawej do lewej, a SaveLayout zapisuje rozmieszczenie jako JSON. Formularz danych jest zbudowany na niej. Wskaż mu TDataSet albo powiąż obiekt własnej klasy, a utworzy jedną kontrolkę sgcEditors na pole, reguły walidacji każdego pola, podsumowanie błędów i nawigator do przeglądania, dodawania, edycji, usuwania i zatwierdzania rekordów. Smart Paste wypełnia cały rekord z wklejonego tekstu, takiego jak stopka e-maila lub blok adresowy, i oznacza pola, które wypełnił. W .NET formularze danych WinForms, WPF i Avalonia przyjmują DataTable, listę lub obiekt.

  • TsgcVCLLayoutControl, TsgcFMXLayoutControl; SaveLayout i LoadLayout
  • TsgcVCLDataForm, TsgcFMXDataForm, TsgcWinFormsDataForm, TsgcWpfDataForm, TsgcAvaloniaDataForm
  • Fields: podpis, rodzaj, wymagalność, limity, grupa, karta i kolejność każdego pola; BindObject dla klasy
  • SmartPasteFromClipboard, SmartPasteUndo i przycisk Smart Paste w nawigatorze

Kontrolka układu jest we wszystkich edycjach, także w Community; Delphi Community nie ma pakietu czasu projektowania dla sgcEditors, więc tam tworzy się ją w kodzie. Formularz danych, jego reguły walidacji i jego Smart Paste są tylko w edycji Zarejestrowanej.

Przeczytaj temat pomocy

Klawiatura, DPI i motywy

Szczegóły, które sprawdzają recenzenci: bez myszy, ostre na każdym monitorze i wygląd dopasowany do Twojej aplikacji.

Ostre na każdym monitorze

Klawiatura, DPI i motywy

Ostre na każdym monitorze

Laptopy ze skalą 150 procent obok zewnętrznych monitorów 100 procent to dziś norma, a rozmyte pola wyglądają tanio. sgcEditors układa każdą kontrolkę w pikselach logicznych przy 96 DPI i rysuje ją w skali ekranu, bez żadnej pracy w Twoim kodzie. Gdy formularz VCL przenosi się na monitor o innym DPI, wewnętrzny edytor i jego czcionka skalują się razem z kontrolką, a lista rozwijana jest rysowana w DPI monitora, na którym się otwiera. Rastry FireMonkey podążają za skalą sceny dla Retina i Androida.

  • Układ w pikselach logicznych, rysowanie w skali ekranu
  • Wewnętrzne edytory skalują się przy WM_DPICHANGED
  • Listy rozwijane używają DPI własnego monitora
  • SaveToPNG przyjmuje skalę dla ostrych obrazów
Przeczytaj temat pomocy
Przyjazne dla klawiatury i czytników ekranu

Klawiatura, DPI i motywy

Przyjazne dla klawiatury i czytników ekranu

Żadna funkcja sgcEditors nie wymaga myszy. Rysowane kontrolki same przejmują fokus, a kontrolki tekstowe przekazują go do wewnętrznego edytora, a kontrolka z fokusem rysuje 2-pikselowy pierścień fokusu w kolorze akcentu. W kalendarzu strzałki przesuwają o dzień lub tydzień i pomijają wyłączone dni, PageUp i PageDown przesuwają o miesiąc, a Shift rozszerza zakres. W selektorach F4 lub Alt+strzałka w dół otwiera listę rozwijaną, a Escape przywraca wartość. Pole liczbowe zmienia wartość strzałkami w górę i w dół oraz PageUp i PageDown.

  • F4 lub Alt+strzałka w dół otwiera każdą listę rozwijaną
  • Ctrl+strzałka w górę oddala kalendarz do lat i dekad
  • Increment i LargeIncrement dla pola liczbowego
  • Natywne edytory zachowują działanie czytników ekranu
Przeczytaj temat pomocy
Jasny i ciemny jedną właściwością

Klawiatura, DPI i motywy

Jasny i ciemny jedną właściwością

Formularze wyglądają na dopracowane, gdy każde pole stosuje ten sam motyw. Każda kontrolka ma Theme, AccentColor i TextStyle, a kolory ramki, najechania, naciśnięcia, zaznaczenia i stanu wyłączonego są z nich wyprowadzane, więc jedna właściwość zmienia cały wygląd. Tokeny są tymi, których używa każdy produkt sgcUI, więc edytory umieszczone w kafelku sgcDashboard lub pod sgcToolbar pasują bez dodatkowej pracy. Wyłączona kontrolka sama zlewa się z tłem. Przełącz motyw w czasie działania, a każdy edytor się odrysuje, gotowy na ustawienie trybu ciemnego.

  • Theme: utDefault (domyślnie, podąża za motywem aplikacji), utLight lub utDark
  • AccentColor dla zaznaczenia, uchwytów, wypełnienia i pierścienia fokusu
  • TextStyle dla rozmiaru, pogrubienia i koloru
  • Te same tokeny motywu co w całym pakiecie sgcUI
Przeczytaj temat pomocy

Zobacz sgcEditors w akcji

sgcEditors w demach pakietu sgcUI: kompletne aplikacje działające offline na wbudowanych danych symulowanych.

Kto buduje z sgcEditors

Formularze rezerwacji

Formularz rezerwacji potrzebuje zakresu pobytu, który szanuje dni zamknięte, liczby gości, godziny przyjazdu i może oceny ostatniej wizyty. Kalendarz miesięczny egzekwuje MinDate, MaxRangeDays i wyłączone dni, pole liczbowe liczy gości, selektor czasu przyjmuje wpisane godziny, a ocena zbiera opinie, wszystko w jednym motywie. Demo BookingForm buduje rezerwację hotelu z siedmiu edytorów z podsumowaniem na żywo.

  • Zakresy w kalendarzu
  • Pole liczbowe
  • Ocena
Uruchom demo BookingForm

Wprowadzanie danych w TDataSet

Aplikacje branżowe edytują rekordy przez cały dzień. Dziesięć edytorów powiązanych z danymi wiąże się z polem TDataSet przez DataSource i DataField, suwak zakresu wiąże oba końce, a pola null pokazują się jako puste. W połączeniu z prawdziwym wpisywaniem z klawiatury i tolerancyjnym parsowaniem operatorzy wpisują wartości szybko, a zbiór danych dostaje czyste dane. Demo DataAware umieszcza dziesięć edytorów na TClientDataSet obok TDBGrid i TDBNavigator.

  • Edytory powiązane z danymi
  • Wpisywanie tekstu
  • Klawiatura
Uruchom demo DataAware

Międzynarodowe aplikacje do planowania

Narzędzia planowania używane w wielu krajach muszą pokazywać każdemu użytkownikowi właściwy początek tygodnia, numery tygodni i nazwy miesięcy. Każda kontrolka ma własne FormatSettings, więc jeden formularz może pokazywać niemiecki kalendarz obok angielskiego, a FirstDayOfWeek i WeekNumbering podążają za ustawieniami regionalnymi lub Twoją regułą. Demo Calendar przełącza między angielskim, niemieckim, hiszpańskim, francuskim i włoskim z zakresem ograniczonym do 14 dni.

  • Lokalizacja
  • Numery tygodni
  • Wyłączone dni
Uruchom demo Calendar

Formularz opinii w kilku linijkach

To samo API w Delphi, C++ Builder i C#: ocena, suwak zakresu i edytor tokenów, wszystkie raportujące przez OnChange.

uses
  SysUtils, Classes, Controls, Forms, StdCtrls,
  sgcEditors_Types, sgcEditors_VCL_Value, sgcEditors_VCL_Token;

type
  TFeedbackForm = class(TComponent)
  public
    Stars: TsgcVCLRating;
    Budget: TsgcVCLRangeSlider;
    Tags: TsgcVCLTokenEdit;
    Summary: TLabel;
    procedure EditorChange(Sender: TObject);
  end;

procedure TFeedbackForm.EditorChange(Sender: TObject);
begin
  // OnChange fires for every new value: clicked, dragged or typed
  Summary.Caption := Format('%.1f stars, budget %.0f to %.0f, %d tags',
    [Stars.Value, Budget.Value, Budget.EndValue, Tags.Tokens.Count]);
end;

function CreateFeedbackForm(aForm: TForm): TFeedbackForm;
begin
  Result := TFeedbackForm.Create(aForm);
  Result.Stars := TsgcVCLRating.Create(aForm);
  Result.Stars.Parent := aForm;
  Result.Stars.SetBounds(16, 16, 200, 32);
  Result.Stars.Glyph := ergHeart;
  Result.Stars.Precision := erpHalf;
  Result.Stars.Value := 3.5;
  Result.Stars.OnChange := Result.EditorChange;
  Result.Budget := TsgcVCLRangeSlider.Create(aForm);
  Result.Budget.Parent := aForm;
  Result.Budget.SetBounds(16, 60, 320, 48);
  Result.Budget.Max := 500;
  Result.Budget.Step := 10;
  Result.Budget.RangeMode := True;
  Result.Budget.Value := 80;
  Result.Budget.EndValue := 240;
  Result.Budget.ShowLabels := True;
  Result.Budget.OnChange := Result.EditorChange;
  Result.Tags := TsgcVCLTokenEdit.Create(aForm);
  Result.Tags.Parent := aForm;
  Result.Tags.SetBounds(16, 120, 320, 64);
  Result.Tags.TextHint := 'Add a tag';
  Result.Tags.AutoCompleteItems.CommaText := 'Breakfast,Parking,Pool';
  Result.Tags.AddToken('Breakfast');
  Result.Tags.OnChange := Result.EditorChange;
  Result.Summary := TLabel.Create(aForm);
  Result.Summary.Parent := aForm;
  Result.Summary.SetBounds(16, 196, 320, 20);
  Result.EditorChange(nil);
end;
#include <vcl.h>
#include "sgcEditors_Types.hpp"
#include "sgcEditors_VCL_Value.hpp"
#include "sgcEditors_VCL_Token.hpp"

class TFeedbackHandler : public TObject
{
public:
  TsgcVCLRating *Stars;
  TsgcVCLRangeSlider *Budget;
  TsgcVCLTokenEdit *Tags;
  TLabel *Summary;
  void __fastcall EditorChange(TObject *Sender);
};

void __fastcall TFeedbackHandler::EditorChange(TObject *Sender)
{
  // OnChange fires for every new value: clicked, dragged or typed
  Summary->Caption = FormatFloat("0.0", Stars->Value) + " stars, budget " +
    FormatFloat("0", Budget->Value) + " to " + FormatFloat("0", Budget->EndValue) +
    ", " + IntToStr(Tags->Tokens->Count) + " tags";
}

TFeedbackHandler * __fastcall CreateFeedbackForm(TForm *Form)
{
  TFeedbackHandler *H = new TFeedbackHandler();
  H->Stars = new TsgcVCLRating(Form);
  H->Stars->Parent = Form;
  H->Stars->SetBounds(16, 16, 200, 32);
  H->Stars->Glyph = ergHeart;
  H->Stars->Precision = erpHalf;
  H->Stars->Value = 3.5;
  H->Stars->OnChange = H->EditorChange;
  H->Budget = new TsgcVCLRangeSlider(Form);
  H->Budget->Parent = Form;
  H->Budget->SetBounds(16, 60, 320, 48);
  H->Budget->Max = 500;
  H->Budget->Step = 10;
  H->Budget->RangeMode = true;
  H->Budget->Value = 80;
  H->Budget->EndValue = 240;
  H->Budget->ShowLabels = true;
  H->Budget->OnChange = H->EditorChange;
  H->Tags = new TsgcVCLTokenEdit(Form);
  H->Tags->Parent = Form;
  H->Tags->SetBounds(16, 120, 320, 64);
  H->Tags->TextHint = "Add a tag";
  H->Tags->AutoCompleteItems->CommaText = "Breakfast,Parking,Pool";
  H->Tags->AddToken("Breakfast");
  H->Tags->OnChange = H->EditorChange;
  H->Summary = new TLabel(Form);
  H->Summary->Parent = Form;
  H->Summary->SetBounds(16, 196, 320, 20);
  H->EditorChange(NULL);
  return H;
}
using System;
using System.Drawing;
using System.Windows.Forms;
using esegece.sgcUICore;
using esegece.sgcEditors;

public class FeedbackForm : Form
{
    private readonly TsgcWinFormsRating stars;
    private readonly TsgcWinFormsRangeSlider budget;
    private readonly TsgcWinFormsTokenEdit tags;
    private readonly Label summary = new Label { Location = new Point(12, 196), Size = new Size(320, 20) };

    public FeedbackForm()
    {
        ClientSize = new Size(360, 230);
        stars = new TsgcWinFormsRating { Location = new Point(12, 12), Size = new Size(200, 32) };
        stars.Glyph = TsgcEditorRatingGlyph.ergHeart;
        stars.Precision = TsgcEditorRatingPrecision.erpHalf;
        stars.Value = 3.5;

        budget = new TsgcWinFormsRangeSlider { Location = new Point(12, 56), Size = new Size(320, 48) };
        budget.BeginInit();
        budget.Max = 500;
        budget.Step = 10;
        budget.RangeMode = true;
        budget.Value = 80;
        budget.EndValue = 240;
        budget.EndInit();
        budget.ShowLabels = true;

        tags = new TsgcWinFormsTokenEdit { Location = new Point(12, 116), Size = new Size(320, 64) };
        tags.TextHint = "Add a tag";
        foreach (string s in new[] { "Breakfast", "Parking", "Pool" })
            tags.AutoCompleteItems.Add(s);
        tags.Tokens.Add("Breakfast");

        // OnChange fires for every new value: clicked, dragged or typed
        foreach (TsgcWinFormsCustomEditor e in new TsgcWinFormsCustomEditor[] { stars, budget, tags })
        {
            e.OnChange = s => ShowSummary();
            Controls.Add(e);
        }
        Controls.Add(summary);
        ShowSummary();
    }

    private void ShowSummary() =>
        summary.Text = $"{stars.Value:0.0} stars, budget {budget.Value:0} to {budget.EndValue:0}, {tags.Tokens.Count} tags";
}
dotnet add package esegece.sgcEditors.WinForms

Walidacja formularza zamówienia

Pole z listą wyboru, pole z maską i pole walutowe sprawdzane przez walidator z sgcUICore. Wywołaj Validate, gdy użytkownik zapisuje: pokaże każdy błąd i ustawi fokus na pierwszym niepoprawnym polu.

function CreateOrderValidator(aForm: TForm; aCountry: TsgcVCLLookupEdit;
  aPhone: TsgcVCLMaskEdit; aPrice: TsgcVCLCurrencyEdit): TsgcVCLValidator;
var
  oRule: TsgcVCLValidationRule;
begin
  // cells: key | name, the edit shows the name and KeyValue keeps the code
  aCountry.Items.Add('ES|Spain');
  aCountry.Items.Add('FR|France');
  aCountry.Items.Add('DE|Germany');
  aCountry.KeyColumn := 0;
  aCountry.DisplayColumn := 1;
  // Delphi EditMask syntax: the user types the digits, the literals stay
  aPhone.EditMask := '(000) 000-0000;0;_';
  aPrice.CurrencyCode := 'EUR';

  Result := TsgcVCLValidator.Create(aForm);
  Result.Container := aForm;
  Result.Display := [uvdBorder, uvdIcon];
  oRule := TsgcVCLValidationRule(Result.Rules.Add);
  oRule.Control := aCountry;
  oRule.Kind := uvrRequired;
  oRule := TsgcVCLValidationRule(Result.Rules.Add);
  oRule.Control := aPrice;
  oRule.Kind := uvrRange;
  oRule.MinValue := '1';
  oRule.MaxValue := '10000';
end;
public class Country
{
    public string Code { get; set; }
    public string Name { get; set; }
}

public class OrderForm : Form
{
    private readonly TsgcWinFormsLookupEdit country = new TsgcWinFormsLookupEdit();
    private readonly TsgcWinFormsMaskEdit phone = new TsgcWinFormsMaskEdit();
    private readonly TsgcWinFormsCurrencyEdit price = new TsgcWinFormsCurrencyEdit();
    private readonly TsgcWinFormsValidator validator = new TsgcWinFormsValidator();

    public OrderForm()
    {
        country.SetBounds(16, 16, 240, 28);
        phone.SetBounds(16, 56, 240, 28);
        price.SetBounds(16, 96, 240, 28);
        Controls.AddRange(new Control[] { country, phone, price });

        // any list: the edit shows Name, SelectedValue returns Code
        country.ItemsSource = new List<Country>
        {
            new Country { Code = "ES", Name = "Spain" },
            new Country { Code = "FR", Name = "France" }
        };
        country.DisplayMember = "Name";
        country.ValueMember = "Code";
        phone.EditMask = "(000) 000-0000"; // MaskedTextBox syntax by default
        price.Decimals = 2;

        validator.Container = this;
        validator.Rules.Add(new TsgcWinFormsValidationRule
            { Control = country, Kind = TsgcUIValidationRuleKind.uvrRequired });
        validator.Rules.Add(new TsgcWinFormsValidationRule
            { Control = price, Kind = TsgcUIValidationRuleKind.uvrRange, MinValue = "1" });
    }

    public bool Save() => validator.Validate();

Wygeneruj formularz klienta ze zbioru danych

TsgcVCLDataForm na otwartym zbiorze danych tworzy edytory, reguły walidacji i nawigator. Ustaw rodzaj i grupę pola, przebuduj, a przycisk Smart Paste nawigatora wypełni rekord ze schowka.

uses
  Forms, Controls, DB,
  sgcUICore_AI, sgcEditors_DataForm, sgcEditors_VCL_DataForm;

function CreateCustomerForm(aOwner: TForm; aSource: TDataSource;
  aProvider: TsgcUIAIProvider): TsgcVCLDataForm;
var
  oField: TsgcDataFormField;
begin
  Result := TsgcVCLDataForm.Create(aOwner);
  Result.Parent := aOwner;
  Result.Align := alClient;
  // an open dataset: one field, one editor and one rule per TField
  Result.DataSource := aSource;
  oField := Result.Fields.FindField('EMAIL');
  oField.Kind := edfEmail;
  oField.Required := True;
  oField.Group := 'Contact';
  Result.Fields.FindField('PHONE').Group := 'Contact';
  Result.RebuildEditors;
  // the Smart Paste button of the navigator fills every field from the
  // clipboard; without a provider a local parser reads "Name: value" lines
  Result.Provider := aProvider;
end;

Uruchom dema sgcEditors

Gallery, Calendar, BookingForm, Validation i DataAware są dostarczane dla VCL i C++ Builder, a do tego GalleryFMX i ValidationFMX dla FireMonkey; edycja .NET ma Gallery i Validation dla WinForms, WPF i Avalonia, a także BookingForm, BindingWpf i DataAwareWinForms.

Calendar

Calendar

Zakres do 14 dni, numery tygodni, wyłączone weekendy i święta oraz przełącznik ustawień regionalnych między angielskim, niemieckim, hiszpańskim, francuskim i włoskim.

BookingForm

Rezerwacja hotelu z podsumowaniem pobytu, gości i godziny przyjazdu na żywo, listą krajów, maskowanym numerem telefonu i walidatorem, który sprawdza pola gościa przed rezerwacją. Pokazuje, jak kontrolki współpracują na prawdziwym formularzu.

DataAware

Tylko zarejestrowana DataAware

Dziesięć edytorów powiązanych z danymi na TClientDataSet z TDBGrid i TDBNavigator, z polem z listą wyboru wypełnianym z drugiego zbioru danych i walidatorem pól wymaganych. Kontrolki powiązane z danymi wymagają edycji zarejestrowanej lub wersji próbnej.

GalleryFMX

Galeria zbudowana z edytorami FireMonkey, dla Windows i Androida, z tymi samymi właściwościami i zdarzeniami co kontrolki VCL.

Walidacja

Każdy rodzaj reguły na kontrolkach standardowych i sgcEditors, trzy wyzwalacze, wyświetlanie ramki i ikony oraz lista podsumowania. ValidationFMX robi to samo w FireMonkey, a edycja .NET ma Validation, ValidationWpf i ValidationAvalonia.

Skompilowane dema

Gotowe do uruchomienia pliki wykonywalne każdego produktu sgcUI, nic nie trzeba instalować.

Pobierz sgcUI_bin.zip →

Przewodnik Getting Started

Pięć dem QuickStart dla Delphi (VCL) znajduje się w Demos\Editors\Delphi\00.QuickStart. Przewodnik PDF omawia je krok po kroku: pierwsze edytory na formularzu, odczyt i zapis wartości, motywy, walidacja oraz aplikacja kontaktów zbudowana na formularzu danych.

Pobierz przewodnik (PDF, po angielsku) →

Gdzie jest sgcEditors

sgcEditors jest w każdej edycji sgcUI i jest też sprzedawany osobno. sgcEditors jest również w pakiecie All-Access.

Pojedynczy pakiet sgcEditors

€199 / programista, pełny kod źródłowy, 1 rok aktualizacji.

Kup sgcEditors → Zobacz cennik →

sgcUI Standard

sgcEditors, sgcGrid, sgcNavigation i sgcToolbar, od €380.

Zobacz Standard →

sgcUI Professional

Standard plus sgcCharts, sgcDashboard i sgcGauges, od €529.

Zobacz Professional →

sgcUI Enterprise

Wszystkie produkty sgcUI (17), od €699.

Zobacz Enterprise →

Bezpłatna edycja Community (esegece.sgcEditors.Community w NuGet) ma wszystkie piętnaście kontrolek, kontrolkę układu i szkielet walidacji, ale selektor koloru nie ma kwadratu HSV ani paska alfa, edytor tokenów nie ma listy autouzupełniania, suwak zakresu ma jeden uchwyt i nie ma edytorów powiązanych z danymi, formularza danych ani wiązania DataSource w WinForms.

FunkcjaCommunity (bezpłatna)Zarejestrowana
Wszystkie piętnaście kontrolek dla VCL, FireMonkey i .NET✓✓
Walidacja: reguły, wyświetlanie błędów, podsumowanie (sgcUICore)✓✓
Listy pola z listą wyboru z ItemsSource w WinForms, WPF i Avalonia✓✓
Natywne wpisywanie tekstu, tolerancyjne parsowanie, lokalizacja✓✓
Zakresy w kalendarzu, limity i wyłączone dni✓✓
Klawiatura, DPI, motywy i eksport bez okna✓✓
NumPad dla paneli dotykowych✓✓
Klawiatura ekranowa z dziesięcioma układami✓✓
Przełącznik dla ustawień✓✓
Pole adresu IP dla IPv4 i IPv6✓✓
Pole przedziału czasu dla czasu trwania✓✓
Selektor czcionki z podglądem każdej rodziny✓✓
Lista z polami wyboru z opcją Zaznacz wszystko i filtrem✓✓
Podwójna lista z przyciskami przenoszenia i zmiany kolejności✓✓
Kontrolka układu z układami zapisywanymi jako JSON (w Delphi Community tworzona w kodzie)✓✓
Suwak zakresu z dwoma uchwytami−✓
Kwadrat HSV i pasek alfa selektora koloru−✓
Lista autouzupełniania edytora tokenów−✓
Edytory powiązane z danymi (Delphi i C++ Builder)−✓
DataSource, DataMember i DataField w WinForms−✓
Formularz danych z TDataSet, klasy, DataTable lub obiektu, z walidacją i Smart Paste−✓

Obsługiwane frameworki i platformy

Komponenty w sgcEditors

Każda kontrolka istnieje dla VCL, FireMonkey, WinForms, WPF i Avalonia z tymi samymi właściwościami i zdarzeniami.

KontrolkaVCL i C++ BuilderFireMonkey.NET
Kalendarz miesięcznyTsgcVCLMonthCalendarTsgcFMXMonthCalendarTsgcWinFormsMonthCalendar
Selektor datyTsgcVCLDatePickerTsgcFMXDatePickerTsgcWinFormsDatePicker
Selektor czasuTsgcVCLTimePickerTsgcFMXTimePickerTsgcWinFormsTimePicker
Selektor daty i czasuTsgcVCLDateTimePickerTsgcFMXDateTimePickerTsgcWinFormsDateTimePicker
Suwak zakresuTsgcVCLRangeSliderTsgcFMXRangeSliderTsgcWinFormsRangeSlider
Selektor koloruTsgcVCLColorPickerTsgcFMXColorPickerTsgcWinFormsColorPicker
Edytor tokenówTsgcVCLTokenEditTsgcFMXTokenEditTsgcWinFormsTokenEdit
OcenaTsgcVCLRatingTsgcFMXRatingTsgcWinFormsRating
Pole liczboweTsgcVCLSpinEditTsgcFMXSpinEditTsgcWinFormsSpinEdit
Pole z przyciskamiTsgcVCLButtonEditTsgcFMXButtonEditTsgcWinFormsButtonEdit
Pole wyszukiwaniaTsgcVCLSearchEditTsgcFMXSearchEditTsgcWinFormsSearchEdit
Pole z maskąTsgcVCLMaskEditTsgcFMXMaskEditTsgcWinFormsMaskEdit
Pole walutoweTsgcVCLCurrencyEditTsgcFMXCurrencyEditTsgcWinFormsCurrencyEdit
Pole z listą wyboruTsgcVCLLookupEditTsgcFMXLookupEditTsgcWinFormsLookupEdit
MemoTsgcVCLMemoTsgcFMXMemoTsgcWinFormsMemo
PrzełącznikTsgcVCLToggleSwitchTsgcFMXToggleSwitchTsgcWinFormsToggleSwitch
Pole adresu IPTsgcVCLIPAddressEditTsgcFMXIPAddressEditTsgcWinFormsIPAddressEdit
Pole przedziału czasuTsgcVCLTimeSpanEditTsgcFMXTimeSpanEditTsgcWinFormsTimeSpanEdit
Selektor czcionkiTsgcVCLFontPickerTsgcFMXFontPickerTsgcWinFormsFontPicker
Lista z polami wyboruTsgcVCLCheckListBoxTsgcFMXCheckListBoxTsgcWinFormsCheckListBox
Podwójna listaTsgcVCLDualListBoxTsgcFMXDualListBoxTsgcWinFormsDualListBox
NumPadTsgcVCLNumPad, TsgcVCLNumPadPopupTsgcFMXNumPad, TsgcFMXNumPadPopupTsgcWinFormsNumPad, TsgcWinFormsNumPadPopup
Klawiatura ekranowaTsgcVCLKeyboard, TsgcVCLKeyboardPopupTsgcFMXKeyboard, TsgcFMXKeyboardPopupTsgcWinFormsKeyboard, TsgcWinFormsKeyboardPopup
Kontrolka układuTsgcVCLLayoutControlTsgcFMXLayoutControlTsgcWinFormsLayoutControl
Formularz danychTsgcVCLDataFormTsgcFMXDataFormTsgcWinFormsDataForm

Kolumna .NET pokazuje nazwy WinForms, te same kontrolki istnieją dla WPF i Avalonia z prefiksami TsgcWpf i TsgcAvalonia. Pomocnicze komponenty niewizualne: TsgcEditorModel, TsgcEditorLocale i TsgcEditorFieldLink. Dziesięć edytorów powiązanych z danymi (TsgcVCLDBDatePicker, TsgcVCLDBTimePicker, TsgcVCLDBSpinEdit, TsgcVCLDBRating, TsgcVCLDBRangeSlider, TsgcVCLDBButtonEdit, TsgcVCLDBMaskEdit, TsgcVCLDBCurrencyEdit, TsgcVCLDBMemo i TsgcVCLDBLookupEdit, plus ich odpowiedniki FireMonkey) jest tylko w edycji Zarejestrowanej i istnieje dla Delphi i C++ Builder; w .NET edytory WinForms z edycji Zarejestrowanej wiążą się przez DataSource, DataMember i DataField. Kontrolka układu jest we wszystkich edycjach, a formularz danych tylko w edycji Zarejestrowanej. Walidator i podsumowanie walidacji są częścią sgcUICore: TsgcVCLValidator, TsgcFMXValidator, TsgcWinFormsValidator, TsgcWpfValidator i TsgcAvaloniaValidator.

CelKomponentPlatformy
Delphi 7 do 13, VCLEdytory TsgcVCLWin32 i Win64 od XE2
Delphi XE6 do 13, FireMonkeyEdytory TsgcFMXWindows, macOS, iOS i Android
C++ Builder 2007 do 13Edytory TsgcVCL i TsgcFMXWygenerowane nagłówki .hpp i biblioteki statyczne
Delphi 10.2 do 13, bez frameworkaModele, model układu i jego JSON, eksport PNG oraz SVG bez oknaLinux64 (bez kontrolek Linux)
.NET Framework 4.7.2, .NET 8, 9 i 10Edytory WinForms, WPF i AvaloniaDesktop Windows i cele Avalonia

Najczęściej zadawane pytania

Tak. Każde pole tekstowe to prawdziwy edytor platformy, TEdit bez ramki w VCL i TEdit FMX w FireMonkey, więc kompozycja IME dla japońskiego, chińskiego i koreańskiego, schowek, cofanie, menu kontekstowe i czytniki ekranu działają bez specjalnego kodu. Zobacz Wpisywanie tekstu i IME.

Tak. MinDate i MaxDate ustawiają limity, DisabledDates wymienia święta, DisabledWeekDays blokuje weekendy, a OnIsDateDisabled rozstrzyga każdą inną regułę. Wyłączone dni są przekreślone, pomijane przez klawiaturę i odrzucane przy wpisaniu w selektorze. Demo Calendar blokuje weekendy i dwa święta, aby pokazać reguły w działaniu.

Dziesięć, w Delphi i C++ Builder: selektor daty, selektor czasu, pole liczbowe, ocena, suwak zakresu, pole z przyciskami, pole z maską, pole walutowe, memo i pole z listą wyboru, każdy jako kontrolka VCL i FireMonkey. Wymagają edycji zarejestrowanej lub wersji próbnej. W .NET edytory WinForms z edycji Zarejestrowanej wiążą pole przez DataSource, DataMember i DataField, a w obu edycjach kontrolki wiążą się za pomocą wiązania danych WinForms, WPF i Avalonia, a pole z listą wyboru pobiera wiersze z ItemsSource.

Wszystkie piętnaście kontrolek i szkielet walidacji są w zestawie. Community pomija kwadrat HSV i pasek alfa selektora koloru, listę autouzupełniania edytora tokenów, drugi uchwyt suwaka zakresu oraz składowe DataSource, DataMember i DataField edytorów WinForms. Edytory powiązane z danymi w Delphi są tylko w edycji Zarejestrowanej. Zobacz Edycje.

Tak. Upuść walidator z sgcUICore na formularz, ustaw jego Container i dodaj reguły: wymagane, zakres, długość, wyrażenie regularne, e-mail, porównanie i własne. Sprawdza kontrolki sgcEditors oraz standardowe edytory, pola memo, listy rozwijane, pola wyboru i selektory, pokazuje ramkę, ikonę i opcjonalne podsumowanie, a czytniki ekranu odczytują komunikaty. Wywołaj Validate przed zapisem. Jest w każdej edycji, dla VCL, FireMonkey, WinForms, WPF i Avalonia. Zobacz Walidacja.

Tak. Każda kontrolka trzyma własną kopię FormatSettings, więc nazwy dni i miesięcy, formaty, separatory i pierwszy dzień tygodnia mogą się różnić dla każdej kontrolki. Demo Calendar przełącza w czasie działania między angielskim, niemieckim, hiszpańskim, francuskim i włoskim, a numery tygodni podążają za ISO 8601, chyba że wybierzesz inaczej.

Dla dat i czasów tak: TsgcVCLDatePicker, TsgcVCLTimePicker i TsgcVCLDateTimePicker to edytory z wpisywaniem i rozwijanym kalendarzem lub listą czasu. Dodatkowo tolerancyjnie parsują nazwy miesięcy, respektują limity i wyłączone dni, stosują motyw sgcUI i są rysowane w DPI każdego monitora.

Tak. C++ Builder 2007 i 2010 do 13 używają tych samych kontrolek VCL i FireMonkey przez wygenerowane nagłówki i biblioteki, a każde demo Delphi, w tym DataAware, jest dostępne także jako projekt C++ Builder. Zakładka z kodem na tej stronie pokazuje ten sam formularz w Delphi, C++ Builder i C#, a każdy przykład został skompilowany przed publikacją.

Pomoc sgcEditors

3,000+Programistów
20+Lat
761+Komponentów
30+Integracji API
5Platform
30-dniowa gwarancja zwrotu pieniędzyNie jesteś zadowolony? Poproś o pełny zwrot pieniędzy w ciągu 30 dni od zakupu. Zobacz politykę zwrotów

Wypróbuj sgcEditors już dziś

Wersja próbna sgcUI zawiera sgcEditors i każdy inny produkt sgcUI.