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

sgcToolbar, pasek narzędzi i pasek stanu dla Delphi, C++ Builder & .NET

Zbuduj ramę aplikacji desktopowej z dwóch kontrolek, które wyglądają tak samo w każdym UI. Pasek narzędzi z przyciskami, przełącznikami, grupami opcji i listami rozwijanymi oraz prawdziwy pasek stanu z panelami postępu i wskaźników, które wątek roboczy może aktualizować bezpośrednio.

VCL, FireMonkey, WinForms, WPF, AvaloniaAktualizacje paska stanu z dowolnego wątkuBezpłatna edycja .NET CommunityW sgcUI Standard
Pasek narzędzi EditorShell w skali 2x z opisami przycisku, przełącznika, separatora, listy rozwijanej, etykiety i odstępu

Kompletny pasek poleceń i stanu

Dwanaście funkcji dla dwóch pasków, których potrzebuje każda aplikacja desktopowa, od grup opcji po postęp na żywo z wątku roboczego.

Polecenia

Każda pozycja, której potrzebuje pasek poleceń, a grupowanie, menu i przepełnienie obsługuje kontrolka.

Każdy rodzaj pozycji paska narzędzi w jednej kontrolce

Polecenia

Każdy rodzaj pozycji paska narzędzi w jednej kontrolce

Prawdziwy pasek narzędzi aplikacji miesza zwykłe przyciski, przyciski, które zostają wciśnięte, przyciski z menu, separatory i trochę tekstu. W sgcToolbar każdy z nich to jedna pozycja tej samej kolekcji, a Kind decyduje, jak jest rysowana i jak reaguje. Pozycje są układane od lewej do prawej z odstępem Spacing, a spacer zajmuje wolną szerokość, więc możesz przesunąć Pomoc lub nazwę użytkownika do prawej krawędzi bez kodu układu. Width ustala rozmiar pozycji, gdy potrzebujesz stałego. Podpowiedzi, stany wyłączone i podświetlanie są rysowane dla każdego rodzaju.

  • tikButton, tikToggle i tikDropdown dla poleceń
  • tikSeparator rysuje cienką pionową linię
  • tikSpacer przesuwa kolejne pozycje w prawo
  • tikLabel pokazuje tekst wewnątrz paska
Przeczytaj temat pomocy
Grupy opcji bez kodu

Polecenia

Grupy opcji bez kodu

Wyrównanie tekstu, tryby widoku i narzędzia rysowania to klasyczne wybory jednej z wielu opcji. Nadaj kilku przełącznikom ten sam GroupIndex, a utworzą grupę opcji: ustawienie Down na jednym z nich, kliknięciem lub z kodu, zwalnia pozostałe, a kliknięcie pozycji już wciśniętej zostawia ją wciśniętą, więc jeden wybór zawsze pozostaje zaznaczony. Przełącznik z GroupIndex 0 to zwykły przełącznik włącz i wyłącz, taki jak Pogrubienie czy Zawijanie wierszy. Kliknięcie zmienia Down przed wywołaniem OnItemClick, więc Twoja procedura odczytuje nowy stan. Nie potrzeba żadnego podpinania zdarzeń, aby grupa była spójna.

  • GroupIndex powyżej 0 tworzy grupę opcji
  • Down odczytuje lub ustawia stan z kodu
  • Stan wciśnięty jest rysowany z odcieniem akcentu
  • Powiązana akcja steruje Down przez swoje Checked
Przeczytaj temat pomocy

Polecenia

Poziomy powiększenia, formaty eksportu i ostatnie pliki należą do menu pod przyciskiem, a nie do dziesięciu kolejnych przycisków. Pozycja tikDropdown rysuje małą strzałkę po podpisie i pokazuje menu popup przypisane do DropdownMenu tuż pod przyciskiem: TPopupMenu w VCL i FireMonkey, ContextMenuStrip w WinForms. OnItemClick i OnClick pozycji są wywoływane przed otwarciem menu, więc możesz najpierw wypełnić lub zaznaczyć jego wpisy. Jeśli menu zostanie zwolnione, pasek sam czyści odwołanie. Jeden cel kliknięcia, jedno menu i pasek narzędzi, który pozostaje krótki, nawet gdy poleceń przybywa.

  • DropdownMenu przyjmuje popup Twojego frameworka
  • Strzałka jest rysowana po podpisie
  • Wypełnij lub zaznacz menu w OnItemClick
  • Działa też z menu przepełnienia
Przeczytaj temat pomocy

Polecenia Tylko zarejestrowana

Pozycje, które się nie mieszczą, trafiają do menu przepełnienia

Użytkownicy zmieniają rozmiar okien, a pasek narzędzi, który po prostu przycina ostatnie przyciski, ukrywa potrzebne im polecenia. Gdy pozycje się nie mieszczą, sgcToolbar przenosi ostatnie do listy przepełnienia i rysuje przycisk z podwójną strzałką na prawym końcu. Jego naciśnięcie pokazuje OverflowMenu, budowane w czasie działania z jednym wpisem na każdą ukrytą pozycję, a wybór wpisu działa dokładnie jak kliknięcie: przełącznik się zmienia, wywoływane jest OnItemClick, a lista rozwijana pokazuje swoje menu. Model informuje, co jest ukryte. Gdy okno znów się powiększy, pozycje same wracają na pasek.

  • OverflowMenu jest budowane za Ciebie w czasie działania
  • HasOverflow, OverflowCount i InOverflow dla każdej pozycji
  • ItemAtPos zgłasza trafienie w przycisk przepełnienia
  • Kompilowane pod SGC_TOOLBAR_ADVANCED

Community: pozycje, które się nie mieszczą, są przycinane, nie ma przycisku przepełnienia.

Przeczytaj temat pomocy

Polecenia Tylko zarejestrowana

Użyj ponownie swoich TAction

Jeśli Twoje polecenia już żyją w TActionList, pasek narzędzi nie powinien ich duplikować. Powiąż pozycję z dowolnym TAction VCL lub FireMonkey przez właściwość Action, a podąża ona za Caption, Enabled, Visible, Hint, ImageIndex i Checked akcji. Kliknięcie wykonuje akcję z paskiem jako ActionComponent, chyba że pozycja ma procedurę OnClick. Paski wywołują InitiateAction w czasie bezczynności, więc wyłączona akcja wyłącza swój przycisk bez dodatkowego kodu. W .NET pozycja ma Command i CommandParameter dla ICommand. Jeden TActionList może sterować razem paskiem narzędzi, menu głównym i paskiem nawigacji.

  • Action łączy pozycję z dowolnym TBasicAction
  • Checked akcji steruje Down przełącznika
  • OnUpdate akcji działa w czasie bezczynności
  • .NET: Command i CommandParameter

Community: zamiast akcji obsłuż OnClick pozycji lub OnItemClick paska.

Przeczytaj temat pomocy

Pasek stanu

Pasek stanu, który sam się układa, pokazuje postęp i stan oraz przyjmuje aktualizacje z dowolnego wątku.

Panele stanu, które same się układają

Pasek stanu

Panele stanu, które same się układają

Wiersz i kolumna, nazwa pliku, stan zapisu i główny komunikat rywalizują o dolną krawędź okna. TsgcVCLStatusBar układa swoje Panels od lewej do prawej w trzech przebiegach: panele stałe dostają swoją Width, panele AutoSize szerokość swojego tekstu, a panele Spring dzielą to, co zostało. Użyj jednego panelu spring na główny komunikat, a pasek pozostanie schludny przy każdym rozmiarze okna. Cienka linia oddziela panele, a OnPanelClick informuje, który został kliknięty. Panele to kolekcja, więc możesz je dodawać i edytować w Inspektorze obiektów w czasie projektowania.

  • Panele spkText z Alignment i Hint
  • Panele Spring dzielą wolną szerokość
  • Panele AutoSize dopasowują się do tekstu
  • OnPanelClick zgłasza kliknięcie panelu
Przeczytaj temat pomocy
Paski postępu i wskaźniki stanu

Pasek stanu

Paski postępu i wskaźniki stanu

Długie operacje potrzebują paska postępu, a aktywne połączenia światła, które mówi, czy wszystko jest w porządku. Panel może być paskiem postępu wypełnionym do Progress procent w kolorze akcentu albo wskaźnikiem: kolorową kropką, po której następuje tekst panelu. IndicatorState wybiera off, ok, warning lub error, z zielenią, bursztynem i czerwienią dobranymi osobno dla jasnego i ciemnego motywu. Pasuje do stanu połączenia z bazą danych, źródła danych lub synchronizacji w tle. Ustaw Progress lub IndicatorState, a panel sam się odrysuje, nie ma kodu rysującego do napisania.

  • spkProgress z Progress od 0 do 100
  • spkIndicator z IndicatorState
  • sisOff, sisOk, sisWarning, sisError
  • GetIndicatorColor zwraca kolor dla motywu
Przeczytaj temat pomocy

Pasek stanu

Aktualizuj pasek stanu z wątku roboczego

Pobieranie, źródła danych i długie obliczenia działają w wątkach roboczych, a przekazywanie każdej aktualizacji stanu z powrotem do wątku głównego jest żmudne i łatwo je zepsuć. SetPanelText, SetProgress i SetIndicator można wywoływać z dowolnego wątku, bez Synchronize ani Queue. Model chroni wartości blokadą i wywołuje OnChange tylko wtedy, gdy wartość naprawdę się zmieniła, więc powtarzanie tej samej wartości nic nie kosztuje. Pasek VCL wysyła wtedy komunikat do swojego okna, a pasek FireMonkey kolejkuje odrysowanie, więc UI nigdy nie jest dotykane poza wątkiem głównym. Wątek, który przeżyje panel, też jest bezpieczny.

  • SetPanelText, SetProgress, SetIndicator z dowolnego wątku
  • Bez Synchronize ani Queue w Twoim kodzie
  • Niezmienione wartości nic nie kosztują
  • Indeks poza zakresem jest ignorowany, nigdy nie zgłasza wyjątku
Przeczytaj temat pomocy

Wygląd, klawiatura i eksport

Ikony, motywy i obsługa klawiatury zgodne z resztą sgcUI oraz obrazy pasków do Twojej dokumentacji.

Ikony lub litery glifów, podpisy opcjonalne

Wygląd, klawiatura i eksport

Ikony lub litery glifów, podpisy opcjonalne

Każda klikalna pozycja ma miejsce na ikonę o rozmiarze 16 pikseli logicznych. Pokazuje obraz o ImageIndex z listy Images paska lub, gdy pozycja nie ma obrazu, jej Glyph: literę lub krótki symbol, który w ogóle nie wymaga listy obrazów. Wyłącz ShowCaptions dla zwartego paska tylko z ikonami, a podpis stanie się podpowiedzią, więc nic nie ginie. Listy obrazów VCL są raz konwertowane do prostego ARGB z odzyskanym alfa i trzymane w pamięci podręcznej do zmiany listy, więc listy z maską i 32-bitowe wyglądają poprawnie. Mieszaj oba sposoby swobodnie, gdy ikony są jeszcze projektowane.

  • Images i ImageIndex dla list obrazów
  • Glyph, gdy nie ma obrazu
  • ShowCaptions False dla samych ikon
  • Listy obrazów FireMonkey od Delphi XE8
  • Od prawej do lewej dla arabskiego i hebrajskiego: elementy układają się od prawej, a MirrorGlyph odwraca ikony kierunkowe, takie jak wstecz, dalej, cofnij i ponów
Przeczytaj temat pomocy
Jasny, ciemny i Twój kolor akcentu

Wygląd, klawiatura i eksport

Jasny, ciemny i Twój kolor akcentu

Paski biorą kolory z tokenów motywu sgcUICore, tych samych, których używa każdy produkt pakietu, więc pasek narzędzi nad sgcGrid i obok paska sgcNavigation wygląda jak jedna aplikacja. Theme wybiera utLight lub utDark, a AccentColor zastępuje akcent używany przez pierścień fokusu, odcień wciśnięcia przełączników i paski postępu. Stany najechania, naciśnięcia, wciśnięcia, fokusu i wyłączenia są wyprowadzane za Ciebie. Każdy pasek ma własny Theme, więc ustaw go na pasku narzędzi i na pasku stanu. Przełączenie w czasie działania odrysowuje oba paski naraz.

  • Theme: utDefault (domyślnie, podąża za motywem aplikacji), utLight lub utDark
  • AccentColor jako $AARRGGBB, 0 zachowuje akcent motywu
  • Kolory wskaźników podążają za motywem
  • Przełączaj w czasie działania dla przełącznika trybu ciemnego
Przeczytaj temat pomocy

Wygląd, klawiatura i eksport

Dostęp z klawiatury i działający uchwyt zmiany rozmiaru

Pasek narzędzi może dołączyć do kolejności tabulacji, gdy użytkownicy tego potrzebują: ustaw TabStop, a zaznaczony przycisk pokaże pierścień fokusu, strzałki w lewo i w prawo przechodzą między włączonymi przyciskami, Home i End skaczą, Enter lub Spacja aktywuje. Domyślnie jest wyłączone, więc pasek narzędzi nigdy nie zabiera fokusu edytorowi pod nim. ClickItem aktywuje pozycję z kodu, na przykład ze skrótu formularza. Na pasku stanu SizeGrip rysuje kropki uchwytu, a w VCL przeciągnięcie ich zmienia rozmiar formularza o zmiennym rozmiarze. W FireMonkey uchwyt jest rysowany, ale nie zmienia rozmiaru formularza, więc wyłącz tam SizeGrip, gdy formularz nie ma zmiennego rozmiaru.

  • TabStop w VCL, CanFocus w FireMonkey
  • ClickItem uruchamia pozycję z kodu
  • SizeGrip i GripRect na pasku stanu
  • Uchwyt zmienia rozmiar formularza tylko wtedy, gdy ma on zmienny rozmiar
Przeczytaj temat pomocy

Wygląd, klawiatura i eksport

Renderuj oba paski bez okna

Zrzuty ekranu paska narzędzi w podręczniku starzeją się z każdym wydaniem. Renderer w sgcToolbar_Render rysuje TsgcToolbarModel lub TsgcStatusBarModel bez okna i bez VCL czy FireMonkey, więc program konsolowy, test lub serwer WWW może tworzyć te same paski jako obraz. SaveToPNG i SaveToSVG przyjmują rozmiar w pikselach logicznych i skalę, więc 560 na 44 w skali 2 daje ostry obraz 1120 na 88. Jednostki kompilują się na każdej platformie, także Linux64. Przekaż własne obrazy przez OnGetImage, a obraz będzie zgodny z działającą aplikacją.

  • SaveToPNG zapisuje plik lub strumień PNG
  • SaveToSVG zapisuje ten sam pasek jako SVG
  • Działa na TsgcToolbarModel i TsgcStatusBarModel
  • OnGetImage dostarcza ikony do wyjścia bez okna
Przeczytaj temat pomocy

Zobacz sgcToolbar w akcji

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

Kto buduje z sgcToolbar

Edytory dokumentów i kodu

Edytor potrzebuje przełączników Pogrubienie i Kursywa, grupy opcji wyrównania, menu Powiększenie i paska stanu z wierszem, kolumną i stanem zapisu. sgcToolbar obsługuje to wszystko jedną kolekcją pozycji i jedną kolekcją paneli, powiązanymi z TActionList, który już masz. Gdy okno się zwęża, menu przepełnienia zachowuje dostęp do każdego polecenia. Demo EditorShell buduje dokładnie to wokół TMemo.

  • Rodzaje pozycji
  • Grupy opcji
  • Menu przepełnienia
Uruchom demo EditorShell

Długo działające narzędzia i źródła danych na żywo

Narzędzia importu, klienty synchronizacji i aplikacje monitorujące wykonują pracę w wątkach w tle i muszą o niej informować. Wywołuj SetProgress, SetIndicator i SetPanelText prosto z wątku roboczego, a pasek stanu odrysuje się w wątku głównym bez Synchronize w Twoim kodzie. Wskaźnik robi się zielony, bursztynowy lub czerwony zależnie od stanu zadania. Demo LiveStatus symuluje pobieranie, które robi dokładnie to.

  • Aktualizacje bezpieczne wątkowo
  • Panele postępu
  • Wskaźniki
Uruchom demo LiveStatus

Jeden pasek poleceń na każdej platformie

Aplikacja FireMonkey dostarczana na Windows, macOS i urządzenia mobilne zasługuje na ten sam pasek narzędzi wszędzie. TsgcFMXToolbar i TsgcFMXStatusBar mają te same pozycje, panele i zdarzenia co paski VCL, a paski .NET dla WinForms, WPF i Avalonia używają tych samych nazw. EditorShellFMX to wersja FireMonkey powłoki edytora, z tymi samymi pozycjami, menu przepełnienia i panelami stanu.

  • Paski FireMonkey
  • Motywy
  • Panele stanu
Uruchom demo EditorShellFMX

Pasek narzędzi i pasek stanu w kilku linijkach

To samo API w Delphi, C++ Builder i C#: przełącznik, grupa opcji, lista rozwijana i pasek stanu aktualizowany z procedury kliknięcia.

procedure TMainForm.CreateBars;
var
  oItem: TsgcToolbarItem;
  oPanel: TsgcStatusBarPanel;
begin
  // a toolbar with a toggle, a Left/Center radio group and a dropdown
  FToolbar := TsgcVCLToolbar.Create(Self);
  FToolbar.Parent := Self;
  FToolbar.ShowCaptions := True;
  FToolbar.ShowHint := True;
  FToolbar.OnItemClick := ToolbarItemClick;
  oItem := FToolbar.Items.Add;
  oItem.Caption := 'Save';
  oItem.Glyph := 'S';
  oItem.Hint := 'Save the document';
  FToolbar.Items.Add.Kind := tikSeparator;
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikToggle;
  oItem.Caption := 'Bold';
  oItem.Glyph := 'B';
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikToggle;
  oItem.GroupIndex := 1;
  oItem.Down := True;
  oItem.Caption := 'Left';
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikToggle;
  oItem.GroupIndex := 1;
  oItem.Caption := 'Center';
  oItem := FToolbar.Items.Add;
  oItem.Kind := tikDropdown;
  oItem.Caption := 'Zoom';
  oItem.DropdownMenu := FZoomMenu;
  // a status bar: a spring text panel, a progress bar and an indicator
  FStatusBar := TsgcVCLStatusBar.Create(Self);
  FStatusBar.Parent := Self;
  oPanel := FStatusBar.Panels.Add;
  oPanel.Spring := True;
  oPanel.Text := 'Ready';
  FStatusBar.Panels.Add.Kind := spkProgress;
  oPanel := FStatusBar.Panels.Add;
  oPanel.Kind := spkIndicator;
  oPanel.AutoSize := True;
  oPanel.Text := 'Saved';
  oPanel.IndicatorState := sisOk;
end;

procedure TMainForm.ToolbarItemClick(Sender: TObject; aItem: TsgcToolbarItem);
begin
  // the setters are thread safe, a worker thread can call them directly
  FStatusBar.SetPanelText(0, aItem.Caption + ' clicked');
  FStatusBar.SetProgress(1, 60);
  FStatusBar.SetIndicator(2, sisWarning);
end;
#include <vcl.h>
#include <Vcl.Menus.hpp>
#include "sgcUICore_Theme.hpp"
#include "sgcToolbar_Model.hpp"
#include "sgcToolbar_VCL.hpp"

class TBarHandler : public TObject
{
public:
  TsgcVCLStatusBar *StatusBar;
  void __fastcall ItemClick(TObject *Sender, TsgcToolbarItem *aItem);
};

void __fastcall TBarHandler::ItemClick(TObject *Sender, TsgcToolbarItem *aItem)
{
  // the setters are thread safe, a worker thread can call them directly
  StatusBar->SetPanelText(0, aItem->Caption + " clicked");
  StatusBar->SetProgress(1, 60);
  StatusBar->SetIndicator(2, sisWarning);
}

void __fastcall CreateBars(TForm *Form, TBarHandler *Handler, TPopupMenu *ZoomMenu)
{
  // a toolbar with a toggle, a Left/Center radio group and a dropdown
  TsgcVCLToolbar *Toolbar = new TsgcVCLToolbar(Form);
  Toolbar->Parent = Form;
  Toolbar->ShowCaptions = true;
  Toolbar->OnItemClick = Handler->ItemClick;
  TsgcToolbarItem *Item = Toolbar->Items->Add();
  Item->Caption = "Save";
  Item->Glyph = "S";
  Item->Hint = "Save the document";
  Toolbar->Items->Add()->Kind = tikSeparator;
  Item = Toolbar->Items->Add();
  Item->Kind = tikToggle;
  Item->Caption = "Bold";
  Item = Toolbar->Items->Add();
  Item->Kind = tikToggle;
  Item->GroupIndex = 1;
  Item->Down = true;
  Item->Caption = "Left";
  Item = Toolbar->Items->Add();
  Item->Kind = tikToggle;
  Item->GroupIndex = 1;
  Item->Caption = "Center";
  Item = Toolbar->Items->Add();
  Item->Kind = tikDropdown;
  Item->Caption = "Zoom";
  Item->DropdownMenu = ZoomMenu;
  // a status bar: a spring text panel, a progress bar and an indicator
  TsgcVCLStatusBar *StatusBar = new TsgcVCLStatusBar(Form);
  StatusBar->Parent = Form;
  TsgcStatusBarPanel *Panel = StatusBar->Panels->Add();
  Panel->Spring = true;
  Panel->Text = "Ready";
  StatusBar->Panels->Add()->Kind = spkProgress;
  Panel = StatusBar->Panels->Add();
  Panel->Kind = spkIndicator;
  Panel->AutoSize = true;
  Panel->Text = "Saved";
  Panel->IndicatorState = sisOk;
  Handler->StatusBar = StatusBar;
}
using System;
using System.Windows.Forms;
using esegece.sgcToolbar;

internal class MainForm : Form
{
    private readonly TsgcWinFormsToolbar Toolbar = new TsgcWinFormsToolbar();
    private readonly TsgcWinFormsStatusBar StatusBar = new TsgcWinFormsStatusBar();

    public MainForm()
    {
        // a toolbar with a toggle, a Left/Center radio group and a dropdown
        Toolbar.ShowCaptions = true;
        Toolbar.OnItemClick = ToolbarItemClick;
        TsgcToolbarItem oItem = Toolbar.Items.Add();
        oItem.Caption = "Save";
        oItem.Glyph = "S";
        oItem.Hint = "Save the document";
        Toolbar.Items.Add().Kind = TsgcToolbarItemKind.tikSeparator;
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikToggle;
        oItem.Caption = "Bold";
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikToggle;
        oItem.GroupIndex = 1;
        oItem.Down = true;
        oItem.Caption = "Left";
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikToggle;
        oItem.GroupIndex = 1;
        oItem.Caption = "Center";
        ContextMenuStrip oZoom = new ContextMenuStrip();
        oZoom.Items.Add("100%");
        oZoom.Items.Add("200%");
        oItem = Toolbar.Items.Add();
        oItem.Kind = TsgcToolbarItemKind.tikDropdown;
        oItem.Caption = "Zoom";
        oItem.DropdownMenu = oZoom;
        // a status bar: a spring text panel, a progress bar and an indicator
        TsgcStatusBarPanel oPanel = StatusBar.Panels.Add();
        oPanel.Spring = true;
        oPanel.Text = "Ready";
        StatusBar.Panels.Add().Kind = TsgcStatusPanelKind.spkProgress;
        oPanel = StatusBar.Panels.Add();
        oPanel.Kind = TsgcStatusPanelKind.spkIndicator;
        oPanel.AutoSize = true;
        oPanel.Text = "Saved";
        oPanel.IndicatorState = TsgcStatusIndicatorState.sisOk;
        Controls.Add(Toolbar);
        Controls.Add(StatusBar);
    }

    private void ToolbarItemClick(object sender, TsgcToolbarItem aItem)
    {
        // the setters are thread safe, a worker thread can call them directly
        StatusBar.SetPanelText(0, aItem.Caption + " clicked");
        StatusBar.SetProgress(1, 60);
        StatusBar.SetIndicator(2, TsgcStatusIndicatorState.sisWarning);
    }
}
dotnet add package esegece.sgcToolbar.WinForms

Uruchom dema sgcToolbar

Dema EditorShell i LiveStatus są dostępne dla VCL i C++ Builder, wersja FireMonkey dla Delphi, a w edycji .NET jako projekty WinForms, WPF i Avalonia.

EditorShell

Tylko zarejestrowana EditorShell

Powłoka edytora TMemo z przełącznikami, grupą opcji Lewo, Środek i Prawo, listą rozwijaną Powiększenie, powiązaniami TActionList, menu przepełnienia, panelami wiersza i kolumny oraz przełącznikiem Ciemny. Używa przepełnienia i akcji, więc wymaga edycji zarejestrowanej lub wersji próbnej.

LiveStatus

Wątek roboczy symuluje pobieranie i zasila panel tekstowy, panel postępu i wskaźnik, który robi się zielony, bursztynowy lub czerwony, z przyciskami Start i Stop. Buduje się z edycją Community.

Tylko zarejestrowana EditorShellFMX

Demo EditorShell z TsgcFMXToolbar i TsgcFMXStatusBar wokół TMemo FireMonkey, tylko dla Delphi: te same pozycje, powiązania akcji, menu przepełnienia i panele stanu.

Skompilowane dema

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

Pobierz sgcUI_bin.zip →

Gdzie jest sgcToolbar

sgcToolbar jest w każdej edycji sgcUI, począwszy od Standard, i jest też sprzedawany osobno. sgcToolbar jest również w pakiecie All-Access.

Pojedynczy pakiet sgcToolbar

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

Kup sgcToolbar → Zobacz cennik →

sgcUI Standard

sgcToolbar, sgcGrid, sgcNavigation 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 (esegece.sgcToolbar.Community w NuGet) pomija menu przepełnienia i linki Action.

FunkcjaCommunity (bezpłatna)Zarejestrowana
Każdy rodzaj pozycji, przełączniki, grupy opcji i menu rozwijane✓✓
Panele tekstu, postępu i wskaźników✓✓
Aktualizacje stanu bezpieczne wątkowo✓✓
Ikony, glify, motywy, klawiatura i uchwyt zmiany rozmiaru✓✓
Eksport PNG i SVG bez okna✓✓
Menu przepełnienia−✓
Linki Action (Delphi) i Command (.NET)−✓

Obsługiwane frameworki i platformy

Komponenty w sgcToolbar

KomponentCel
TsgcVCLToolbar, TsgcVCLStatusBarDelphi i C++ Builder, VCL (sgcToolbar_VCL)
TsgcFMXToolbar, TsgcFMXStatusBarDelphi i C++ Builder, FireMonkey (sgcToolbar_FMX)
TsgcToolbarItem, TsgcStatusBarPanel, TsgcToolbarModel, TsgcStatusBarModelModele niezależne od frameworka (sgcToolbar_Model)
TsgcWinFormsToolbar, TsgcWinFormsStatusBar.NET, WinForms
TsgcWpfToolbar, TsgcWpfStatusBar.NET, WPF
TsgcAvaloniaToolbar, TsgcAvaloniaStatusBar.NET, Avalonia
CelKomponentPlatformy
Delphi 7 do 13, VCLTsgcVCLToolbar, TsgcVCLStatusBarWin32 i Win64
Delphi XE6 do 13, FireMonkeyTsgcFMXToolbar, TsgcFMXStatusBarWindows, macOS, iOS, Android i Linux (FMXLinux)
C++ Builder 2007 do 13Paski VCL i FireMonkeyWygenerowane nagłówki .hpp i biblioteki statyczne
Delphi 10.2 do 13, bez frameworkaModele i renderer PNG oraz SVG bez oknaLinux64, na przykład do renderowania paska narzędzi na serwerze
.NET Framework 4.7.2, .NET 8, 9 i 10TsgcWinFormsToolbar, paski WPF i AvaloniaWinForms, WPF i Avalonia

Najczęściej zadawane pytania

Tak. SetPanelText, SetProgress i SetIndicator można wywoływać z dowolnego wątku, bez Synchronize ani Queue. Model chroni wartości blokadą, a pasek odrysowuje się w wątku głównym. Każda inna właściwość jest ustawiana z wątku głównego. Zobacz Aktualizacje bezpieczne wątkowo.

Obsługuje te same zadania: przyciski, przełączniki, przyciski rozwijane, separatory i etykiety u góry, panele tekstowe na dole. Dodaje pozycję spacer, panele postępu i wskaźników, settery bezpieczne wątkowo, motywy i eksport bez okna. Twoje istniejące komponenty TActionList i TPopupMenu podłączasz przez Action i DropdownMenu.

Menu przepełnienia i linków Action pozycji, czyli Command i CommandParameter w .NET. W Community pozycje, które się nie mieszczą, są przycinane. Każda inna funkcja, w tym aktualizacje stanu bezpieczne wątkowo, panele postępu i wskaźników oraz eksport bez okna, jest w Community.

Tak. C++ Builder 2007 do 13 używa tych samych pasków VCL i FireMonkey przez wygenerowane nagłówki i biblioteki, a dema EditorShell i LiveStatus są dostępne także jako projekty C++ Builder. Zakładka z kodem na tej stronie pokazuje ten sam pasek narzędzi w Delphi, C++ Builder i C#.

Tak. Wszystkie rozmiary to piksele logiczne pomnożone przez skalę monitora, a miejsce na ikonę ma 16 pikseli logicznych, więc przyciski, glify, paski postępu i kropki wskaźników pozostają ostre przy dowolnym DPI. FireMonkey bierze obrazy z listy obrazów w rozmiarze urządzenia ramki.

Tak. SaveToSVG i SaveToPNG z TsgcToolbarModel i TsgcStatusBarModel rysują paski bez okna, także na Linux64 od Delphi 10.2, więc krok budowania może odtwarzać obrazy Twojego podręcznika przy każdym wydaniu. Parametr skali daje ostre obrazy na ekranach o wysokim DPI i do druku.

Pomoc sgcToolbar

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

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