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

sgcGrid, siatka danych na żywo dla Delphi, C++ Builder & .NET

Siatka stworzona dla danych, które nigdy nie stoją w miejscu. Zapisuj wiersze według klucza z dowolnego wątku, obserwuj, jak zmienione komórki błyskają na zielono lub czerwono, a potem grupuj, filtruj, edytuj i eksportuj te same wiersze. Klatka 1080p siatki ze 100 000 wierszy zajmuje 3,0 ms w Win32.

VCL, FireMonkey, WinForms, WPF, Avalonia3,0 ms na klatkę 1080p (Win32)Bezpłatna wersja .NET CommunityW sgcUI Standard
sgcGrid ze 100 000 zamówień pogrupowanych według regionu, potem kategorii, z chipami panelu grup i sumami w stopce

Wszystko, czego potrzebuje siatka na żywo

Osiemnaście funkcji w pięciu grupach, każda z odnośnikiem do tematu pomocy.

Dane na żywo

Strumienie, które się nie kończą: ceny, telemetria, kolejki i logi.

Dane na żywo

Aktualizuj tysiące wierszy na sekundę z dowolnego wątku

Strumień rynkowy, magistrala czujników albo kolejka zadań mogą pisać prosto do siatki. Każdy wiersz ma klucz, a wątek roboczy aktualizuje wiersz o danym kluczu według nazwy pola, bez wywołania Synchronize i bez własnego kodu blokującego. Siatka tylko oznacza się jako zmieniona w wątku piszącym i odświeża się w głównym wątku najwyżej MaxFPS razy na sekundę.

  • UpdateRow ustawia nazwane pola klucza i wstawia wiersz, gdy klucz jest nowy; UpdateCell zmienia jedno pole
  • AppendRow i DeleteRow dodają i usuwają wiersze według klucza, z dowolnego wątku
  • BeginUpdate i EndUpdate zamieniają partię zmian w jedno powiadomienie
  • Zaznaczony wiersz jest znajdowany ponownie po kluczu po każdym sortowaniu, więc nigdy nie ucieka
Przeczytaj temat pomocy
Zobacz każdą zmianę na pierwszy rzut oka

Dane na żywo

Zobacz każdą zmianę na pierwszy rzut oka

Traderzy i operatorzy muszą widzieć, co się zmieniło, bez czytania każdej liczby. Gdy FlashChanges jest włączone, co jest wartością domyślną, zmieniona komórka jest zabarwiona na zielono, gdy wartość wzrosła, i na czerwono, gdy spadła, a potem zanika przez FlashDuration milisekund, domyślnie 800. Dla logów i rosnących strumieni tryb tail utrzymuje najnowszy wiersz w widoku i przestaje podążać, gdy tylko użytkownik przewinie w górę, aby czytać.

  • FlashUpColor, FlashDownColor i FlashChangedColor; kolor 0 używa domyślnego koloru motywu
  • FlashMode barwi tło (fmBackground) lub tekst (fmText)
  • TailMode podąża za najnowszym wierszem, MaxRows usuwa najstarsze wiersze niekończącego się logu
  • Zaznaczenie jest rysowane nad błyskiem, a błysk nad regułami formatowania
Przeczytaj temat pomocy
Koloruj wiersze, które wymagają uwagi

Dane na żywo

Koloruj wiersze, które wymagają uwagi

Zaległa faktura, ujemne saldo albo nieudane zadanie powinny rzucać się w oczy, zanim ktokolwiek zapyta. Reguły formatowania porównują kolumnę z wartością według typu danych tej kolumny: liczby numerycznie, daty jako daty, tekst bez rozróżniania wielkości liter. Pasująca reguła ustawia kolor tła, kolor tekstu lub pogrubienie komórki albo całego wiersza i działa dalej, gdy aktualizacje na żywo zmieniają wartości pod spodem.

  • TsgcGridFormatRules ocenia swoje reguły w kolejności kolekcji, a późniejsze dopasowanie nadpisuje wcześniejsze
  • Operatory takie jak gfoLess, gfoBetween, gfoContains i gfoIsEmpty
  • ApplyToRow stylizuje każdą komórkę wiersza, StopOnMatch kończy ocenę dla komórki
  • Półprzezroczyste kolory barwią komórkę na tle, a OnGetCellStyle ma ostatnie słowo
Przeczytaj temat pomocy

Kształtuj dane

Sortuj, filtruj, grupuj i zagnieżdżaj duże zbiory wierszy.

Grupuj i sumuj 100 000 wierszy jednym wywołaniem

Kształtuj dane

Grupuj i sumuj 100 000 wierszy jednym wywołaniem

Sprzedaż według regionu, zamówienia według miesiąca, zgłoszenia według statusu: użytkownicy chcą sum, a nie surowych wierszy. GroupBy grupuje siatkę według jednej lub kilku kolumn, a każdy wiersz grupy pokazuje swój element, liczbę wierszy i podsumowania swoich wierszy. Użytkownicy sami zmieniają grupowanie, przeciągając nagłówek na panel grup. Grupowanie dotyczy tylko widoku, więc wykres powiązany z siatką nadal widzi płaskie, posortowane wiersze.

  • GroupBy i ClearGrouping z kodu albo GroupIndex dla każdej kolumny
  • ShowGroupPanel dodaje chipy do przeciągania; kliknięcie chipa odwraca kolejność grup
  • SummaryType gsuSum, gsuCount, gsuAverage, gsuMin lub gsuMax, formatowane za pomocą SummaryFormat
  • GroupSummaries w każdym wierszu grupy i ShowFooter dla sum końcowych
  • DisplayFormat w postaci yyyy-mm grupuje daty według miesiąca
Przeczytaj temat pomocy
Sortuj, filtruj i szukaj w dużych danych

Kształtuj dane

Sortuj, filtruj i szukaj w dużych danych

Znalezienie jednego klienta wśród tysięcy powinno wymagać kilku naciśnięć klawiszy. FilterText zachowuje wiersze, których sformatowany tekst zawiera wpisane słowa w dowolnej widocznej kolumnie, a procedura OnFilterRow dodaje własne reguły. Kliknięcie nagłówka sortuje, Ctrl i kliknięcie dodaje kolumnę do sortowania wielokolumnowego, a sortowanie jest stabilne. Kolumna, która tyka, ale nie jest sortowana ani filtrowana, nie kosztuje żadnego ponownego sortowania.

  • SortOrder i SortIndex dla każdej kolumny, OnSortChange po każdej zmianie
  • FilterText nie rozróżnia wielkości liter i czyta tekst tak, jak widzi go użytkownik
  • OnFilterRow dla własnej logiki, InvalidateView, gdy ta logika się zmienia
  • SelectionMode zaznacza wiersze lub komórki, a Ctrl+C kopiuje je jako tekst rozdzielany tabulatorami
  • Wartości null, puste i niekonwertowalne zawsze sortują się na początku
Przeczytaj temat pomocy
Pokaż hierarchie za pomocą wierszy drzewa i pasm szczegółów

Kształtuj dane Tylko zarejestrowana

Pokaż hierarchie za pomocą wierszy drzewa i pasm szczegółów

Schemat organizacyjny albo zestawienie materiałowe najlepiej wyglądają jako drzewo, a zamówienia klienta najlepiej tuż pod klientem. Wiersze drzewa układają wiersze w głąb z kolumny klucza i kolumny rodzica. Pasma szczegółów otwierają małą siatkę powiązanych wierszy pod dowolnym wierszem nadrzędnym, z własnym nagłówkiem, przewijaniem i sortowaniem, wypełnianą z TsgcGridDataStore, innej siatki albo ze zdarzenia.

  • Tree.KeyField i Tree.ParentField włączają drzewo; ExpandNode i CollapseNode działają z kodu
  • Stan rozwinięcia jest zapamiętany dla każdego klucza, więc przetrwa sortowanie, filtrowanie i aktualizacje na żywo
  • Detail.MasterKeyField i Detail.DetailKeyField łączą pasmo z jego źródłem, a OnGetDetailData wypełnia je na żądanie
  • Pasma działają w trybie płaskim, grupowanym i drzewa, a zmienione komórki szczegółów błyskają jak w siatce nadrzędnej

Nie ma tego w wersji .NET Community, która zachowuje grupowanie.

Przeczytaj temat pomocy
Zachowaj kolumny kluczy w widoku, gdy reszta się przewija

Kształtuj dane

Zachowaj kolumny kluczy w widoku, gdy reszta się przewija

Szerokie siatki tracą kontekst, gdy symbol albo nazwa klienta się przewinie. FrozenColumns utrzymuje pierwsze widoczne kolumny na miejscu, gdy pozostałe przewijają się poziomo, a nagłówek, stopka i podsumowania grup podążają za tym samym podziałem. Użytkownicy zmieniają szerokość kolumn, przeciągając krawędź nagłówka, a renderer headless używa tego samego ustawienia, więc eksportowane obrazy odpowiadają ekranowi. Szewrony grup po lewej też nigdy się nie przewijają.

  • FrozenColumns liczy widoczne kolumny, a jednopikselowa linia oznacza zamrożoną krawędź
  • Ruchy klawiatury wprowadzają przewiniętą kolumnę w widok na prawo od zamrożonej krawędzi
  • FrozenWidth renderera zwraca szerokość, która się nie przewija
  • MinWidth ogranicza zmianę rozmiaru, OnColumnResized zgłasza nową szerokość
  • Część każdej edycji, także bezpłatnej wersji .NET Community
  • Od prawej do lewej dla arabskiego i hebrajskiego: pierwsza kolumna jest po prawej, zablokowane kolumny pozostają przy prawej krawędzi, a eksport XLSX siatki od prawej do lewej zapisuje arkusz od prawej do lewej
Przeczytaj temat pomocy
Demo FilterAndFind: przyciski lejka, wiersz filtra z (2 wartości) i > 500 oraz panel wyszukiwania podświetlający Nakatomi

Kształtuj dane

Filtruj jak w arkuszu kalkulacyjnym i znajdź każdą wartość

Użytkownicy oczekują lejka znanego z Excela. ShowFilterButtons umieszcza go w każdym nagłówku kolumny: otwiera okienko z unikalnymi wartościami kolumny i liczbą ich wierszy, polem wyszukiwania i maksymalnie dwoma typowanymi warunkami połączonymi przez I albo LUB. ShowFilterRow dodaje pod nagłówkiem wiersz, który filtruje kolumnę już podczas pisania, a Ctrl+F otwiera panel wyszukiwania, który podświetla tekst w każdej komórce i przeskakuje od trafienia do trafienia.

  • Każda kolumna ma filtr, edytowany przez okienko, wiersz filtra i Column.Filter w kodzie, więc wszystkie trzy zawsze się zgadzają
  • Listy wartości dwóch filtrowanych kolumn wzajemnie się zawężają, a wypełniony lejek pokazuje, które kolumny filtrują
  • FilterRowOperator dla każdej kolumny: równe, większe niż, zawiera, zaczyna się od, jest puste i inne
  • FindText, FindNext i FindPrevious działają z kodu, a FindOnlyMatches ukrywa wiersze bez trafień
  • Filtry kolumn działają razem z FilterText i OnFilterRow, a OnFilterChange zgłasza każdą zmianę

W siatkach VCL, FireMonkey, WinForms, WPF i Avalonia, łącznie z bezpłatną wersją .NET Community.

Przeczytaj temat pomocy

Kształtuj dane

Użytkownicy układają kolumny po swojemu i tak zostaje

Kliknięcie prawym przyciskiem nagłówka kolumny otwiera menu, które sortuje, grupuje, dopasowuje szerokości, filtruje i otwiera wybór kolumn, okienko z polem wyboru dla każdej kolumny. Użytkownicy przeciągają nagłówek, aby przenieść jego kolumnę, a dwukrotne kliknięcie krawędzi nagłówka dopasowuje szerokość do nagłówka i komórek. SaveLayoutToString i LoadLayoutFromString zapisują to wszystko jako krótki tekst JSON, dzięki czemu siatka otwiera się tak, jak użytkownik ją zostawił.

  • HeaderMenu, ColumnMoving i BestFitOnDblClick są domyślnie włączone, a przypisane PopupMenu nadal ma pierwszeństwo
  • ShowColumnChooser otwiera wybór z przycisku albo z własnej pozycji menu
  • Przeniesiona kolumna zostaje po swojej stronie kolumn zamrożonych i w swoim paśmie, a OnColumnMoved zgłasza przeniesienie
  • BestFitColumn i BestFitColumns mierzą nagłówek i do 1000 próbkowanych wierszy, więc milion wierszy kosztuje mniej więcej tyle samo co tysiąc
  • Układ zapisuje kolejność kolumn, szerokości, widoczność, sortowanie, grupowanie, filtry kolumn, pasma i opcje paneli; SaveLayoutToFile i LoadLayoutFromFile używają pliku

W siatkach VCL, FireMonkey, WinForms, WPF i Avalonia, łącznie z bezpłatną wersją .NET Community.

Przeczytaj temat pomocy
Demo BandsAndCells: pasma Instrument, Live data, Price i Position, sparkline obszarowe, paski postępu, ikony statusu i trzy zaznaczone wiersze

Kształtuj dane

Nagłówki pasm, bogate komórki i zaznaczanie wielu wierszy

Ekran handlowy czyta się lepiej, gdy Last, Change i trend stoją pod jednym nagłówkiem Price. Bands dodaje nagłówki nad grupami kolumn, na dowolną liczbę poziomów, a każda kolumna podaje swoje pasmo w Band. CellKind rysuje komórkę jako obraz, pasek postępu lub sparkline, a komórka zachowuje swoją zwykłą wartość, więc sortowanie, grupowanie i eksport nadal widzą liczbę.

  • Bands.Add przyjmuje nagłówek i pasmo nadrzędne, a wiersze pasm układają się nad nagłówkiem kolumny
  • gcdProgress używa ProgressMin i ProgressMax; gcdSparkline rysuje wykres liniowy, obszarowy lub słupkowy z listy liczb
  • gcdImage rysuje obraz z CellImages, które siatka wypełnia z dowolnej listy obrazów przypisanej do Images
  • SelectionMode gsmMultiRow zaznacza dowolne wiersze z Ctrl i Shift, gsmCellRange zakres komórek, a Ctrl+A zaznacza wszystko
  • Zaznaczenie jest trzymane według klucza wiersza, więc przeżywa sortowanie, filtrowanie i aktualizacje na żywo, a Ctrl+C kopiuje je jako tekst rozdzielony tabulatorami

W siatkach VCL, FireMonkey, WinForms, WPF i Avalonia, łącznie z bezpłatną wersją .NET Community.

Przeczytaj temat pomocy

Edytuj i eksportuj

Zmieniaj dane, synchronizuj je z bazą danych, przekaż dalej.

Edytuj i eksportuj Tylko zarejestrowana

Edycja w miejscu z walidacją

Użytkownicy zaplecza oczekują, że poprawią ilość albo status prosto w siatce. Ustaw ReadOnly na False, a F2, Enter, wpisany znak lub podwójne kliknięcie otwiera edytor nad komórką albo pole kombi, gdy kolumna ma PickList. Wpisany tekst jest konwertowany na typ danych kolumny, OnValidate może zmienić lub odrzucić wartość, a wynik jest zapisywany przez UpdateCell, więc sortowanie i błyski nadal działają.

  • Editable dla każdej kolumny, a OnBeforeEdit może odmówić edycji
  • Enter zatwierdza, Tab przechodzi do następnej edytowalnej komórki, Escape anuluje; StartEdit, CommitEdit i CancelEdit robią to samo z kodu
  • OnEditError utrzymuje otwarty edytor przy błędnym wpisie, OnEdited zgłasza starą i nową wartość

Nie ma tego w wersji .NET Community.

Przeczytaj temat pomocy
Powiąż dowolny TDataSet w kilku liniach

Edytuj i eksportuj

Powiąż dowolny TDataSet w kilku liniach

Istniejący kod bazodanowy nadal działa: TsgcGridSource_DataSet wypełnia siatkę z zapytania FireDAC, TClientDataSet lub dowolnego innego TDataSet. Ustaw jego Grid i DataSet, włącz Active, a wiersze się pojawią. Z KeyField siatka jest synchronizowana, a nie przeładowywana, więc zmienione wiersze aktualizują się w miejscu i błyskają. Przy włączonym LiveUpdates każdy zatwierdzony Append, Edit i Delete trafia do siatki bez dodatkowego kodu.

  • AutoColumns tworzy kolumny z pól zestawu danych
  • Z KeyField nowe klucze są dołączane, a brakujące usuwane
  • Zestaw danych jest przeglądany z DisableControls, a jego bieżący rekord jest przywracany
  • JSON i CSV też: GridLoadFromJSONFile, GridSaveToCSVFile i reszta sgcGrid_IO
  • W .NET ta sama klasa czyta DataTable
Przeczytaj temat pomocy

Edytuj i eksportuj Tylko zarejestrowana

Daj użytkownikom prawdziwy plik Excela

Księgowość chce liczby w Excelu, a nie zrzut ekranu. SaveToXLSX zapisuje siatkę jako skoroszyt Office Open XML do pliku lub strumienia, bez zewnętrznej biblioteki. Arkusz zachowuje to, co widzi użytkownik: widoczne kolumny w kolejności wyświetlania z ich szerokościami i formatami liczb, zamrożony nagłówek, grupy i poziomy drzewa jako zwijany konspekt oraz sumy grup jako formuły SUBTOTAL.

  • SaveToXLSX przyjmuje nazwę pliku lub strumień i opcjonalną nazwę arkusza
  • Liczby pozostają liczbami, daty stają się datami Excela, a DisplayFormat staje się formatem liczby komórki
  • Zwinięte grupy otwierają się w Excelu zwinięte, tak jak pokazywała je siatka
  • Wywołuj w wątku UI; pasma szczegółów nie są eksportowane
  • Każdy wiersz grupy i wiersz widoku jest zapisywany, niezależnie od tego, co jest zwinięte

Nie ma tego w wersji .NET Community, która zachowuje eksport do JSON i CSV.

Przeczytaj temat pomocy
Demo DataSetEditing: TDBNavigator i dwa TDBEdit na tych samych rekordach co siatka, z kolumną lookup dla kategorii

Edytuj i eksportuj Tylko zarejestrowana

Edytuj DataSet przez siatkę

Przy włączonym WriteBack komponent TsgcGridSource_DataSet zapisuje każdą zmianę w siatce do rekordu jej wiersza. Znajduje rekord przez KeyField i zatwierdza wartość. Jeśli zatwierdzenie się nie powiedzie, na przykład w kontroli BeforePost, rekord jest anulowany, a komórka zachowuje starą wartość. SyncCursor łączy bieżący rekord z zaznaczonym wierszem, więc TDBNavigator i kontrolki TDBEdit na tym samym zestawie danych podążają za siatką, a siatka za nimi.

  • AllowInsert: Ins dołącza rekord i go zatwierdza, a OnNewRecord zestawu danych wypełnia wartości domyślne
  • AllowDelete: Ctrl+Del usuwa zaznaczone wiersze i ich rekordy, gdy OnBeforeDelete się zgodzi
  • Pola lookup są edytowane jako lista wyboru wyników lookup, a zapisywany jest odpowiedni klucz
  • OnEditError pokazuje komunikat zestawu danych; wklejone wartości i cofnij używają tej samej ścieżki zapisu

W siatkach VCL, FireMonkey, WinForms, WPF i Avalonia; nie ma tego w wersji .NET Community. W .NET źródło zapisuje zmiany do DataTable, AddLookup dodaje kolumny lookup, a SyncCursor jest tylko w Delphi.

Przeczytaj temat pomocy
Demo Editing w ciemnym motywie z otwartym selektorem daty w kolumnie Date

Edytuj i eksportuj Tylko zarejestrowana

Selektory dat, wklejanie z Excela, cofnij i ponów

Każda kolumna wybiera kontrolkę, która ją edytuje. EditorKind wybiera selektor daty, czasu lub daty i czasu, pokrętło, selektor koloru albo edytor tokenów z sgcEditors, a wartość domyślna wynika z typu danych kolumny. Ctrl+V wkleja blok skopiowany z Excela: każda wartość jest konwertowana i sprawdzana, zanim cokolwiek zostanie zapisane, a całe wklejenie jest jednym krokiem cofania. Ctrl+Z i Ctrl+Y cofają i ponawiają zmiany oraz wklejenia.

  • OnCreateEditor umieszcza w komórce dowolną własną kontrolkę, na przykład TTrackBar
  • PasteText i PasteFromClipboard działają z kodu, a OnBeforePaste może zmienić tekst albo go odrzucić
  • Wartość, której nie da się skonwertować albo którą odrzuci OnValidate, zatrzymuje wklejanie, zanim cokolwiek zostanie zapisane
  • Cofnij działa po kluczu wiersza i polu, więc znajduje swoje wiersze po sortowaniu i filtrowaniu i zachowuje wartość, którą w międzyczasie zmieniła aktualizacja na żywo
  • UndoLimit zachowuje ostatnie 100 kroków; Undo, Redo i CanUndo działają z kodu

W siatkach VCL, FireMonkey, WinForms, WPF i Avalonia; nie ma tego w wersji .NET Community.

Przeczytaj temat pomocy

Skala i połączenia

Miliony wierszy, strumienie na żywo i zwykły język.

Przeglądaj miliony wierszy bez ich ładowania

Skala i połączenia

Przeglądaj miliony wierszy bez ich ładowania

Archiwa logów, historie czujników i wyniki zapytań, które już gdzieś są, nie muszą być kopiowane do pamięci. W trybie wirtualnym siatka nie przechowuje wierszy: VirtualRowCount mówi, ile ich jest, a OnGetValue zwraca wartość, gdy jej wiersz wjeżdża w widok. Rysowane są tylko widoczne wiersze, więc siatka z milionem wierszy kosztuje tyle samo co siatka z pięćdziesięcioma. Zmieniaj liczbę, gdy źródło rośnie.

  • Virtual i VirtualRowCount w danych siatki, OnGetValue dostarcza komórki
  • Podsumowania w stopce czytają swoje wartości także przez OnGetValue
  • Wiersze wirtualne nie mają kluczy, więc zachowują kolejność źródła, bez sortowania, filtrowania i błysków
  • Dla strumieni, które rosną bez końca, MaxRows z TailMode to alternatywa z kluczami
Przeczytaj temat pomocy

Skala i połączenia

Pozwól użytkownikom pytać siatkę zwykłym językiem

Nie każdy użytkownik chce budować filtry. TsgcGridAI zamienia pytanie, takie jak price greater than 100 sort by volume descending highlight change less than 0, na filtry, sortowania i wyróżnienia wierszy w siatce, a pasek zapytań AI daje użytkownikom miejsce, w którym je wpiszą. Bez przypisanego dostawcy lokalnie odpowiada parser oparty na regułach, bez sieci i bez klucza API. Przypisz dostawcę, a odpowiadać będzie dowolny LLM: TsgcUIAIEventProvider przekazuje każde żądanie do Twojego kodu, a TsgcUIAIChatProvider używa komponentu TsgcAIChat z sgcWebSockets. Wysyłany jest tylko katalog pól, czyli nazwy, podpisy, typy i kilka przykładowych wartości kolumn, nigdy wiersze.

  • Pasek zapytań: TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar i TsgcAvaloniaAIQueryBar, z ostatnimi pytaniami, podpowiedziami, Cancel i Undo
  • Filtry przechodzą przez OnFilterRow, wyróżnienia stają się regułami formatowania ApplyToRow
  • Każda odpowiedź zastępuje poprzednią, a Undo cofa o jeden krok
  • LastExplanation mówi, co zastosowano, a gdy dostawca zawiedzie, odpowiada parser oparty na regułach
  • Most sgcGridWS zachowuje TsgcGridAIQuery z TsgcHTMLAIAssistant i wnosi TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT i TsgcGridFeedSource_SSE, które zapisują wiadomości JSON do siatki według klucza

Każda edycja, także bezpłatna Community, w VCL, FireMonkey, WinForms, WPF i Avalonia. Dostawca sgcWebSockets i most sgcGridWS wymagają sgcWebSockets i edycji Registered.

Przeczytaj temat pomocy

Dostępność

UI Automation dla czytników ekranu, klawiatura i wysoki kontrast, bez konfiguracji.

Dostępność

Siatka udostępniana jako prawdziwa tabela

sgcGrid udostępnia swoją zawartość Microsoft UI Automation jako tabelę z nagłówkami kolumn, wierszami i komórkami, czyli interfejs API używany przez czytniki ekranu, takie jak Narrator i NVDA. Budowane są tylko widoczne wiersze, a liczby wierszy i kolumn są zawsze pełne, więc siatka z milionem wierszy nie kosztuje nic więcej.

  • Aktywna komórka, zaznaczenie, sortowanie, filtrowanie, grupowanie i wiersze drzewa są udostępniane przez wzorce Grid, Table i Selection
  • Strzałki, Home, End, Page Up i Page Down przesuwają aktywną komórkę, Shift rozszerza zaznaczenie, Ctrl+Space przełącza wiersz lub komórkę, a F2 lub Enter włącza edycję
  • Alt+Down otwiera okno filtra, Alt+Shift+Left i Alt+Shift+Right przesuwają kolumnę, Ctrl+Shift+G grupuje według aktywnej kolumny, a Ctrl+Shift+U usuwa to grupowanie
  • Widoczny wskaźnik fokusu, a w motywie wysokiego kontrastu systemu Windows siatka rysuje się kolorami systemowymi

Dostępność jest domyślnie włączona w każdej edycji, łącznie z bezpłatną edycją Community, w VCL w każdej wersji Delphi i C++Builder od Delphi 7 do Delphi 13, w FireMonkey w systemie Windows oraz w WinForms, WPF i Avalonia. W Delphi i C++Builder właściwości AccessibleName i AccessibleDescription ustawiają nazwę i opis udostępniane UI Automation, a w .NET to samo robią standardowa nazwa dostępności i tekst pomocy każdego frameworka. Zobacz raporty zgodności dotyczące dostępności. W Avalonia, która nie ma wzorców tabeli, każda komórka zawiera swoją kolumnę i pozycję w nazwie i tekście pomocy. Szerokość kolumn zmienia się wyłącznie myszą.

Przeczytaj temat pomocy

Zobacz sgcGrid w akcji

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

Klatka 1080p w kilka milisekund

Ostatnio zmierzone średnie z bramki wydajnościowej QA sgcGrid: klatka 1920 x 1080 z 12 kolumnami, 100 000 wierszy i 45 widocznymi wierszami, renderowana 60 razy na kanwie rastrowej. Bramka zawodzi powyżej 16 ms na klatkę w Win64 i 25 ms w Win32.

PomiarWynikWarunki
Zwykła klatka3,0 msWin32
Zwykła klatka4,6 msWin64
Zwykła klatka3,7 msLinux64
Błysk i 3 reguły formatowania3,2 msWin32
Błysk i 3 reguły formatowania6,8 msWin64
Demo LiveTicker, zapisy z wątku roboczegoOkoło 1000 aktualizacji na sekundęPosortowana, błyskająca siatka przy 60 fps

Źródło: temat pomocy opisujący te liczby.

Kto buduje z sgcGrid

Biura handlu i danych rynkowych

Tablica notowań musi pozostać czytelna, gdy setki cen zmieniają się co sekundę. Wątki strumienia piszą przez UpdateRow i nigdy nie czekają na UI, błysk przy zmianie pokazuje kierunek każdego ruchu, a tryb tail utrzymuje dziennik transakcji na najnowszym zleceniu. Most sgcGridWS może czytać notowania z WebSocket, MQTT lub SSE.

  • Aktualizacje na żywo
  • Błysk przy zmianie
  • Tryb tail
  • Strumienie na żywo
Uruchom demo LiveTicker

Back office i systemy branżowe

Ekrany wprowadzania zamówień, list magazynowych i fakturowania żyją na bazie danych. Powiąż istniejący TDataSet, pozwól użytkownikom grupować według klienta lub miesiąca z sumami w każdym wierszu grupy, poprawiać wartości w miejscu z walidacją i eksportować skoroszyt, który księgowość otwiera z nienaruszonymi grupami i formułami SUBTOTAL.

  • Powiązanie z DataSet
  • Grupowanie i podsumowania
  • Edycja w miejscu
  • Eksport do Excela
Uruchom demo DataSetGrid

Monitoring, logi i alerty

Ekrany operacyjne pokazują strumienie zdarzeń, które się nie kończą. MaxRows ogranicza log, reguły formatowania malują błędy na czerwono, a tryb wirtualny przegląda na żądanie archiwum milionów linii. Na serwerze Linux64 renderer zapisuje tę samą siatkę do pliku PNG lub SVG na potrzeby e-maila z alertem.

  • Reguły formatowania
  • MaxRows i tryb tail
  • Tryb wirtualny
  • PNG i SVG headless
Uruchom demo LiveFeed

Siatka na żywo w kilku liniach

To samo API w Delphi, C++ Builder i C#: dodaj kolumny, dołącz wiersze według klucza i aktualizuj je później z dowolnego wątku.

Siatka VCL w kodzie: typowane kolumny, wiersze dołączane według klucza i aktualizacja według nazwy pola z dowolnego wątku.

uses
  Forms, Classes, Controls,
  sgcGrid_Columns, sgcGrid_Data, sgcGrid_VCL;

procedure CreateGrid(aForm: TForm);
var
  oGrid: TsgcVCLGrid;
begin
  oGrid := TsgcVCLGrid.Create(aForm);
  oGrid.Parent := aForm;
  oGrid.Align := alClient;
  // the columns: FieldName, Caption and DataType
  oGrid.Columns.Add('Symbol', 'Symbol');
  oGrid.Columns.Add('Price', 'Price', gdtFloat).DisplayFormat := '0.00';
  oGrid.Columns.Add('Volume', 'Volume', gdtInteger);
  // one row per key, the values in column order
  oGrid.Data.AppendRow('MSFT', ['MSFT', 412.5, 1200]);
  oGrid.Data.AppendRow('AAPL', ['AAPL', 228.1, 3400]);
  // later, from any thread: update the row of a key by field name
  oGrid.Data.UpdateRow('MSFT', ['Price', 'Volume'], [413.1, 1350]);
end;

Przeczytaj temat pomocy →

Ta sama siatka w C++ Builder z wygenerowanymi nagłówkami sgcGrid.

#include "sgcGrid_Columns.hpp"
#include "sgcGrid_Data.hpp"
#include "sgcGrid_VCL.hpp"

void __fastcall CreateGrid(TForm *Form)
{
  TsgcVCLGrid *Grid = new TsgcVCLGrid(Form);
  Grid->Parent = Form;
  Grid->Align = alClient;
  // the columns: FieldName, Caption and DataType
  Grid->Columns->Add("Symbol", "Symbol", gdtText);
  Grid->Columns->Add("Price", "Price", gdtFloat)->DisplayFormat = "0.00";
  Grid->Columns->Add("Volume", "Volume", gdtInteger);
  // one row per key, the values in column order
  Grid->Data->AppendRow("MSFT", OPENARRAY(Variant,
    (Variant("MSFT"), Variant(412.5), Variant(1200))));
  Grid->Data->AppendRow("AAPL", OPENARRAY(Variant,
    (Variant("AAPL"), Variant(228.1), Variant(3400))));
  // later, from any thread: update the row of a key by field name
  Grid->Data->UpdateRow("MSFT",
    OPENARRAY(String, (String("Price"), String("Volume"))),
    OPENARRAY(Variant, (Variant(413.1), Variant(1350))));
}

Przeczytaj temat pomocy →

Siatka WinForms z błyskającymi komórkami, regułą dla ujemnej zmiany i ciemnym motywem.

using System.Windows.Forms;
using esegece.sgcGrid;
using esegece.sgcUICore;

internal class MainForm : Form
{
    private readonly TsgcWinFormsGrid Grid = new TsgcWinFormsGrid();

    public MainForm()
    {
        Grid.Dock = DockStyle.Fill;
        // the columns: field name, caption and data type
        Grid.Columns.Add("symbol", "Symbol");
        Grid.Columns.Add("price", "Price", TsgcGridDataType.gdtFloat).DisplayFormat = "#,##0.00";
        Grid.Columns.Add("change", "Change", TsgcGridDataType.gdtFloat).DisplayFormat = "+0.00;-0.00;0.00";
        Grid.Columns.Add("volume", "Volume", TsgcGridDataType.gdtInteger).DisplayFormat = "#,##0";
        // changed cells flash and fade, negative rows are tinted red
        Grid.FlashChanges = true;
        Grid.FormatRules.Add("change", TsgcGridFormatOperator.gfoLess, "0", 0x30E53935).ApplyToRow = true;
        Grid.Theme = TsgcUITheme.utDark;
        // one row per key, the values follow the column order
        Grid.Data.AppendRow("MSFT", "MSFT", 412.5, 0.0, 1200);
        Grid.Data.AppendRow("AAPL", "AAPL", 228.1, 0.0, 3400);
        Controls.Add(Grid);
    }

    // call it from any thread: TsgcGridData is thread safe
    public void OnQuote(string aSymbol, double aPrice, double aChange, int aVolume)
    {
        Grid.Data.UpdateRow(aSymbol, new[] { "price", "change", "volume" },
            new object[] { aPrice, aChange, aVolume });
    }
}
dotnet add package esegece.sgcGrid.WinForms

Przeczytaj temat pomocy →

Uruchom dema sgcGrid

15 dem dla Delphi, w tym trzy FireMonkey, 11 dla C++ Builder i 18 dla .NET w WinForms, WPF i Avalonia.

LiveTicker

LiveTicker

Około 1000 aktualizacji cen na sekundę z wątku roboczego przez UpdateRow, posortowany widok, błyskające komórki i reguła formatowania dla ujemnych zmian. VCL, FireMonkey, C++ Builder, WinForms, WPF i Avalonia.

DataSetGrid

DataSetGrid

TsgcGridSource_DataSet powiązany z TClientDataSet z 200 rekordami z KeyField, AutoColumns i LiveUpdates, plus eksport i import JSON i CSV.

GroupAndSummary

GroupAndSummary

100 000 zamówień pogrupowanych według regionu i kategorii z panelem grup, podsumowaniami Count, Sum i Average, stopką i dwiema zamrożonymi kolumnami. W .NET nazywa się Grouping.

FilterAndFind

FilterAndFind

100 000 wierszy sprzedaży z wyskakującymi okienkami lejków, wierszem filtra i panelem wyszukiwania, a do tego wybór kolumn, optymalna szerokość oraz układ zapisany do pliku i wczytany z powrotem. VCL, FireMonkey, C++ Builder, WinForms, WPF i Avalonia.

BandsAndCells

BandsAndCells

2000 instrumentów pod pasmami Instrument, Live data, Price i Position, z komórkami sparkline, postępu i obrazu, zaznaczaniem wielu wierszy i przyciskiem Copy. VCL, C++ Builder i WinForms.

Tylko zarejestrowana Editing

Kolumna z listą wyboru, kolumna logiczna przełączana spacją, OnValidate odrzucające ujemne ilości, OnEditError i dziennik OnEdited, a do tego edytory daty, czasu, pokrętła, koloru i tokenów z sgcEditors, TTrackBar przez OnCreateEditor, wklejanie oraz cofnij i ponów.

DataSetEditing

Tylko zarejestrowana DataSetEditing

Products i Categories w dwóch TClientDataSet, z TDBNavigator i dwoma TDBEdit na tych samych rekordach: WriteBack, SyncCursor, kolumna lookup, wstawianie, usuwanie i cofnij. VCL, C++ Builder i WinForms (DataTable z AddLookup).

TreeAndDetail

Tylko zarejestrowana TreeAndDetail

Drzewo schematu organizacyjnego oraz klienci z pasmem szczegółów zamówień wypełnianym przez TsgcGridDataStore.

Tylko zarejestrowana ExcelExport

Siatka z grupami i siatka z drzewem zapisane przez SaveToXLSX i otwarte w arkuszu kalkulacyjnym, z zachowanym konspektem i podsumowaniami.

GridAndChart

Kafelek siatki i kafelek wykresu na dashboardzie: TsgcChartDataSource_Table rysuje wiersze siatki. Wymaga sgcCharts i sgcDashboard.

Tylko zarejestrowana AskYourGrid

TsgcGridAI i pasek zapytań AI filtrują, sortują i wyróżniają 200 akcji na podstawie pytań zadanych zwykłym językiem, bez sieci i bez klucza API, obok mostu TsgcGridAIQuery. Wymaga sgcWebSockets.

Tylko zarejestrowana LiveFeed

Serwer WebSocket w tym samym procesie rozsyła partie JSON z 50 symbolami, a TsgcGridFeedSource_WebSocket zapisuje je do siatki według klucza. Delphi i .NET.

Skompilowane dema

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

Pobierz sgcUI_bin.zip →

Gdzie jest sgcGrid

sgcGrid jest sprzedawany osobno, wchodzi w skład każdej edycji sgcUI od Standard wzwyż i jest w pakiecie All-Access.

Pojedynczy pakiet sgcGrid

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

Kup sgcGrid → Zobacz cennik →

sgcUI Standard

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

Zobacz Standard →

sgcUI Professional

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

Zobacz Professional →

sgcUI Enterprise

Wszystkie produkty sgcUI (14), od €699.

Zobacz Enterprise →

Bezpłatna edycja Community to esegece.sgcGrid.Community w NuGet. Projekt odwołuje się albo do pakietów Community, albo do zarejestrowanych, nigdy do obu.

FunkcjaCommunity (bezpłatna)Zarejestrowana
Aktualizacje na żywo z dowolnego wątku, błysk przy zmianie, tryb tail✓✓
Reguły formatowania i motywy✓✓
Sortowanie, filtrowanie i zaznaczanie✓✓
Grupowanie, panel grup i podsumowania✓✓
Zamrożone kolumny i zmiana szerokości kolumn✓✓
Tryb wirtualny✓✓
Powiązanie z DataTable, JSON i CSV✓✓
PNG i SVG headless✓✓
Filtry kolumn, wiersz filtra i panel wyszukiwania✓✓
Wybór kolumn, zmiana kolejności kolumn, optymalna szerokość i układy✓✓
Pasma, komórki obrazu, postępu i sparkline, zaznaczanie wielu wierszy✓✓
Zapytaj swoją siatkę: TsgcGridAI, pasek zapytań AI i dowolny dostawca LLM✓✓
Edycja w miejscu−✓
Dwukierunkowa edycja DataTable, wklejanie, cofnij i ponów, edytory komórek sgcEditors−✓
Wiersze drzewa i master detail−✓
Eksport do Excela−✓
Strumienie na żywo, TsgcGridAIQuery i dostawca AI sgcWebSockets (mosty sgcGridWS i sgcUICoreWS)−✓

Obsługiwane frameworki i platformy

Komponenty w sgcGrid

KomponentCel
TsgcVCLGridDelphi i C++ Builder, VCL (sgcGrid_VCL)
TsgcFMXGridDelphi FireMonkey od XE6, w Windows, macOS, iOS i Android (sgcGrid_FMX)
TsgcGridData, TsgcGridColumns, TsgcGridFormatRules, TsgcGridLineView, TsgcGridRendererNiezależny od frameworka magazyn wierszy, kolumny, reguły formatowania i renderer, także w Linux64
TsgcGridAINiezależny od frameworka silnik zapytań w języku naturalnym, w każdej edycji, także w Linux64 (sgcGrid_AI)
TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcUIAIEventProviderPasek zapytań AI i dostawca AI z sgcUICore, w każdej edycji
TsgcUIAIChatProviderMost sgcUICoreWS: TsgcAIChat z sgcWebSockets jako dostawca AI (edycja zarejestrowana)
TsgcGridSource_DataSet, TsgcGridDataStorePowiązanie z TDataSet i magazyn wierszy pasm master detail
TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT, TsgcGridFeedSource_SSE, TsgcGridAIQueryMost sgcGridWS z sgcWebSockets (edycja zarejestrowana)
TsgcWinFormsGrid, TsgcWpfGrid, TsgcAvaloniaGrid.NET, WinForms, WPF i Avalonia
TsgcGridAI, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar, TsgcAvaloniaAIQueryBar.NET, zapytania w języku naturalnym i pasek zapytań AI dla WinForms, WPF i Avalonia
CelKomponentPlatformy
Delphi 7 do 13, VCLTsgcVCLGridWin32 oraz Win64 od XE2
Delphi XE6 do 13, FireMonkeyTsgcFMXGridWindows, macOS, iOS i Android
C++ Builder 2007 do 13TsgcVCLGrid, TsgcFMXGridGenerowane nagłówki .hpp i biblioteki statyczne
Delphi 10.2 do 13, niezależne od frameworkaModel, formatowanie, renderer, JSON i CSVLinux64, na przykład do renderowania obrazów siatki na serwerze
.NET Framework 4.7.2, .NET 8, 9 i 10TsgcWinFormsGrid, siatki WPF i AvaloniaWinForms, WPF, Avalonia, PNG i SVG headless

Najczęściej zadawane pytania

Tak. AppendRow, UpdateRow, UpdateCell i DeleteRow danych siatki są bezpieczne wątkowo, więc wątek roboczy zapisuje wiersze według klucza bezpośrednio. Siatka odświeża się w głównym wątku najwyżej MaxFPS razy na sekundę. Zobacz Aktualizacje na żywo.

Rysowane są tylko widoczne wiersze, więc koszt klatki zależy od okna, a nie od liczby wierszy. Bramka QA mierzy klatkę 1080p siatki ze 100 000 wierszy na 3,0 ms w Win32 i 4,6 ms w Win64. Dla danych, które żyją gdzie indziej, tryb wirtualny nie przechowuje wierszy i prosi o wartości, gdy wjeżdżają w widok. Zobacz Wydajność.

Tak. TsgcGridSource_DataSet wypełnia siatkę z dowolnego TDataSet, tworzy kolumny przez AutoColumns i, z LiveUpdates, podąża za każdym Append, Edit i Delete zestawu danych. Z KeyField zmienione wiersze są aktualizowane w miejscu zamiast przeładowywane. W .NET to samo źródło czyta DataTable. Zobacz Powiązanie z DataSet.

Tak. TsgcVCLGrid to zwykła kontrolka VCL, więc może leżeć na formularzu obok istniejącego TStringGrid lub TDBGrid. Ekran z TDBGrid zachowuje swój zestaw danych i dodaje TsgcGridSource_DataSet; ekran z TStringGrid zapisuje swoje wiersze przez AppendRow i UpdateRow według klucza. Nie ma automatycznej konwersji istniejących formularzy.

Edycji w miejscu, dwukierunkowej edycji DataTable, wklejania, cofnij i ponów, edytorów komórek sgcEditors, wierszy drzewa, wierszy master detail, eksportu do Excela i mostu sgcGridWS. Sortowanie, filtrowanie, wiersz filtra i panel wyszukiwania, grupowanie, podsumowania, zamrożone kolumny, wybór kolumn, układy, pasma, komórki obrazu, postępu i sparkline, zaznaczanie wielu wierszy, reguły formatowania, tryb wirtualny, JSON i CSV, wyjście headless oraz Zapytaj swoją siatkę z TsgcGridAI są w każdej edycji. Zobacz Edycje.

Tak. Rozmiary takie jak GroupIndent i GroupPanelHeight są w pikselach niezależnych od urządzenia, a siatka VCL skaluje je do DPI swojego monitora, osobno dla każdego monitora od Delphi 10.3. Theme przełącza między utLight i utDark, a AccentColor ustawia akcent zaznaczenia i błysku.

Pomoc sgcGrid

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 sgcGrid już dziś

Wersja próbna sgcUI zawiera sgcGrid z odblokowanymi wszystkimi funkcjami, pozostałe 13 produktów sgcUI i wszystkie projekty demonstracyjne.