Delphi、C++ Builder & .NET sgcUI の一部

sgcEditors、Delphi、C++ Builder & .NET 向けのモダンな入力コントロール

どのモニターでも同じ見た目で、ネイティブのエディットのように動作する 15 個のフォーム入力です。実際の予約ルールを備えたカレンダー、日付と時刻のピッカー、レンジスライダー、カラーピッカー、チップ、星評価、スピンエディット、ボタン、検索、マスクと通貨のエディット、複数列のルックアップ、メモに加え、設定用のトグルスイッチ、IP アドレスエディット、継続時間エディット、フォントピッカー、チェックリストボックス、デュアルリストボックス、タッチパネル用の NumPad とスクリーンキーボードを提供します。日付は自分の言語で入力でき、保存する前にフォーム全体を検証でき、1 つのプロパティでダークテーマに切り替えられ、エディターをデータセットにバインドできます。

VCL、FireMonkey、WinForms、WPF、Avalonia 向けの 15 個のコントロールすべてのエディションでフォームの検証に対応IME とクリップボードに対応したネイティブのテキスト入力無料の .NET Community 版sgcUI Standard に含まれます
月カレンダー、日付、時刻、日時のピッカー、スピンエディット、評価、レンジスライダー、トークンエディット、カラーピッカーを並べた Gallery デモ

フォームにふさわしい入力コントロール

日付、金額、コード、選択肢、タグを素早く入力でき、間違いにくくする 16 の機能です。

コントロール一覧

実際の業務フォームの項目をカバーする 15 個の入力コントロールで、いずれも VCL、FireMonkey、.NET で利用できます。

sgcEditors のコントロールを並べた Gallery デモ

コントロール一覧

15 個のモダンな入力コントロールを 1 つのパッケージで

予約フォーム、設定ページ、フィルターでは、同じ入力が繰り返し求められます。カレンダー、日付や時刻のピッカー、スライダー、色、タグの一覧、星評価、単位付きの数値、マスクされたコード、価格、長い一覧からの選択、検索ボックス、コメントです。sgcEditors は、この 15 個すべてを一貫したファミリーとして提供します。各コントロールは、VCL と FireMonkey では同じ published プロパティとイベントで、WinForms、WPF、Avalonia では同じ名前で用意されているため、1 つのコントロールで学んだことが他のコントロールにも当てはまります。テーマ、アクセントカラー、キーボードの操作モデルも共通です。パレットの SGC Editors ページから配置するだけで、最初の実行から正しい見た目になります。

  • TsgcVCLMonthCalendar、TsgcVCLDatePicker、TsgcVCLTimePicker、TsgcVCLDateTimePicker
  • 数値には TsgcVCLRangeSlider と TsgcVCLSpinEdit
  • TsgcVCLColorPicker、TsgcVCLTokenEdit、TsgcVCLRating
  • TsgcVCLButtonEdit、TsgcVCLSearchEdit、TsgcVCLMaskEdit、TsgcVCLCurrencyEdit、TsgcVCLLookupEdit、TsgcVCLMemo
  • すべて TsgcVCLCustomEditor を継承しています
ヘルプのトピックを読む
実際の予約ルールに従うカレンダー

コントロール一覧

実際の予約ルールに従うカレンダー

ホテル、クリニック、レンタルの窓口では、どんな日付でも受け付けるわけではありません。月カレンダーは 1 つの日付を選択でき、SelectionMode を esmRange にすると日付の範囲を選択でき、MaxRangeDays でその範囲の長さに上限を設けられます。MinDate と MaxDate の外にある日、DisabledDates に挙げた日、週末などの DisabledWeekDays、OnIsDateDisabled ハンドラーが拒否した日は、取り消し線付きで描画され、選択できません。ISO 8601 の週番号と、月、年、10 年のビューにより、先の日付にも素早く移動できます。同じカレンダーが日付ピッカーのドロップダウンにも使われるため、日付を選ぶあらゆる場所でルールが適用されます。

  • SelectionMode: esmSingle または esmRange
  • MinDate、MaxDate、MaxRangeDays
  • DisabledDates、DisabledWeekDays、OnIsDateDisabled
  • ShowWeekNumbers で ISO 週番号を表示します
ヘルプのトピックを読む
2 つのつまみで価格や日付の範囲を指定

コントロール一覧 登録版のみ

2 つのつまみで価格や日付の範囲を指定

価格、重量、距離のフィルターは、レール上の範囲として指定するのが最も分かりやすい方法です。レンジスライダーは、1 つのつまみで Min から Max の間の値を選び、RangeMode では 2 つのつまみで範囲を選びます。水平にも垂直にも配置できます。目盛り、ラベル、ドラッグ中のつまみの上に表示される値のヒントを描画し、レールをクリックすると最も近いつまみがそこに移動します。つまみが交差することはなく、Step で値がスナップし、MinRange で最小の間隔が保たれるため、フィルターが誤って空になることはありません。値とラベルは、小数点や桁区切りを含め、コントロールのロケールに従います。

  • Value と EndValue を持つ RangeMode
  • Min、Max、Step、MinRange
  • TickInterval、ShowLabels、ShowValueTip
  • 通貨には LabelFormat または OnFormatLabel

Community 版: つまみは 1 つだけ描画され編集できます。EndValue は保持されますが表示されません。

ヘルプのトピックを読む
オートコンプリート付きのタグとチップ

コントロール一覧 登録版のみ

オートコンプリート付きのタグとチップ

タグ、宛先、スキルは 1 行のテキストではなく、リストです。トークンエディットは、各エントリを削除ボタン付きのチップとして描画し、チップを折り返し、収まらない場合はスクロールします。区切り文字、Enter、Tab、フォーカスの喪失で、入力したテキストがチップになり、a, b, c を貼り付けると 3 つのチップになります。OnValidateToken で各エントリを正規化または拒否でき、AllowDuplicates、CaseSensitive、MaxTokens でルールを設定できます。Registered 版では、入力中にオートコンプリートのリストがエントリを提案します。AddToken、RemoveToken、Clear を使うと、レコードの読み込みや保存の際に、コードからリストを変更できます。

  • Tokens がチップを保持し、Delimiters が 1 つのチップの終わりを決めます
  • OnValidateToken と InvalidTokens で各エントリを検証します
  • 提案には AutoCompleteItems と AutoCompleteMinChars を使います
  • OnTokenAdded と OnTokenRemoved で変更を通知します

Community 版: チップ、検証、上限は動作しますが、オートコンプリートのリストは開きません。

ヘルプのトピックを読む

コントロール一覧 登録版のみ

アルファ値付きで任意の色を選択

テーマエディター、グラフの設定、ラベルのデザイナーには、固定のパレットだけでは足りません。カラーピッカーは、色見本のグリッド、彩度と明度の正方形、色相バー、アルファバー、プレビューと 16 進数のエディットを備えた行を重ねて配置し、Parts でどれを表示するかを選べます。16 進数のエディットは、#RGB、#RGBA、#RRGGBB、#RRGGBBAA を受け付けます。ピッカーは色相を色とは別に保持するため、グレーでも色相が保たれ、ドラッグ中に正方形が飛ぶことはありません。ブランドのパレットを色見本として定義しても、ユーザーは 1 クリックで完全なピッカーを使えます。

  • Parts には ecpSwatches、ecpHSV、ecpAlpha、ecpHex があります
  • パレットには Swatches と SwatchColumns を使います
  • SelectedColor は ARGB 値です
  • OnChangeComplete は、ユーザーがマウスを離したときに発生します

Community 版: 色見本と 16 進数のみで、HSV の正方形とアルファバーは描画されず、アルファは常に $FF です。

ヘルプのトピックを読む

コントロール一覧

ボタン、検索、メモを同じスタイルで

多くの項目では、テキストの横にボタンが必要です。ファイルの参照、ダイアログを開く、値のクリアなどです。ボタンエディットは、参照、ドロップダウン、検索、クリア、プラス、マイナス、テキスト、オーナードローのボタンをネイティブのエディットの両側に置け、ボタンごとに専用のショートカットがあり、スクリーンリーダーがすべてのボタンを名前で読み上げて押すことができます。検索エディットは、入力が止まって少し経つと、または Enter で即座に OnSearch を発生させ、以前の検索をドロップダウンの履歴として再び提示します。メモは、プレースホルダー、上限を設定できる文字数カウンター、MinLines と MaxLines の間で行数に追従する高さを備えた、テーマ対応の複数行エディターです。

  • TsgcVCLButtonEdit: Buttons と OnButtonClick
  • TsgcVCLSearchEdit: SearchDelay、History、OnSearch
  • TsgcVCLMemo: ShowCounter、MaxLength、AutoHeight
ヘルプのトピックを読む

コントロール一覧

.NET と共有できるマスク入力と通貨入力

電話番号、郵便番号、口座番号、価格には、決まった形式が必要です。マスクエディットは、Delphi の EditMask 構文または .NET の MaskedTextBox 構文の入力マスクを受け付けるため、同じマスクが Delphi と .NET のアプリケーションで同じように動作します。リテラルは固定され、各位置はその種類の文字だけを受け付け、Text はリテラルを含めても除いても値を返します。通貨エディットは、浮動小数点を使わずに正確な Currency の値(.NET では decimal)を保持します。フォーカスがないときはロケールの通貨形式をそのまま表示し、ユーザーが入力している間は、記号または ISO コード付きの桁区切りされた数値を表示します。MinValue、MaxValue、AllowNegative で金額を範囲内に保ちます。

  • EditMask と MaskSyntax: emxDelphi または emxDotNet
  • IsComplete、EditText、SaveLiterals
  • Value、Decimals、CurrencyCode、SymbolMode
  • PositivePattern と NegativePattern
ヘルプのトピックを読む

コントロール一覧

複数列の一覧から行を選ぶ

顧客、製品、国は名前で選びますが、キーで保存されます。ルックアップエディットは、任意のヘッダー行を持つ複数列のドロップダウンを開き、入力に合わせて絞り込みます。エディットには表示列が表示され、KeyValue は国名の裏にある国コードのようなキーを保持します。行は Items(セルを | で区切った 1 行 1 レコード)から、またはサーバーで検索するための OnGetItems から取得し、どの行にも一致しないテキストの扱いは OnNotInList で決めます。.NET では、WinForms、WPF、Avalonia で ItemsSource、DisplayMember、ValueMember を通じて、任意のコレクションから行を取得することもできます。

  • Columns: Title、Width、Alignment
  • KeyColumn、DisplayColumn、KeyValue
  • ShowHeader、MatchMode、DropDownRows
  • .NET: すべてのエディションで ItemsSource、SelectedValue
ヘルプのトピックを読む

コントロール一覧

設定やオプションのためのトグルスイッチ

設定ページやオプションパネルでは、機能のオンとオフを切り替えます。トグルスイッチはチェックボックスの現代的な形で、新しい状態へスライドする丸いつまみ付きの角丸トラック、両側どちらにも置ける任意のキャプション、必要に応じてトラック内に表示するオンとオフの文字で構成されます。独自に描画され、オンのときはテーマのアクセントカラーを使い、DPI に合わせて拡大縮小します。ユーザーによる変更はまず OnChanging を通るため、フォームのルールで拒否でき、OnChange はユーザーの操作でもコードでも、変更のたびに実行されます。

  • TsgcVCLToggleSwitch と TsgcFMXToggleSwitch、.NET では TsgcWinFormsToggleSwitch、TsgcWpfToggleSwitch、TsgcAvaloniaToggleSwitch
  • Checked、Caption、CaptionPosition、OnText と OffText を使う ShowText、ReadOnly、Animated
  • TrackOnColor、TrackOffColor、ThumbColor、またはテーマの色、さらにトラックの大きさを決める SwitchWidth と SwitchHeight
  • OnChanging は Allow でユーザーによる変更を取り消し、OnChange は変更のたびに発生し、Toggle はユーザーと同じように状態を切り替えます
  • クリック、つまみのドラッグ、スペース、左右キー、右から左へのフォーム、スクリーンリーダー向けの Toggle パターンを持つチェックボックス
  • WPF と Avalonia では Checked が既定で双方向にバインドされ、WinForms ではデータバインディング用に CheckedChanged が発生します

トグルスイッチは Community を含むすべてのエディションに入っています。

ヘルプのトピックを読む

コントロール一覧

IPv4 と IPv6 に対応した IP アドレスエディット

ネットワーク設定、機器のセットアップ、ファイアウォールのルールでは、アドレスの入力が求められます。IPv4 では、IP アドレスエディットはドット区切りの 4 つのオクテット欄を表示し、入力に合わせて次の欄へ移動するため、通常のエディットと同じ速さで入力でき、アドレスは常に正しい形式になります。255 を超える値は上限に丸められ、フォーカスが外れると空の欄は 0 になります。IPv6 では、16 進数の数字、コロン、ドットを受け付ける 1 つのテキスト欄になり、フォーカスが外れるとテキストを検証して RFC 5952 の正規形で書き込むため、2001:DB8:0:0:0:0:2:1 は 2001:db8::2:1 になります。

  • TsgcVCLIPAddressEdit と TsgcFMXIPAddressEdit、.NET では TsgcWinFormsIPAddressEdit、TsgcWpfIPAddressEdit、TsgcAvaloniaIPAddressEdit
  • Mode で IPv4 か IPv6 を選び、Address が値で、Octets は IPv4 アドレスの 1 つの欄を読み取りまたは設定します
  • IsValid はアドレスが完全かどうかを返し、Required を指定すると、空または不完全なアドレスにテーマのエラー枠が表示されます
  • ドットまたは 3 桁目の入力で次の欄へ移動し、欄の先頭での Backspace で前の欄に戻り、左右キーで欄の境界を越え、貼り付けたアドレスはすべての欄に入ります
  • OnChange は変更のたびに発生し、Clear はアドレスを空にし、スクリーンリーダーには Value パターンを持つエディットとして認識されます
  • WPF と Avalonia では Address が既定で双方向にバインドされ、WinForms ではデータバインディング用に AddressChanged が発生します

IP アドレスエディットは Community を含むすべてのエディションに入っています。

ヘルプのトピックを読む

コントロール一覧

継続時間のための継続時間エディット

タイムアウト、間隔、実行時間は時刻ではなく継続時間です。継続時間エディットはこれを、日、時間、分、秒、ミリ秒のセグメントで表示し、ユーザーは 1 つのセグメントずつ、キー入力、矢印キー、マウスホイール、スピンボタンで編集します。ステップは次のセグメントに繰り上がるため、59 秒に 1 を足すと 1 分になり、表示される最上位のセグメントには上限がないため、日を表示しない場合は 50 時間が 50:00:00 と表示されます。

  • TsgcVCLTimeSpanEdit と TsgcFMXTimeSpanEdit、.NET では TsgcWinFormsTimeSpanEdit、TsgcWpfTimeSpanEdit、TsgcAvaloniaTimeSpanEdit
  • Value は Delphi ではミリ秒、.NET では TimeSpan で、Days、Hours、Minutes、Seconds、Milliseconds の各部分があります
  • Segments で表示するセグメントを選び、DisplayFormat で値を時計形式の 1.02:30:05.250 または単位付きの 1d 2h 30m 5s 250ms で表示します
  • MinValue と MaxValue で値を制限し、AllowNegative で先頭のマイナスを受け付け、Increment と ShowButtons でステップとスピンボタンを設定します
  • 上下キーでフォーカス中のセグメントを増減し、PageUp と PageDown では 10 ずつ増減し、左右キーと Tab でセグメント間を移動し、スクリーンリーダーには秒単位の RangeValue パターンを持つスピナーとして認識されます
  • WPF と Avalonia では Value が既定で双方向にバインドされ、WinForms ではデータバインディング用に ValueChanged が発生します

継続時間エディットは Community を含むすべてのエディションに入っています。

ヘルプのトピックを読む

コントロール一覧

各フォントファミリをプレビューできるフォントピッカー

レポートデザイナー、ラベルエディター、設定ページでは、ユーザーが書体を選べるようにします。フォントピッカーはドロップダウンボタン付きのエディットで、一覧では各フォントファミリをそれぞれの書体で描画します。入力するとファミリが絞り込まれ、最近選んだファミリは区切り線の上に先頭から表示され、フィルターで等幅のファミリだけに絞り込めるため、コードエディターやターミナルに向いています。一覧はアプリケーションが設定するまでプラットフォームから取得されます。

  • TsgcVCLFontPicker と TsgcFMXFontPicker、.NET では TsgcWinFormsFontPicker、TsgcWpfFontPicker、TsgcAvaloniaFontPicker
  • FontName が値、Fonts がファミリの一覧で、RefreshFonts はフォントをインストールした後に一覧を再読み込みします
  • ShowPreview は各名前をそれぞれの書体で描画し、PreviewText は名前の後にサンプルテキストを追加します
  • RecentCount と RecentFonts は最近選んだファミリを保持し、アプリケーションが保存と再読み込みを行えます
  • FontFilter は等幅のファミリだけを残し、Alt+下キーで一覧が開き、Enter またはクリックでファミリを選び、Escape で閉じます
  • Delphi のフォントピッカーは、Windows の VCL と FireMonkey でプレビューの書体を描画します。他の FireMonkey プラットフォームでは、名前はテーマのフォントで一覧表示されます
  • WPF と Avalonia では FontName が既定で双方向にバインドされます

フォントピッカーは Community を含むすべてのエディションに入っています。

ヘルプのトピックを読む

コントロール一覧

長い選択肢リストのためのチェックリストボックス

グリッドの列、レポートのフィルター、ライセンスのモジュールは、長い選択肢のリストです。チェックリストボックスはスクロールするリストで、各行にチェックボックスがあり、未チェック、チェック済み、グレーのいずれかになり、項目ごとに有効フラグを持ちます。任意で表示できるヘッダー行のすべて選択は、有効な項目をすべてチェックまたは解除し、任意で表示できるフィルターボックスは、入力したテキストを含まない行を、状態を変えずに非表示にします。表示範囲の行だけを描画するため、10000 項目のリストでも高速です。

  • TsgcVCLCheckListBox と TsgcFMXCheckListBox、.NET では TsgcWinFormsCheckListBox、TsgcWpfCheckListBox、TsgcAvaloniaCheckListBox
  • Items には項目ごとの Checked、State、ItemEnabled があり、3 つ目の状態には AllowGrayed を使います
  • ShowCheckAll は 3 状態のすべて選択行を表示し、ShowFilter はフィルターボックスを表示します
  • CheckAll、UncheckAll、CheckedCount があり、ユーザーによる変更では OnChange の前に OnClickCheck が発生します
  • Space でフォーカス中の行を切り替え、Ctrl+A ですべての項目をチェックし、文字を入力するとその文字で始まる次の項目へ移動し、スクリーンリーダーには Toggle パターンを持つリスト項目として認識されます
  • .NET では CheckedItems と CheckedIndices がバインディング用の読み取り専用リストで、ItemCheck イベントは Change の前に発生します

チェックリストボックスは Community を含むすべてのエディションに入っています。

ヘルプのトピックを読む

コントロール一覧

項目を選んで並べ替えるデュアルリストボックス

レポートの列、グループのメンバー、プロセスのステップを選ぶには、項目を一方のリストから他方へ移動します。デュアルリストボックスは左に Available リスト、右に Selected リストを描画し、その間のボタンで選択した行またはすべての行を移動し、外側の上下ボタンで Selected リストを並べ替えます。ダブルクリックまたはドラッグで項目をもう一方のリストへ移動でき、Selected リスト内のドラッグで並べ替えられます。

  • TsgcVCLDualListBox と TsgcFMXDualListBox、.NET では TsgcWinFormsDualListBox、TsgcWpfDualListBox、TsgcAvaloniaDualListBox
  • AvailableItems と SelectedItems、AvailableCaption と SelectedCaption、ShowCaptions と ShowReorderButtons
  • SortAvailable は戻した項目を順序どおりに挿入し、ShowFilter は各リストの上にフィルターボックスを追加し、ReadOnly は選択を保持して移動を拒否します
  • MoveToSelected、MoveAllToSelected、MoveToAvailable、MoveAllToAvailable、MoveUp、MoveDown はボタンと同じ動作をします
  • OnMoving で項目をその場に残すことができ、OnChange は 1 回の操作につき 1 回発生します
  • クリック、Ctrl+クリック、Shift+クリック、Ctrl+A で選択し、Tab で一方のリストから他方へ移り、Ctrl+右と Ctrl+左で移動し、Ctrl+上と Ctrl+下で並べ替え、右から左のフォームでは表示が反転します
  • WPF と Avalonia では SelectedItems が既定で双方向にバインドされ、WinForms では SelectedItemsChanged が発生します

デュアルリストボックスは Community を含むすべてのエディションに入っています。

ヘルプのトピックを読む

入力、言語、データ

キーボードユーザーのための素早い入力、保存前のすべての項目の検証、すべてのユーザーに合った言語、データセットへの直接のリンクを備えています。

入力、言語、データ

クリックだけでなく、本物のタイピング

データ入力の担当者は、カレンダーをクリックして進むのではなく、日付を入力します。sgcEditors のすべてのテキストフィールドは、プラットフォームの本物のエディットコントロールなので、日本語、中国語、韓国語の IME 入力、クリップボード、元に戻す、コンテキストメニュー、スクリーンリーダーがすべて動作します。解析は柔軟です。スラッシュ、ハイフン、ドット、コロン、カンマ、スペースが区切りとして使え、ロケールの月名や曜日名が認識され、2 桁の年はピボットされます。上下キーでキャレット位置のセグメントを増減でき、読み取れないテキストは OnParseError を発生させます。

  • DisplayFormat では d、m、y、h、n、s のセグメントを使います
  • OnParseError で変則的な入力を受け入れるか拒否するかを決められます
  • 任意項目には AllowEmpty と TextHint を使います
  • スピンエディットは、小数点として . と , の両方を受け付けます
ヘルプのトピックを読む

入力、言語、データ

タッチパネル用の NumPad

現場のタッチパネルにはキーボードがなく、システムのキーボードは画面の半分を覆ってしまいます。NumPad は、指や手袋でも押せる大きさのキーで数値を入力します。ドッキング型のパッドをフォームに置くとフォーカスのあるコントロールに書き込み、ドロップダウン型のパッドをコントロールに関連付けると、コントロールをタップしたときにその下にパッドが開きます。ターゲット側の変更は不要です。パッドはターゲットの範囲と小数桁数を読み取り、値をユーザーによる変更として書き込むので、ターゲットの丸め、限界値、OnChange は、ユーザーが入力したときと同じように動作します。

  • TsgcVCLNumPad はドッキング型、TsgcVCLNumPadPopup はドロップダウン型で、FireMonkey と .NET にもあります
  • スピンエディット、通貨エディット、標準のエディット、sgcGauges のノブとスライダーのゲージに入力します
  • Associate でターゲットを指定するか、パッドがフォーカスのあるコントロールに追従します
  • 入力した数値の表示と、Min 0 Max 120 のような限界値の行

NumPad は、Community 版を含むすべてのエディションにあります。オペレーター画面向けの sgcUI HMI パックの一部です。

ヘルプのトピックを読む

入力、言語、データ

キオスクとタッチスクリーン向けのスクリーンキーボード

キオスク、セルフサービス端末、オペレーターパネルには、数値だけでなく、名前、コード、メモの入力も必要です。スクリーンキーボードは、NumPad と同じ入力経路の上に作られたフルキーボードです。フォームにドッキングするとフォーカスのあるコントロールに書き込み、ドロップダウン型を関連付けると、エディットがフォーカスを受け取ったときにその下に開きます。キーボードはフォーカスを奪わないので、ターゲットのキャレットと選択範囲はそのまま保たれ、標準のエディット、メモ、sgcEditors のコントロールに変更は不要です。

  • TsgcVCLKeyboard はドッキング型、TsgcVCLKeyboardPopup はドロップダウン型で、FireMonkey にもあり、.NET では WinForms、WPF、Avalonia に対応します
  • Associate でターゲットを指定するか、キーボードがフォーカスに追従します。AutoPopup、AutoPopupAll、PopupPosition、CloseOnEnter でドロップダウンを制御します
  • 文字、記号、数字のページに加え、Shift、Caps Lock、AltGr、アクセント付き文字用のデッドキーに対応します
  • 10 種類の組み込みレイアウト(en-US, en-GB, es-ES, fr-FR, de-DE, it-IT, pt-BR, nl-NL, pl-PL, tr-TR)、sgcKeyboardRegisterLayout による独自レイアウト、Layouts を順に切り替えるレイアウトキー
  • OnKeyText は書き込み前にテキストを変更または取り消し、OnEnterKey は Enter の後に実行されます
  • テーマ、右から左へのフォーム、スクリーンリーダーが読み上げるキー

スクリーンキーボードは、Community 版を含むすべてのエディションにあります。オペレーター画面とキオスク向けの sgcUI HMI パックの一部です。

ヘルプのトピックを読む
各コントロールがユーザーの言語を話す

入力、言語、データ

各コントロールがユーザーの言語を話す

国際的なチームや多言語の製品では、すべてのユーザーにとって自然に読める日付が必要です。各コントロールは独自の FormatSettings を持ち、ユーザーのロケールから設定され、実行時に変更できるため、1 つのフォーム上の 2 つのコントロールが別のロケールを使うこともできます。カレンダーとピッカーは、日と月の名前、日付と時刻の書式、AM と PM の文字列、区切り文字をここから取得します。FirstDayOfWeek と WeekNumbering はロケールまたは任意の設定に従い、数値には適切な小数点と桁区切りが使われます。単位、ヒント、アクセシビリティ名は独自のプロパティのままなので、フォームの他の部分と一緒に翻訳できます。

  • コントロールごとの FormatSettings
  • FirstDayOfWeek: efdLocale、または強制的な efdMonday
  • WeekNumbering: 既定は ewnISO8601 です
  • ヘッドレスのモデル用の TsgcEditorLocale
  • アラビア語とヘブライ語の右から左対応:スピン、ドロップダウン、クリアのボタンは反対側に移動し、スライダー、評価、カレンダーは右から並び、編集フィールドは右から左に読みます
ヘルプのトピックを読む
フォーム向けのデータ対応バージョン

入力、言語、データ 登録版のみ

フォーム向けのデータ対応バージョン

Delphi の業務フォームの多くは TDataSet 上に構築されており、すべてのエディターを手作業で配線するのは繰り返しの多い作業です。10 個のデータ対応コントロールは、DataSource と DataField を通じてフィールドに直接バインドされます。日付ピッカー、時刻ピッカー、スピンエディット、評価、2 つ目のつまみが EndDataField にバインドされるレンジスライダー、ボタンエディット、フィールドの EditMask を使うマスクエディット、通貨エディット、メモ、そして TDBLookupComboBox のように ListSource、KeyField、ListField を通じて 2 つ目のデータセットから複数列の一覧を埋めるルックアップエディットです。AllowEmpty がオンの場合、Null のフィールドは空として表示され、必須フィールドの空の値はバリデーターに報告されます。バインドには TsgcEditorFieldLink を使い、これは DB ユニットだけを使うため、FireMonkey 版でも LiveBindings は不要です。.NET では、WinForms のエディターが BindingSource、DataTable、DataView、List を使って DataSource、DataMember、DataField でフィールドにバインドされ、WPF と Avalonia の値プロパティは双方向にバインドされます。既存のフォームに配置するだけで、すでにあるデータセットのロジックは変更なしで動作し続けます。

  • TsgcVCLDBDatePicker、TsgcVCLDBTimePicker、TsgcVCLDBSpinEdit
  • TsgcVCLDBRating と TsgcVCLDBRangeSlider
  • TsgcVCLDBButtonEdit、TsgcVCLDBMaskEdit、TsgcVCLDBCurrencyEdit、TsgcVCLDBMemo、TsgcVCLDBLookupEdit
  • DataSource、DataField、EndDataField。ルックアップの一覧は ListSource、KeyField、ListField
  • WinForms: DataSource、DataMember、DataField。WPF と Avalonia: 値のプロパティは双方向にバインドされます

.NET の Community パッケージでは、WinForms のエディターに DataSource、DataMember、DataField がありません。WPF と Avalonia のバインディング、およびルックアップエディットの ItemsSource は、どちらのエディションでも動作します。

ヘルプのトピックを読む

入力、言語、データ

保存する前にフォーム全体を検証する

フォームは、すべての項目が正しくなって初めて完成です。sgcUICore のバリデーターは、フォームのコントロールをルールに照らして検証します。必須、範囲、長さ、正規表現、メールアドレス、他の項目との比較、独自のコードです。Smart Paste と同じ方法でコントロールを見つけるため、sgcEditors のコントロールも、標準のエディット、メモ、コンボ、チェックボックス、ピッカーも同様に検証でき、VCL、FireMonkey、WinForms、WPF、Avalonia で動作します。マスクエディットは不完全な値を、ルックアップエディットは一覧にないテキストを、ルールなしで報告します。エラーは、テーマのエラー色の枠、メッセージをツールチップとして持つアイコン、任意の概要リストとして表示され、スクリーンリーダーは項目と一緒にメッセージを読み上げます。.NET では、バリデーターはデータ層のエラーも表示します。WinForms と WPF では IDataErrorInfo と INotifyDataErrorInfo、Avalonia ではデータ検証エラーです。

  • TsgcVCLValidator、TsgcFMXValidator、TsgcWinFormsValidator、TsgcWpfValidator、TsgcAvaloniaValidator
  • ルール uvrRequired、uvrRange、uvrLength、uvrRegex、uvrEmail、uvrCompare、uvrCustom
  • Trigger: 既定は uvtExit、uvtChange または uvtManual も選べます。保存する前に Validate を呼び出します
  • TsgcVCLValidationSummary はエラーを一覧表示し、クリックするとその項目にフォーカスします

Community 版を含むすべてのエディションで利用できます。正規表現は、Delphi 7 から 13 と .NET で同じテキストに一致します。

ヘルプのトピックを読む

入力、言語、データ

フォームを配置する、またはデータから生成する

レイアウトコントロールは、フォームのコントロールを sgcEditors も標準のコントロールも区別なく、グループ、タブ付きグループ、列に配置します。ラベルは 1 つの幅にそろい、ユーザーがドラッグできるスプリッターと右から左のレイアウトに対応し、SaveLayout は配置を JSON として保存します。データフォームはその上に作られています。TDataSet を指定するか、自作クラスのオブジェクトをバインドすると、フィールドごとに sgcEditors のコントロール 1 つ、各フィールドの検証規則、エラーの概要、レコードの閲覧、追加、編集、削除、登録を行うナビゲーターが作られます。Smart Paste は、メールの署名や住所ブロックのような貼り付けたテキストでレコード全体を埋め、埋めたフィールドに印を付けます。.NET では、WinForms、WPF、Avalonia のデータフォームが DataTable、リスト、またはオブジェクトを受け取ります。

  • TsgcVCLLayoutControl、TsgcFMXLayoutControl、SaveLayout と LoadLayout
  • TsgcVCLDataForm、TsgcFMXDataForm、TsgcWinFormsDataForm、TsgcWpfDataForm、TsgcAvaloniaDataForm
  • Fields:各フィールドのキャプション、種類、必須、制限、グループ、タブ、順序。クラスには BindObject
  • SmartPasteFromClipboard、SmartPasteUndo、ナビゲーターの Smart Paste ボタン

レイアウトコントロールは Community 版を含むすべてのエディションに含まれます。Delphi の Community 版には sgcEditors のデザイン時パッケージがないため、そこではコードで作成します。データフォーム、その検証規則、その Smart Paste は Registered 版のみです。

ヘルプのトピックを読む

キーボード、DPI、テーマ

レビューで確認される細部です。マウスが不要で、どのモニターでも鮮明で、アプリケーションに合った見た目になります。

どのモニターでも鮮明

キーボード、DPI、テーマ

どのモニターでも鮮明

150 パーセントのノートパソコンの隣に 100 パーセントの外部モニターを置く構成は今や普通のことで、ぼやけた入力コントロールは見劣りします。sgcEditors は、すべてのコントロールを 96 DPI の論理ピクセルでレイアウトし、画面のスケールで描画するため、コードで行うことは何もありません。VCL のフォームが別の DPI のモニターに移動すると、内部のエディットとそのフォントがコントロールに合わせてスケールされ、ドロップダウンは、開いたモニターの DPI で描画されます。FireMonkey のラスターは、Retina や Android に向けて、シーンのスケールに従います。

  • レイアウトは論理ピクセルで行い、画面のスケールで描画します
  • 内部のエディットは WM_DPICHANGED で再スケールされます
  • ドロップダウンは、それぞれのモニターの DPI を使います
  • SaveToPNG は scale を受け取り、鮮明な画像を出力します
ヘルプのトピックを読む
キーボードとスクリーンリーダーに配慮

キーボード、DPI、テーマ

キーボードとスクリーンリーダーに配慮

sgcEditors には、マウスが必要な機能はありません。描画型のコントロールは自らフォーカスを受け取り、テキスト型のコントロールはフォーカスを内部のエディットに渡します。フォーカスされたコントロールには、アクセントカラーの 2 ピクセルのフォーカスリングが描画されます。カレンダーでは、矢印キーで 1 日または 1 週間ずつ移動して無効な日をスキップし、PageUp と PageDown で 1 か月ずつ移動し、Shift で範囲を拡張します。ピッカーでは、F4 または Alt+Down でドロップダウンを開き、Escape で値を元に戻します。スピンエディットは、上下キー、PageUp、PageDown で値を増減します。

  • F4 または Alt+Down で、すべてのドロップダウンを開きます
  • Ctrl+Up でカレンダーを年と 10 年の表示に切り替えます
  • スピンエディットには Increment と LargeIncrement があります
  • ネイティブのエディットにより、スクリーンリーダーが引き続き動作します
ヘルプのトピックを読む
1 つのプロパティでライトとダーク

キーボード、DPI、テーマ

1 つのプロパティでライトとダーク

すべての入力が同じテーマに従うと、フォームは完成度が高く見えます。各コントロールには Theme、AccentColor、TextStyle があり、枠、ホバー、押下状態、選択、無効状態の色はそこから導出されるため、1 つのプロパティで見た目全体が変わります。トークンはすべての sgcUI 製品が使うものと同じなので、sgcDashboard のタイルや sgcToolbar の下に配置したエディターも、追加の作業なしで調和します。無効なコントロールは、自動的に背景になじみます。実行時にテーマを切り替えると、すべてのエディターが再描画されるため、ダークモードの設定にそのまま使えます。

  • Theme: utDefault(既定、アプリケーションのテーマに従う)、utLight、または utDark
  • 選択、つまみ、塗りつぶし、フォーカスリングには AccentColor を使います
  • サイズ、太字、色には TextStyle を使います
  • sgcUI スイート全体と同じテーマトークンを使います
ヘルプのトピックを読む

sgcEditors の動作を見る

sgcUI スイートのデモに含まれる sgcEditors:組み込みのシミュレーションデータでオフラインで動作する完全なアプリケーションです。

sgcEditors の主な利用シーン

予約フォームと予約管理

予約フォームには、休業日を考慮した宿泊期間、宿泊人数、到着時刻、そして場合によっては前回の訪問の評価が必要です。月カレンダーが MinDate、MaxRangeDays、無効な日を適用し、スピンエディットが人数を数え、時刻ピッカーが入力された時刻を受け付け、評価がフィードバックを集めます。すべて同じテーマで統一されます。BookingForm デモは、7 つのエディターとライブの概要表示で、ホテルの予約フォームを構築しています。

  • カレンダーの範囲
  • スピンエディット
  • 評価
BookingForm デモを実行する

TDataSet でのデータ入力

基幹業務アプリケーションでは、1 日中レコードを編集します。10 個のデータ対応エディターは、DataSource と DataField を通じて TDataSet のフィールドにバインドされ、レンジスライダーは両端をバインドし、Null のフィールドは空として表示されます。実際のキーボード入力と柔軟な解析を組み合わせることで、オペレーターは素早く値を入力でき、データセットにはクリーンなデータが渡されます。DataAware デモは、TClientDataSet 上の 10 個のエディターを、TDBGrid と TDBNavigator の隣に配置しています。

  • データ対応エディター
  • テキスト入力
  • キーボード
DataAware デモを実行する

国際的なスケジューリングアプリ

複数の国で使われる計画ツールは、すべてのユーザーに正しい週の開始日、週番号、月名を表示する必要があります。各コントロールが独自の FormatSettings を持つため、1 つのフォームにドイツ語のカレンダーと英語のカレンダーを並べて表示でき、FirstDayOfWeek と WeekNumbering はロケールまたは独自のルールに従います。Calendar デモは、14 日に制限した範囲で、英語、ドイツ語、スペイン語、フランス語、イタリア語を切り替えます。

  • ローカライズ
  • 週番号
  • 無効な日
Calendar デモを実行する

A Feedback Form in a Few Lines

The same API in Delphi, C++ Builder and C#: a rating, a range slider and a token edit, all reporting through 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

注文フォームを検証する

sgcUICore のバリデーターで検証する、ルックアップエディット、マスクエディット、通貨エディットです。ユーザーが保存するときに Validate を呼び出すと、すべてのエラーが表示され、最初の無効な項目にフォーカスが移ります。

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();

データセットから顧客フォームを生成する

開いたデータセット上の TsgcVCLDataForm が、エディター、検証規則、ナビゲーターを作成します。フィールドの種類とグループを設定して再構築すると、ナビゲーターの Smart Paste ボタンがクリップボードからレコードを埋めます。

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;

sgcEditors のデモを実行する

Gallery、Calendar、BookingForm、Validation、DataAware は VCL と C++ Builder 向けに、FireMonkey 向けには GalleryFMX と ValidationFMX が付属します。.NET 版には、WinForms、WPF、Avalonia 向けの Gallery と Validation、そして BookingForm、BindingWpf、DataAwareWinForms があります。

Calendar

Calendar

最大 14 日の範囲、週番号、無効にした週末と祝日、英語、ドイツ語、スペイン語、フランス語、イタリア語のロケール切り替えを備えています。

BookingForm

宿泊、人数、到着時刻のライブの概要、国のルックアップ、マスクされた電話番号、予約の前に宿泊者の項目を検証するバリデーターを備えたホテルの予約フォームです。実際のフォームでコントロールがどのように連携するかが分かります。

DataAware

登録版のみ DataAware

TClientDataSet 上の 10 個のデータ対応エディターを、TDBGrid と TDBNavigator とともに配置しています。2 つ目のデータセットから埋めるルックアップエディットと、必須フィールドのバリデーターも含みます。データ対応コントロールには、Registered 版または体験版が必要です。

GalleryFMX

FireMonkey のエディターで作ったギャラリーで、Windows と Android に対応し、VCL のコントロールと同じプロパティとイベントを備えています。

Validation

標準のコントロールと sgcEditors のコントロールに対するすべてのルールの種類、3 つのトリガー、枠とアイコンの表示、概要リストを確認できます。ValidationFMX は FireMonkey で同じことを行い、.NET 版には Validation、ValidationWpf、ValidationAvalonia があります。

コンパイル済みデモ

sgcUI 全製品のすぐに実行できる実行ファイルです。インストールは不要です。

sgcUI_bin.zip をダウンロード →

Getting Started ガイド

Delphi (VCL) 向けの QuickStart デモ 5 つが Demos\Editors\Delphi\00.QuickStart に入っています。PDF ガイドが、それらを順を追って解説します。フォーム上の最初のエディター、値の読み書き、テーマ、入力検証、データフォームで作る連絡先アプリケーション。

ガイドをダウンロード(PDF、英語) →

sgcEditors が含まれるエディション

sgcEditors は、すべての sgcUI エディションに含まれており、単体でも販売しています。All-Access バンドルにも含まれています。

sgcEditors 単体パッケージ

€199 / 開発者、ソースコード一式、1 年間のアップデート付き。

sgcEditors を購入 → 価格を見る →

sgcUI Standard

sgcEditors、sgcGrid、sgcNavigation、sgcToolbar、€380 から。

Standard を見る →

sgcUI Professional

Standard に加えて sgcCharts、sgcDashboard、sgcGauges、€529 から。

Professional を見る →

sgcUI Enterprise

sgcUI 全 17 製品、€699 から。

Enterprise を見る →

無料の Community 版(NuGet の esegece.sgcEditors.Community)には 15 個のコントロールすべてとレイアウトコントロール、検証フレームワークが含まれますが、カラーピッカーには HSV の正方形とアルファバーがなく、トークンエディットにはオートコンプリートのリストがなく、レンジスライダーのつまみは 1 つで、データ対応エディター、データフォーム、WinForms の DataSource バインディングはありません。

機能Community(無料)登録版
VCL、FireMonkey、.NET 向けの 15 個のコントロールすべて✓✓
検証: ルール、エラー表示、概要(sgcUICore)✓✓
WinForms、WPF、Avalonia での ItemsSource によるルックアップの一覧✓✓
ネイティブのテキスト入力、柔軟な解析、ローカライズ✓✓
カレンダーの範囲、制限、無効な日✓✓
キーボード、DPI、テーマ、ヘッドレス出力✓✓
タッチパネル用の NumPad✓✓
10 種類のレイアウトを備えたスクリーンキーボード✓✓
設定用のトグルスイッチ✓✓
IPv4 と IPv6 に対応した IP アドレスエディット✓✓
継続時間のための継続時間エディット✓✓
各フォントファミリのプレビュー付きフォントピッカー✓✓
すべて選択とフィルター付きのチェックリストボックス✓✓
移動ボタンと並べ替えボタン付きのデュアルリストボックス✓✓
JSON で保存するレイアウト付きのレイアウトコントロール(Delphi の Community 版ではコードで作成)✓✓
2 つのつまみを持つレンジスライダー−✓
カラーピッカーの HSV の正方形とアルファバー−✓
トークンエディットのオートコンプリートのリスト−✓
データ対応エディター(Delphi と C++ Builder)−✓
WinForms の DataSource、DataMember、DataField−✓
TDataSet、クラス、DataTable、またはオブジェクトからのデータフォーム、検証と Smart Paste 付き−✓

対応フレームワークとプラットフォーム

sgcEditors のコンポーネント

すべてのコントロールが、VCL、FireMonkey、WinForms、WPF、Avalonia 向けに、同じプロパティとイベントで用意されています。

コントロールVCL と C++ BuilderFireMonkey.NET
月カレンダーTsgcVCLMonthCalendarTsgcFMXMonthCalendarTsgcWinFormsMonthCalendar
日付ピッカーTsgcVCLDatePickerTsgcFMXDatePickerTsgcWinFormsDatePicker
時刻ピッカーTsgcVCLTimePickerTsgcFMXTimePickerTsgcWinFormsTimePicker
日時ピッカーTsgcVCLDateTimePickerTsgcFMXDateTimePickerTsgcWinFormsDateTimePicker
レンジスライダーTsgcVCLRangeSliderTsgcFMXRangeSliderTsgcWinFormsRangeSlider
カラーピッカーTsgcVCLColorPickerTsgcFMXColorPickerTsgcWinFormsColorPicker
トークンエディットTsgcVCLTokenEditTsgcFMXTokenEditTsgcWinFormsTokenEdit
評価TsgcVCLRatingTsgcFMXRatingTsgcWinFormsRating
スピンエディットTsgcVCLSpinEditTsgcFMXSpinEditTsgcWinFormsSpinEdit
ボタンエディットTsgcVCLButtonEditTsgcFMXButtonEditTsgcWinFormsButtonEdit
検索エディットTsgcVCLSearchEditTsgcFMXSearchEditTsgcWinFormsSearchEdit
マスクエディットTsgcVCLMaskEditTsgcFMXMaskEditTsgcWinFormsMaskEdit
通貨エディットTsgcVCLCurrencyEditTsgcFMXCurrencyEditTsgcWinFormsCurrencyEdit
ルックアップエディットTsgcVCLLookupEditTsgcFMXLookupEditTsgcWinFormsLookupEdit
メモTsgcVCLMemoTsgcFMXMemoTsgcWinFormsMemo
トグルスイッチTsgcVCLToggleSwitchTsgcFMXToggleSwitchTsgcWinFormsToggleSwitch
IP アドレスエディットTsgcVCLIPAddressEditTsgcFMXIPAddressEditTsgcWinFormsIPAddressEdit
継続時間エディットTsgcVCLTimeSpanEditTsgcFMXTimeSpanEditTsgcWinFormsTimeSpanEdit
フォントピッカーTsgcVCLFontPickerTsgcFMXFontPickerTsgcWinFormsFontPicker
チェックリストボックスTsgcVCLCheckListBoxTsgcFMXCheckListBoxTsgcWinFormsCheckListBox
デュアルリストボックスTsgcVCLDualListBoxTsgcFMXDualListBoxTsgcWinFormsDualListBox
NumPadTsgcVCLNumPad, TsgcVCLNumPadPopupTsgcFMXNumPad, TsgcFMXNumPadPopupTsgcWinFormsNumPad, TsgcWinFormsNumPadPopup
スクリーンキーボードTsgcVCLKeyboard, TsgcVCLKeyboardPopupTsgcFMXKeyboard, TsgcFMXKeyboardPopupTsgcWinFormsKeyboard, TsgcWinFormsKeyboardPopup
レイアウトコントロールTsgcVCLLayoutControlTsgcFMXLayoutControlTsgcWinFormsLayoutControl
データフォームTsgcVCLDataFormTsgcFMXDataFormTsgcWinFormsDataForm

.NET の列には WinForms の名前を示しています。同じコントロールが WPF と Avalonia にもあり、プレフィックスは TsgcWpf と TsgcAvalonia です。非ビジュアルのヘルパーは、TsgcEditorModel、TsgcEditorLocale、TsgcEditorFieldLink です。10 個のデータ対応エディター(TsgcVCLDBDatePicker、TsgcVCLDBTimePicker、TsgcVCLDBSpinEdit、TsgcVCLDBRating、TsgcVCLDBRangeSlider、TsgcVCLDBButtonEdit、TsgcVCLDBMaskEdit、TsgcVCLDBCurrencyEdit、TsgcVCLDBMemo、TsgcVCLDBLookupEdit と、その FireMonkey 版)は Registered 版専用で、Delphi と C++ Builder 向けに提供されます。.NET では、Registered 版の WinForms エディターが DataSource、DataMember、DataField でバインドされます。レイアウトコントロールはすべてのエディションに含まれ、データフォームは Registered 版のみです。バリデーターと検証の概要は sgcUICore に含まれます。TsgcVCLValidator、TsgcFMXValidator、TsgcWinFormsValidator、TsgcWpfValidator、TsgcAvaloniaValidator です。

ターゲットコンポーネントプラットフォーム
Delphi 7 から 13、VCLTsgcVCL エディターWin32、XE2 以降は Win64
Delphi XE6 から 13、FireMonkeyTsgcFMX エディターWindows、macOS、iOS、Android
C++ Builder 2007 から 13TsgcVCL と TsgcFMX のエディター生成された .hpp ヘッダーとスタティックライブラリ
Delphi 10.2 から 13、フレームワーク非依存モデル、レイアウトモデルとその JSON、ヘッドレスの PNG および SVG 出力Linux64(Linux 用コントロールはありません)
.NET Framework 4.7.2、.NET 8、9 と 10WinForms、WPF、Avalonia のエディターWindows デスクトップと Avalonia のターゲット

よくある質問

はい。すべてのテキストフィールドはプラットフォームの本物のエディットです。VCL ではボーダーレスの TEdit、FireMonkey では FMX の TEdit を使っているため、日本語、中国語、韓国語の IME 入力、クリップボード、元に戻す、コンテキストメニュー、スクリーンリーダーが、特別なコードなしで動作します。テキスト入力と IMEをご覧ください。

はい。MinDate と MaxDate で制限を設定し、DisabledDates で祝日を列挙し、DisabledWeekDays で週末をブロックし、OnIsDateDisabled でその他のルールを判定できます。無効な日は取り消し線付きで表示され、キーボード操作ではスキップされ、ピッカーに入力しても受け付けられません。Calendar デモは、週末と 2 つの祝日をブロックして、ルールの動作を示しています。

Delphi と C++ Builder の 10 個です。日付ピッカー、時刻ピッカー、スピンエディット、評価、レンジスライダー、ボタンエディット、マスクエディット、通貨エディット、メモ、ルックアップエディットで、それぞれ VCL と FireMonkey のコントロールがあります。Registered 版または体験版が必要です。.NET では、Registered 版の WinForms エディターが DataSource、DataMember、DataField でフィールドにバインドされ、どちらのエディションでも、コントロールを WinForms、WPF、Avalonia のデータバインディングでバインドでき、ルックアップエディットは ItemsSource から行を取得します。

15 個のコントロールすべてと検証フレームワークが含まれます。Community 版では、カラーピッカーの HSV の正方形とアルファバー、トークンエディットのオートコンプリートのリスト、レンジスライダーの 2 つ目のつまみ、WinForms エディターの DataSource、DataMember、DataField メンバーが含まれません。Delphi のデータ対応エディターは Registered 版専用です。エディションをご覧ください。

はい。sgcUICore のバリデーターをフォームに配置し、Container を設定してルールを追加します。必須、範囲、長さ、正規表現、メールアドレス、比較、カスタムです。sgcEditors のコントロールと、標準のエディット、メモ、コンボ、チェックボックス、ピッカーを検証し、枠、アイコン、任意の概要を表示し、スクリーンリーダーがメッセージを読み上げます。保存する前に Validate を呼び出します。すべてのエディションで、VCL、FireMonkey、WinForms、WPF、Avalonia 向けに利用できます。検証をご覧ください。

はい。各コントロールは FormatSettings を独自に保持するため、日と月の名前、書式、区切り文字、週の開始日をコントロールごとに変えられます。Calendar デモは、実行時に英語、ドイツ語、スペイン語、フランス語、イタリア語を切り替え、別途指定しない限り、週番号は ISO 8601 に従います。

日付と時刻については使えます。TsgcVCLDatePicker、TsgcVCLTimePicker、TsgcVCLDateTimePicker は、ドロップダウンのカレンダーまたは時刻リストを備えた、型付きのエディットです。さらに、月名を柔軟に解析し、制限と無効な日を考慮し、sgcUI のテーマに従い、モニターごとの DPI で描画されます。

はい。C++ Builder 2007 と 2010 から 13 では、生成されたヘッダーとライブラリを通じて、同じ VCL と FireMonkey のコントロールを使えます。DataAware を含むすべての Delphi のデモも、C++ Builder のプロジェクトとして付属します。このページのコードタブでは、同じフォームを Delphi、C++ Builder、C# で確認でき、各サンプルは公開前にコンパイル済みです。

sgcEditors のヘルプ

3,000+開発者
20+年
761+コンポーネント
30+API 連携
5プラットフォーム
30日間返金保証ご満足いただけない場合は、ご購入から30日以内に全額返金をリクエストできます。 返金ポリシーを見る

今すぐ sgcEditors をお試しください

sgcUI 体験版には、sgcEditors とその他すべての sgcUI 製品が含まれています。