Delphi, C++ Builder & .NET sgcUI 구성 제품

sgcEditors, Delphi, C++ Builder & .NET용 현대적인 입력 컨트롤

어떤 모니터에서도 똑같이 보이고 네이티브 편집기처럼 동작하는 폼 입력 15종입니다. 실제 예약 규칙을 갖춘 달력, 날짜 및 시간 선택기, 범위 슬라이더, 색상 선택기, 칩, 별점, 스핀 편집기, 버튼, 검색, 마스크 및 통화 편집기, 다중 열 조회, 메모, 설정용 토글 스위치, IP 주소 편집기, 시간 간격 편집기, 글꼴 선택기, 체크 목록 상자, 이중 목록 상자, 그리고 터치 패널용 NumPad와 화상 키보드가 있습니다. 사용자의 언어로 날짜를 입력하고, 저장하기 전에 폼 전체를 검사하고, 속성 하나로 다크 테마로 전환하며, 편집기를 데이터셋에 바인딩하세요.

VCL, FireMonkey, WinForms, WPF, Avalonia용 컨트롤 15종모든 에디션에서 폼 유효성 검사IME와 클립보드를 지원하는 네이티브 텍스트 입력무료 .NET Community 에디션sgcUI Standard에 포함
월 달력, 날짜, 시간, 날짜 및 시간 선택기, 스핀 편집기, 평점, 범위 슬라이더, 토큰 편집기, 색상 선택기가 있는 Gallery 데모

폼에 어울리는 입력 컨트롤

날짜, 금액, 코드, 선택 항목, 태그를 빠르게 입력하고 실수하기 어렵게 만드는 기능 16가지입니다.

컨트롤

실제 업무 폼의 필드를 모두 다루는 입력 컨트롤 15종이며 각각 VCL, FireMonkey, .NET에서 사용할 수 있습니다.

sgcEditors 컨트롤이 있는 Gallery 데모

컨트롤

하나의 패키지에 담긴 현대적인 입력 컨트롤 15종

예약 폼, 설정 페이지, 필터는 늘 같은 입력을 요구합니다. 달력, 날짜 또는 시간 선택기, 슬라이더, 색상, 태그 목록, 별점, 단위가 있는 숫자, 마스크 코드, 가격, 긴 목록에서 고르는 선택, 검색 상자, 메모입니다. sgcEditors는 이 열다섯 가지를 일관된 하나의 제품군으로 제공합니다. 각 컨트롤은 VCL과 FireMonkey에서 동일한 published 속성과 이벤트로, WinForms, WPF, Avalonia에서 동일한 이름으로 존재하므로 한 컨트롤에서 배운 것을 다른 컨트롤에도 그대로 적용할 수 있습니다. 모두 하나의 테마, 하나의 강조 색상, 하나의 키보드 모델을 공유합니다. 팔레트의 SGC Editors 페이지에서 놓기만 하면 처음 실행할 때부터 올바르게 보입니다.

  • TsgcVCLMonthCalendar, TsgcVCLDatePicker, TsgcVCLTimePicker, TsgcVCLDateTimePicker
  • 숫자용 TsgcVCLRangeSlider와 TsgcVCLSpinEdit
  • TsgcVCLColorPicker, TsgcVCLTokenEdit, TsgcVCLRating
  • TsgcVCLButtonEdit, TsgcVCLSearchEdit, TsgcVCLMaskEdit, TsgcVCLCurrencyEdit, TsgcVCLLookupEdit, TsgcVCLMemo
  • 모두 TsgcVCLCustomEditor에서 파생됩니다
도움말 항목 읽기
실제 예약 규칙을 따르는 달력

컨트롤

실제 예약 규칙을 따르는 달력

호텔, 병원, 렌탈 데스크는 아무 날짜나 받지 않습니다. 월 달력은 하루를 선택하거나 SelectionMode를 esmRange로 설정해 날짜 범위를 선택하며, MaxRangeDays로 그 범위의 최대 길이를 제한합니다. MinDate와 MaxDate 밖의 날, DisabledDates에 나열된 날, 주말 같은 DisabledWeekDays, OnIsDateDisabled 핸들러가 거부하는 모든 날은 취소선으로 그려지며 선택할 수 없습니다. ISO 8601 주 번호와 월, 연, 10년 보기는 사용자가 멀리 앞으로 이동하도록 돕습니다. 같은 달력이 날짜 선택기의 드롭다운도 구동하므로, 날짜를 선택하는 모든 곳에 규칙이 적용됩니다.

  • SelectionMode: esmSingle 또는 esmRange
  • MinDate, MaxDate, MaxRangeDays
  • DisabledDates, DisabledWeekDays, OnIsDateDisabled
  • ISO 주 번호를 위한 ShowWeekNumbers
도움말 항목 읽기
핸들 두 개로 설정하는 가격 및 날짜 범위

컨트롤 Registered 에디션 전용

핸들 두 개로 설정하는 가격 및 날짜 범위

가격, 무게, 거리 필터는 레일 위의 범위로 표시할 때 가장 읽기 좋습니다. 범위 슬라이더는 핸들 하나로 Min과 Max 사이의 값을, RangeMode에서는 핸들 두 개로 가로 또는 세로 범위를 선택합니다. 눈금, 라벨, 드래그 중인 핸들 위의 값 툴팁을 그리며 레일을 클릭하면 가장 가까운 핸들이 그곳으로 이동합니다. 핸들은 서로 교차하지 않고, Step이 값을 맞추며, MinRange가 최소 간격을 유지하므로 필터가 실수로 비는 일이 없습니다. 값과 라벨은 소수점과 천 단위 구분 기호를 포함해 컨트롤의 로케일을 따릅니다.

  • Value와 EndValue를 가진 RangeMode
  • Min, Max, Step, MinRange
  • TickInterval, ShowLabels, ShowValueTip
  • 통화용 LabelFormat 또는 OnFormatLabel

Community: 핸들 하나만 그려지고 편집되며, EndValue는 유지되지만 표시되지 않습니다.

도움말 항목 읽기
자동 완성을 지원하는 태그와 칩

컨트롤 Registered 에디션 전용

자동 완성을 지원하는 태그와 칩

태그, 수신자, 기술은 한 줄의 텍스트가 아니라 목록입니다. 토큰 편집기는 각 항목을 삭제 버튼이 있는 칩으로 그리고, 칩을 줄바꿈하며 맞지 않으면 스크롤합니다. 구분 기호, Enter, Tab 또는 포커스 해제가 입력한 텍스트를 칩으로 바꾸며, a, b, c를 붙여넣으면 세 개가 만들어집니다. OnValidateToken이 각 항목을 정규화하거나 거부하고, AllowDuplicates, CaseSensitive, MaxTokens가 규칙을 정합니다. Registered 빌드에서는 사용자가 입력하는 동안 자동 완성 목록이 항목을 제안합니다. AddToken, RemoveToken, Clear로 레코드를 불러오거나 저장할 때 코드에서 목록을 변경합니다.

  • Tokens가 칩을 보관하며 Delimiters가 하나를 끝냅니다
  • OnValidateToken과 InvalidTokens가 각 항목을 검사합니다
  • 제안을 위한 AutoCompleteItems와 AutoCompleteMinChars
  • OnTokenAdded와 OnTokenRemoved가 변경을 알려 줍니다

Community: 칩, 유효성 검사, 제한은 동작하지만 자동 완성 목록은 열리지 않습니다.

도움말 항목 읽기

컨트롤 Registered 에디션 전용

알파를 지원하는 모든 색상 선택

테마 편집기, 차트 설정, 라벨 디자이너에는 고정된 팔레트 이상이 필요합니다. 색상 선택기는 견본 그리드, 채도와 명도 사각형, 색조 막대, 알파 막대, 미리보기와 16진수 편집 행을 쌓아 표시하며 Parts가 어떤 것을 보여 줄지 선택합니다. 16진수 편집기는 #RGB, #RGBA, #RRGGBB, #RRGGBBAA를 받습니다. 선택기는 색조를 색상과 별도로 유지하므로 회색도 색조를 보존하고 사용자가 드래그하는 동안 사각형이 튀지 않습니다. 브랜드 팔레트를 견본으로 정의해도 사용자는 한 번의 클릭으로 전체 선택기를 쓸 수 있습니다.

  • ecpSwatches, ecpHSV, ecpAlpha, ecpHex를 가진 Parts
  • 팔레트를 위한 Swatches와 SwatchColumns
  • ARGB 값인 SelectedColor
  • 사용자가 마우스를 놓을 때의 OnChangeComplete

Community: 견본과 16진수만 제공하며 HSV 사각형과 알파 막대는 그려지지 않고 알파는 항상 $FF입니다.

도움말 항목 읽기

컨트롤

같은 스타일의 버튼, 검색, 메모

많은 필드에는 텍스트 옆에 버튼이 필요합니다. 파일 찾아보기, 대화 상자 열기, 값 지우기 같은 것입니다. 버튼 편집기는 찾아보기, 드롭다운, 검색, 지우기, 더하기, 빼기, 텍스트, 오너 드로우 버튼을 네이티브 편집기의 양쪽에 둘 수 있고, 버튼마다 고유한 단축키가 있으며, 화면 읽기 프로그램이 모든 버튼을 이름으로 나열하고 누를 수 있습니다. 검색 편집기는 입력이 잠시 멈추면 OnSearch를 발생시키고 Enter를 누르면 즉시 발생시키며, 이전 검색을 드롭다운 기록으로 다시 제안합니다. 메모는 자리 표시자, 선택적 한도가 있는 글자 수 카운터, 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(셀을 |로 나눈 한 줄에 한 행)에서 오거나 서버 검색용 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 주소 편집기는 점 구분자가 있는 옥텟 필드 네 개를 보여 주고 사용자가 입력하는 대로 다음 필드로 넘어갑니다. 그래서 일반 편집기만큼 빠르게 주소를 입력할 수 있고 주소는 항상 올바른 형식입니다. 255를 넘는 값은 255로 제한되고, 포커스가 벗어날 때 빈 필드는 0이 됩니다. IPv6에서는 16진수, 콜론, 점을 받는 텍스트 필드 하나이며, 텍스트를 검증하고 포커스가 벗어날 때 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 주소의 필드 하나를 읽거나 설정합니다
  • IsValid는 주소가 완전한지 알려 주고, Required를 쓰면 비어 있거나 불완전한 주소에 테마의 오류 테두리가 표시됩니다
  • 점이나 세 번째 숫자는 다음 필드로 이동하고, 필드 시작 위치의 Backspace는 이전 필드로 돌아가며, 왼쪽과 오른쪽 키는 필드 경계를 넘나들고, 붙여넣은 주소는 모든 필드를 채웁니다
  • OnChange는 변경할 때마다 발생하고, Clear는 주소를 비우며, 화면 읽기 프로그램은 Value 패턴이 있는 편집기로 인식합니다
  • WPF와 Avalonia에서는 Address가 기본적으로 양방향 바인딩되고, WinForms에서는 데이터 바인딩을 위해 AddressChanged가 발생합니다

IP 주소 편집기는 Community를 포함한 모든 에디션에 들어 있습니다.

도움말 항목 읽기

컨트롤

기간을 위한 시간 간격 편집기

타임아웃, 간격, 실행 시간은 시각이 아니라 기간입니다. 시간 간격 편집기는 일, 시, 분, 초, 밀리초의 세그먼트로 기간을 보여 주며, 사용자는 입력, 화살표 키, 마우스 휠, 스핀 버튼으로 한 번에 한 세그먼트씩 편집합니다. 한 단계 변경은 다음 세그먼트로 올림되므로 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
  • 항목별 Checked, State, ItemEnabled를 갖춘 Items, 그리고 세 번째 상태를 위한 AllowGrayed
  • ShowCheckAll은 3상태 모두 선택 행을, ShowFilter는 필터 상자를 표시합니다
  • CheckAll, UncheckAll, CheckedCount, 그리고 사용자의 변경에 대해 OnChange 앞에 발생하는 OnClickCheck
  • 스페이스는 포커스가 있는 행을 토글하고, Ctrl+A는 모든 항목을 체크하며, 문자를 누르면 그 문자로 시작하는 다음 항목으로 이동하고, 화면 읽기 프로그램은 Toggle 패턴이 있는 목록 항목으로 인식합니다
  • .NET에서는 CheckedItems와 CheckedIndices가 바인딩용 읽기 전용 목록이며, ItemCheck 이벤트가 Change보다 먼저 발생합니다

체크 목록 상자는 Community를 포함한 모든 에디션에 들어 있습니다.

도움말 항목 읽기

컨트롤

항목을 고르고 순서를 정하는 이중 목록 상자

보고서의 열, 그룹의 구성원, 프로세스의 단계를 고르려면 항목을 한 목록에서 다른 목록으로 옮겨야 합니다. 이중 목록 상자는 왼쪽에 사용 가능 목록, 오른쪽에 선택됨 목록을 그리고, 그 사이의 버튼으로 선택한 행이나 모든 행을 옮기며, 바깥쪽 끝의 위쪽과 아래쪽 버튼으로 선택됨 목록의 순서를 바꿉니다. 더블 클릭이나 끌기로 항목을 다른 목록으로 옮기고, 선택됨 목록 안에서 끌면 순서가 바뀝니다.

  • TsgcVCLDualListBox와 TsgcFMXDualListBox, .NET에서는 TsgcWinFormsDualListBox, TsgcWpfDualListBox, TsgcAvaloniaDualListBox
  • AvailableItems와 SelectedItems, AvailableCaption과 SelectedCaption, ShowCaptions와 ShowReorderButtons
  • SortAvailable은 되돌린 항목을 순서에 맞게 삽입하고, ShowFilter는 각 목록 위에 필터 상자를 추가하며, ReadOnly는 선택을 유지하고 이동을 거부합니다
  • MoveToSelected, MoveAllToSelected, MoveToAvailable, MoveAllToAvailable, MoveUp, MoveDown은 버튼과 같은 일을 합니다
  • OnMoving은 항목을 제자리에 유지할 수 있고, OnChange는 작업당 한 번 발생합니다
  • 클릭, Ctrl+클릭, Shift+클릭, Ctrl+A로 선택하고, Tab은 한 목록에서 다른 목록으로 이동하며, Ctrl+오른쪽과 Ctrl+왼쪽은 이동, Ctrl+위쪽과 Ctrl+아래쪽은 순서 변경이고, 오른쪽에서 왼쪽 폼에서는 화면이 좌우 반전됩니다
  • WPF와 Avalonia에서는 SelectedItems가 기본적으로 양방향 바인딩되고, WinForms에서는 데이터 바인딩을 위해 SelectedItemsChanged가 발생합니다

이중 목록 상자는 Community를 포함한 모든 에디션에 들어 있습니다.

도움말 항목 읽기

입력, 언어, 데이터

키보드 사용자를 위한 빠른 입력, 저장하기 전에 모든 필드 검사, 모든 사용자를 위한 올바른 언어, 데이터셋과의 직접 연결을 제공합니다.

입력, 언어, 데이터

클릭이 아닌 진짜 입력

데이터 입력 담당자는 달력을 클릭하지 않고 날짜를 입력합니다. sgcEditors의 모든 텍스트 필드는 플랫폼의 실제 편집 컨트롤이므로 일본어, 중국어, 한국어 IME 조합, 클립보드, 실행 취소, 컨텍스트 메뉴, 화면 낭독기가 모두 동작합니다. 구문 분석은 유연해서 슬래시, 하이픈, 점, 콜론, 쉼표, 공백이 필드를 구분하고 로케일의 월 및 요일 이름을 이해하며 두 자리 연도는 기준 연도로 보정됩니다. 위쪽과 아래쪽 화살표는 캐럿 아래의 구간 값을 올리고 내리며, 읽을 수 없는 텍스트는 OnParseError를 발생시킵니다.

  • d, m, y, h, n, s 구간을 가진 DisplayFormat
  • 특이한 입력을 받아들이거나 거부하는 OnParseError
  • 선택 필드를 위한 AllowEmpty와 TextHint
  • 스핀 편집기는 소수점 구분자로 . 와 , 를 모두 받습니다
도움말 항목 읽기

입력, 언어, 데이터

터치 패널용 NumPad

작업 현장의 터치 패널에는 키보드가 없고, 시스템 키보드는 화면의 절반을 가립니다. NumPad는 손가락이나 장갑 낀 손으로도 누를 수 있을 만큼 큰 키로 숫자를 입력합니다. 폼에 도킹형 패드를 놓으면 포커스가 있는 컨트롤에 값을 기록하고, 컨트롤에 드롭다운 패드를 연결하면 컨트롤을 탭할 때 그 아래에 패드가 열립니다. 대상은 수정할 필요가 없습니다. 패드가 범위와 소수 자릿수를 읽고 값을 사용자 변경으로 기록하므로, 대상의 반올림, 한계, OnChange가 사용자가 직접 입력한 것처럼 실행됩니다.

  • 도킹형 TsgcVCLNumPad와 드롭다운형 TsgcVCLNumPadPopup, FireMonkey와 .NET에서도 사용할 수 있습니다
  • 스핀 편집기, 통화 편집기, 표준 편집 컨트롤, sgcGauges의 노브 및 슬라이더 게이지에 입력합니다
  • Associate가 대상을 지정하거나, 패드가 포커스가 있는 컨트롤을 따라갑니다
  • 입력한 숫자를 보여 주는 디스플레이와 Min 0 Max 120 같은 한계 표시줄

NumPad는 Community를 포함한 모든 에디션에 있습니다. 운영자 화면을 위한 sgcUI HMI Pack의 일부입니다.

도움말 항목 읽기

입력, 언어, 데이터

키오스크와 터치 스크린용 화상 키보드

키오스크, 셀프서비스 단말기, 운영자 패널에는 숫자뿐 아니라 이름, 코드, 메모도 필요합니다. 화상 키보드는 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 Pack의 일부입니다.

도움말 항목 읽기
컨트롤마다 사용자의 언어로

입력, 언어, 데이터

컨트롤마다 사용자의 언어로

국제 팀과 다국어 제품에는 모든 사용자에게 자연스럽게 읽히는 날짜가 필요합니다. 각 컨트롤에는 사용자 로케일에서 채워지고 실행 중에 변경할 수 있는 자체 FormatSettings가 있어, 한 폼의 두 컨트롤이 서로 다른 로케일을 사용할 수도 있습니다. 달력과 선택기는 여기서 요일 및 월 이름, 날짜 및 시간 형식, 오전과 오후 문자열, 구분 기호를 가져옵니다. FirstDayOfWeek와 WeekNumbering은 로케일 또는 사용자의 선택을 따르며 숫자는 올바른 소수점과 천 단위 구분 기호를 사용합니다. 단위, 힌트, 접근성 이름은 사용자 고유의 속성으로 남으므로 폼의 나머지와 함께 번역할 수 있습니다.

  • 컨트롤별 FormatSettings
  • FirstDayOfWeek: efdLocale 또는 강제 efdMonday
  • WeekNumbering: 기본값은 ewnISO8601
  • 헤드리스 모델용 TsgcEditorLocale
  • 아랍어와 히브리어를 위한 오른쪽에서 왼쪽 지원: 스핀, 드롭다운, 지우기 버튼이 반대쪽으로 이동하고, 슬라이더, 평점, 캘린더가 오른쪽에서부터 흐르며, 편집 필드는 오른쪽에서 왼쪽으로 읽습니다
도움말 항목 읽기
폼을 위한 데이터 인식 버전

입력, 언어, 데이터 Registered 에디션 전용

폼을 위한 데이터 인식 버전

대부분의 Delphi 업무 폼은 TDataSet 위에 있으며 편집기를 하나하나 직접 연결하는 일은 반복적입니다. 데이터 인식 컨트롤 10종은 DataSource와 DataField로 필드에 바로 바인딩됩니다. 날짜 선택기, 시간 선택기, 스핀 편집기, 평점, 두 번째 핸들이 EndDataField에 바인딩되는 범위 슬라이더, 버튼 편집기, 필드의 EditMask를 따르는 마스크 편집기, 통화 편집기, 메모, 그리고 TDBLookupComboBox처럼 ListSource, KeyField, ListField를 통해 두 번째 데이터셋에서 다중 열 목록을 채우는 조회 편집기입니다. AllowEmpty가 켜져 있으면 null 필드는 비어 있는 상태로 표시되며, 필수 필드의 빈 값은 유효성 검사기에 보고됩니다. 이들은 DB 유닛만 사용하는 TsgcEditorFieldLink로 바인딩되므로 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의 유효성 검사기는 폼의 컨트롤을 규칙에 따라 검사합니다. 필수, 범위, 길이, 정규식, 이메일, 다른 필드와의 비교, 직접 작성한 코드입니다. 스마트 붙여넣기와 같은 방식으로 컨트롤을 찾으므로 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 컨트롤과 표준 컨트롤 구분 없이 그룹, 탭 그룹, 열로 배치하며, 캡션을 하나의 너비로 맞추고, 사용자가 끌 수 있는 스플리터와 오른쪽에서 왼쪽 레이아웃을 지원하고, SaveLayout은 배치를 JSON으로 보관합니다. 데이터 폼은 그 위에 만들어집니다. TDataSet을 지정하거나 직접 만든 클래스의 객체를 바인딩하면 필드마다 sgcEditors 컨트롤 하나, 필드별 유효성 검사 규칙, 오류 요약, 레코드를 탐색, 추가, 편집, 삭제, 저장하는 내비게이터를 만듭니다. 스마트 붙여넣기는 이메일 서명이나 주소 블록 같은 붙여넣은 텍스트로 레코드 전체를 채우고 채운 필드를 표시합니다. .NET에서는 WinForms, WPF, Avalonia 데이터 폼이 DataTable, 목록 또는 객체를 받습니다.

  • TsgcVCLLayoutControl, TsgcFMXLayoutControl; SaveLayout과 LoadLayout
  • TsgcVCLDataForm, TsgcFMXDataForm, TsgcWinFormsDataForm, TsgcWpfDataForm, TsgcAvaloniaDataForm
  • Fields: 각 필드의 캡션, 종류, 필수 여부, 제한, 그룹, 탭, 순서. 클래스에는 BindObject
  • SmartPasteFromClipboard, SmartPasteUndo와 내비게이터의 스마트 붙여넣기 버튼

레이아웃 컨트롤은 Community를 포함한 모든 에디션에 있으며, Delphi Community에는 sgcEditors용 디자인 타임 패키지가 없으므로 그곳에서는 코드로 생성합니다. 데이터 폼, 유효성 검사 규칙, 스마트 붙여넣기는 Registered 에디션 전용입니다.

도움말 항목 읽기

키보드, DPI, 테마

검토자가 확인하는 세부 사항입니다. 마우스가 필요 없고, 모든 모니터에서 선명하며, 애플리케이션과 어울리는 모습입니다.

모든 모니터에서 선명하게

키보드, DPI, 테마

모든 모니터에서 선명하게

150퍼센트 배율의 노트북 옆에 100퍼센트의 외부 모니터를 두는 것이 이제는 일반적이며, 흐릿한 입력은 싸구려처럼 보입니다. sgcEditors는 모든 컨트롤을 96 DPI의 논리 픽셀로 배치하고 화면의 배율로 그리므로 코드에서 할 일이 없습니다. VCL 폼이 다른 DPI의 모니터로 이동하면 내부 편집기와 글꼴이 컨트롤과 함께 조정되고, 드롭다운은 열리는 모니터의 DPI로 그려집니다. FireMonkey 래스터는 Retina와 Android를 위해 씬의 배율을 따릅니다.

  • 논리 픽셀로 배치하고 화면 배율로 그립니다
  • 내부 편집기는 WM_DPICHANGED에서 크기를 다시 조정합니다
  • 드롭다운은 해당 모니터의 DPI를 사용합니다
  • SaveToPNG는 선명한 이미지를 위한 scale을 받습니다
도움말 항목 읽기
키보드와 화면 낭독기 친화적

키보드, DPI, 테마

키보드와 화면 낭독기 친화적

sgcEditors의 어떤 기능도 마우스가 필요하지 않습니다. 그려지는 컨트롤은 스스로 포커스를 받고 텍스트 컨트롤은 내부 편집기로 포커스를 전달하며, 포커스된 컨트롤은 강조색의 2픽셀 포커스 링을 그립니다. 달력에서 화살표는 하루 또는 한 주씩 이동하고 비활성 날을 건너뛰며, PageUp과 PageDown은 한 달씩 이동하고 Shift는 범위를 확장합니다. 선택기에서는 F4 또는 Alt+Down이 드롭다운을 열고 Escape가 값을 복원합니다. 스핀 편집기는 Up, Down, PageUp, PageDown으로 값을 증감합니다.

  • F4 또는 Alt+Down으로 모든 드롭다운을 엽니다
  • Ctrl+Up은 달력을 연과 10년 보기로 축소합니다
  • 스핀 편집기의 Increment와 LargeIncrement
  • 네이티브 편집기가 화면 낭독기 동작을 유지합니다
도움말 항목 읽기
속성 하나로 라이트와 다크

키보드, DPI, 테마

속성 하나로 라이트와 다크

모든 입력이 같은 테마를 따를 때 폼이 완성되어 보입니다. 각 컨트롤에는 Theme, AccentColor, TextStyle이 있고 프레임, 마우스 오버, 눌림 상태, 선택, 비활성 상태의 색상은 여기서 파생되므로 속성 하나로 전체 모양이 바뀝니다. 토큰은 모든 sgcUI 제품이 사용하는 것과 같아서 sgcDashboard 타일이나 sgcToolbar 아래에 둔 편집기도 추가 작업 없이 어울립니다. 비활성 컨트롤은 스스로 배경에 녹아듭니다. 실행 중에 테마를 전환하면 모든 편집기가 다시 그려지므로 다크 모드 설정에 바로 사용할 수 있습니다.

  • Theme: utDefault(기본값, 애플리케이션 테마를 따름), utLight 또는 utDark
  • 선택, 핸들, 채움, 포커스 링을 위한 AccentColor
  • 크기, 굵기, 색상을 위한 TextStyle
  • sgcUI 제품군 전체와 같은 테마 토큰
도움말 항목 읽기

sgcEditors 동작 보기

sgcUI 제품군 데모 속의 sgcEditors: 내장 시뮬레이션 데이터로 오프라인에서 실행되는 완전한 애플리케이션입니다.

sgcEditors로 개발하는 사람들

예약 및 예매 폼

예약 폼에는 휴무일을 지키는 숙박 기간, 인원수, 도착 시간, 그리고 지난 방문에 대한 평점이 필요할 수 있습니다. 월 달력이 MinDate, MaxRangeDays, 비활성 날을 적용하고, 스핀 편집기가 인원을 세며, 시간 선택기가 입력한 시간을 받고, 평점이 피드백을 수집하며, 모두 하나의 테마로 표시됩니다. BookingForm 데모는 실시간 요약과 함께 편집기 7개로 호텔 예약을 구성합니다.

  • 달력 범위
  • 스핀 편집기
  • 평점
BookingForm 데모 실행

TDataSet 데이터 입력

업무 애플리케이션은 하루 종일 레코드를 편집합니다. 데이터 인식 편집기 10종은 DataSource와 DataField로 TDataSet 필드에 바인딩되고, 범위 슬라이더는 양쪽 끝을 바인딩하며, null 필드는 비어 있는 상태로 표시됩니다. 실제 키보드 입력과 유연한 구문 분석이 결합되어 작업자는 값을 빠르게 입력하고 데이터셋은 깨끗한 데이터를 받습니다. DataAware 데모는 편집기 10종을 TDBGrid와 TDBNavigator 옆의 TClientDataSet에 배치합니다.

  • 데이터 인식 편집기
  • 텍스트 입력
  • 키보드
DataAware 데모 실행

국제 일정 관리 앱

여러 나라에서 사용하는 계획 도구는 모든 사용자에게 올바른 주 시작일, 주 번호, 월 이름을 보여 주어야 합니다. 각 컨트롤이 자체 FormatSettings를 가지므로 한 폼에 독일어 달력과 영어 달력을 나란히 둘 수 있으며, 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이 편집기, 유효성 검사 규칙, 내비게이터를 만듭니다. 필드의 종류와 그룹을 지정하고 다시 빌드하면, 내비게이터의 스마트 붙여넣기 버튼이 클립보드로 레코드를 채웁니다.

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용으로, GalleryFMX와 ValidationFMX는 FireMonkey용으로 제공됩니다. .NET 에디션에는 WinForms, WPF, Avalonia용 Gallery와 Validation, 그리고 BookingForm, BindingWpf, DataAwareWinForms가 있습니다.

Calendar

Calendar

최대 14일의 범위, 주 번호, 비활성 주말과 공휴일, 영어, 독일어, 스페인어, 프랑스어, 이탈리아어 로케일 전환을 보여 줍니다.

BookingForm

숙박 기간, 인원, 도착 시간의 실시간 요약, 국가 조회, 마스크가 적용된 전화번호, 예약 전에 투숙객 필드를 검사하는 유효성 검사기를 갖춘 호텔 예약입니다. 컨트롤이 실제 폼에서 어떻게 함께 동작하는지 보여 줍니다.

DataAware

Registered 에디션 전용 DataAware

TDBGrid와 TDBNavigator가 있는 TClientDataSet 위의 데이터 인식 편집기 10종이며, 두 번째 데이터셋에서 채워지는 조회 편집기와 필수 필드용 유효성 검사기가 있습니다. 데이터 인식 컨트롤에는 Registered 또는 체험판 에디션이 필요합니다.

GalleryFMX

FireMonkey 편집기로 만든 갤러리이며 Windows와 Android용입니다. VCL 컨트롤과 같은 속성과 이벤트를 가집니다.

Validation

표준 컨트롤과 sgcEditors 컨트롤에 대한 모든 규칙 종류, 세 가지 트리거, 테두리와 아이콘 표시, 요약 목록입니다. ValidationFMX는 FireMonkey에서 같은 일을 하며, .NET 에디션에는 Validation, ValidationWpf, ValidationAvalonia가 있습니다.

컴파일된 데모

sgcUI 제품 전체의 실행 파일을 제공하며, 설치가 필요 없습니다.

sgcUI_bin.zip 다운로드 →

시작하기 가이드

Delphi(VCL)용 QuickStart 데모 다섯 개가 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 사각형과 알파 막대가 없고, 토큰 편집기에는 자동 완성 목록이 없으며, 범위 슬라이더는 핸들이 하나이고, 데이터 인식 편집기, 데이터 폼, WinForms DataSource 바인딩은 없습니다.

기능Community (무료)Registered 에디션
VCL, FireMonkey, .NET용 컨트롤 15종 전체✓✓
유효성 검사: 규칙, 오류 표시, 요약(sgcUICore)✓✓
WinForms, WPF, Avalonia에서 ItemsSource로 채우는 조회 목록✓✓
네이티브 텍스트 입력, 유연한 구문 분석, 현지화✓✓
달력 범위, 제한, 비활성 날✓✓
키보드, DPI, 테마, 헤드리스 출력✓✓
터치 패널용 NumPad✓✓
열 개의 레이아웃을 갖춘 화상 키보드✓✓
설정용 토글 스위치✓✓
IPv4와 IPv6용 IP 주소 편집기✓✓
기간용 시간 간격 편집기✓✓
모든 글꼴 계열의 미리보기가 있는 글꼴 선택기✓✓
모두 선택과 필터가 있는 체크 목록 상자✓✓
이동 및 순서 변경 버튼이 있는 이중 목록 상자✓✓
JSON으로 저장하는 레이아웃을 갖춘 레이아웃 컨트롤(Delphi Community에서는 코드로 생성)✓✓
핸들 두 개의 범위 슬라이더−✓
색상 선택기의 HSV 사각형과 알파 막대−✓
토큰 편집기의 자동 완성 목록−✓
데이터 인식 편집기(Delphi 및 C++ Builder)−✓
WinForms DataSource, DataMember, DataField−✓
TDataSet, 클래스, DataTable 또는 객체로 만드는 데이터 폼, 유효성 검사와 스마트 붙여넣기 포함−✓

지원 프레임워크 및 플랫폼

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 데모는 주말과 공휴일 두 개를 막아 규칙이 동작하는 모습을 보여 줍니다.

Delphi와 C++ Builder에서 열 가지입니다. 날짜 선택기, 시간 선택기, 스핀 편집기, 평점, 범위 슬라이더, 버튼 편집기, 마스크 편집기, 통화 편집기, 메모, 조회 편집기이며 각각 VCL과 FireMonkey 컨트롤로 제공됩니다. Registered 또는 체험판 에디션이 필요합니다. .NET에서는 Registered 에디션의 WinForms 편집기가 DataSource, DataMember, DataField로 필드에 바인딩되고, 두 에디션 모두에서 컨트롤이 WinForms, WPF, Avalonia의 데이터 바인딩으로 바인딩되며 조회 편집기는 ItemsSource에서 행을 가져옵니다.

컨트롤 15종과 유효성 검사 프레임워크가 모두 포함되어 있습니다. Community에는 색상 선택기의 HSV 사각형과 알파 막대, 토큰 편집기의 자동 완성 목록, 범위 슬라이더의 두 번째 핸들, 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 제품이 포함되어 있습니다.