Delphi, C++ Builder & .NET sgcUI의 일부

sgcGrid, Delphi, C++ Builder & .NET용 실시간 데이터 그리드

쉴 새 없이 변하는 데이터를 위해 만든 그리드입니다. 어떤 스레드에서든 키로 행을 쓰고, 변경된 셀이 녹색 또는 빨간색으로 깜박이는 것을 확인한 다음, 같은 행을 그룹화, 필터링, 편집, 내보내기하세요. 행 100,000개 그리드의 1080p 프레임은 Win32에서 3.0 ms가 걸립니다.

VCL, FireMonkey, WinForms, WPF, Avalonia1080p 프레임당 3.0 ms (Win32)무료 .NET Community 빌드sgcUI Standard에 포함
지역, 카테고리별로 그룹화된 주문 100,000건, 그룹 패널 칩, 바닥글 합계가 있는 sgcGrid

실시간 그리드에 필요한 모든 것

기능 18가지를 5개 그룹으로 나누었으며, 각각 해당 도움말 항목으로 연결됩니다.

실시간 데이터

멈추지 않는 피드: 가격, 텔레메트리, 큐, 로그.

실시간 데이터

어떤 스레드에서든 초당 수천 행 갱신

시장 피드, 센서 버스, 작업 큐가 그리드에 바로 쓸 수 있습니다. 모든 행에는 키가 있고, 작업자 스레드는 Synchronize 호출이나 별도의 잠금 코드 없이 필드 이름으로 키의 행을 갱신합니다. 그리드는 쓰기 스레드에서 자신을 더티로 표시하기만 하고, 메인 스레드에서 초당 최대 MaxFPS번만 다시 그립니다.

  • UpdateRow는 키에 해당하는 이름 있는 필드를 설정하고 키가 새 것이면 행을 삽입하며, UpdateCell은 필드 하나를 변경합니다
  • AppendRow와 DeleteRow는 어떤 스레드에서든 키로 행을 추가하고 제거합니다
  • BeginUpdate와 EndUpdate는 일괄 처리를 단일 알림으로 바꿉니다
  • 다시 정렬할 때마다 선택한 행을 키로 다시 찾으므로 선택이 사라지지 않습니다
도움말 항목 읽기
한눈에 모든 변화 파악

실시간 데이터

한눈에 모든 변화 파악

트레이더와 운영자는 모든 숫자를 읽지 않고도 무엇이 움직였는지 알아야 합니다. 기본값인 FlashChanges를 켜면 값이 오른 셀은 녹색, 내린 셀은 빨간색으로 물들었다가 FlashDuration밀리초(기본 800) 동안 서서히 사라집니다. 로그와 계속 늘어나는 피드에서는 테일 모드가 최신 행을 계속 보여 주다가, 사용자가 읽으려고 위로 스크롤하는 즉시 따라가기를 멈춥니다.

  • FlashUpColor, FlashDownColor, FlashChangedColor. 색상 0은 테마 기본값을 사용합니다
  • FlashMode는 배경(fmBackground) 또는 텍스트(fmText)를 물들입니다
  • TailMode는 최신 행을 따라가고, MaxRows는 끝없는 로그에서 가장 오래된 행을 삭제합니다
  • 선택 표시는 깜박임 위에, 깜박임은 서식 규칙 위에 그려집니다
도움말 항목 읽기
주의가 필요한 행에 색 입히기

실시간 데이터

주의가 필요한 행에 색 입히기

연체된 송장, 마이너스 잔액, 실패한 작업은 누가 묻기 전에 눈에 띄어야 합니다. 서식 규칙은 열의 데이터 형식에 맞춰 열 값을 비교합니다. 숫자는 숫자로, 날짜는 날짜로, 텍스트는 대소문자 구분 없이 비교합니다. 일치하는 규칙은 셀 또는 행 전체의 배경색, 글자색, 굵게를 설정하며, 실시간 업데이트로 값이 바뀌는 동안에도 계속 동작합니다.

  • TsgcGridFormatRules는 규칙을 컬렉션 순서대로 평가하며, 나중에 일치하는 규칙이 앞의 규칙을 덮어씁니다
  • gfoLess, gfoBetween, gfoContains, gfoIsEmpty 같은 연산자를 지원합니다
  • ApplyToRow는 행의 모든 셀에 스타일을 적용하고, StopOnMatch는 셀에 대한 평가를 끝냅니다
  • 반투명 색상은 셀을 배경 위에서 물들이며, OnGetCellStyle이 최종 결정권을 가집니다
도움말 항목 읽기

데이터 가공하기

대용량 행 집합을 정렬, 필터링, 그룹화, 중첩합니다.

호출 한 번으로 행 100,000개를 그룹화하고 합계 내기

데이터 가공하기

호출 한 번으로 행 100,000개를 그룹화하고 합계 내기

지역별 매출, 월별 주문, 상태별 티켓처럼 사용자는 원시 행이 아니라 합계를 원합니다. GroupBy는 하나 이상의 열로 그리드를 그룹화하며, 모든 그룹 행에는 구성원, 행 수, 행 요약이 표시됩니다. 사용자는 머리글을 그룹 패널로 끌어서 직접 다시 그룹화합니다. 그룹화는 보기 상태일 뿐이므로, 그리드에 바인딩된 차트는 여전히 평면으로 정렬된 행을 봅니다.

  • 코드에서 GroupBy와 ClearGrouping을 호출하거나 열별로 GroupIndex를 지정합니다
  • ShowGroupPanel은 끌어서 놓는 칩을 추가하며, 칩을 클릭하면 그룹 순서가 바뀝니다
  • SummaryType은 gsuSum, gsuCount, gsuAverage, gsuMin, gsuMax 중 하나이며 SummaryFormat으로 서식을 지정합니다
  • 모든 그룹 행의 GroupSummaries와 총합계를 위한 ShowFooter
  • DisplayFormat이 yyyy-mm이면 날짜를 월별로 그룹화합니다
도움말 항목 읽기
대용량 데이터에서 정렬, 필터링, 찾기

데이터 가공하기

대용량 데이터에서 정렬, 필터링, 찾기

수천 명 중에서 고객 한 명을 찾는 일은 키 몇 번으로 끝나야 합니다. FilterText는 표시된 열 중 하나에라도 입력한 단어가 서식이 적용된 텍스트에 들어 있는 행만 남기고, OnFilterRow 핸들러로 사용자 규칙을 더할 수 있습니다. 머리글을 클릭하면 정렬되고, Ctrl 키를 누르고 클릭하면 다중 열 정렬에 열이 추가되며, 정렬은 안정적입니다. 정렬도 필터도 되지 않은 채 값이 계속 바뀌는 열은 다시 정렬할 필요가 전혀 없습니다.

  • 열별 SortOrder와 SortIndex, 변경할 때마다 OnSortChange
  • FilterText는 대소문자를 구분하지 않으며 사용자에게 보이는 텍스트를 기준으로 읽습니다
  • 사용자 지정 로직에는 OnFilterRow, 로직이 바뀌면 InvalidateView
  • SelectionMode는 행 또는 셀을 선택하고, Ctrl+C는 탭으로 구분된 텍스트로 복사합니다
  • Null, 빈 값, 변환할 수 없는 값은 항상 맨 앞으로 정렬됩니다
도움말 항목 읽기
트리 행과 상세 영역으로 계층 구조 표시

데이터 가공하기 Registered 에디션 전용

트리 행과 상세 영역으로 계층 구조 표시

조직도나 자재 명세서는 트리로, 고객의 주문은 고객 바로 아래에 있을 때 가장 읽기 좋습니다. 트리 행은 키 열과 부모 열을 기준으로 깊이 우선으로 행을 배치합니다. 상세 영역은 모든 마스터 행 아래에 관련 행의 작은 그리드를 열며, 자체 머리글, 스크롤, 정렬을 갖고 TsgcGridDataStore, 다른 그리드 또는 이벤트로 채워집니다.

  • Tree.KeyField와 Tree.ParentField가 트리를 켜며, ExpandNode와 CollapseNode는 코드에서 동작합니다
  • 펼침 상태는 키별로 유지되므로 정렬, 필터링, 실시간 업데이트 후에도 유지됩니다
  • Detail.MasterKeyField와 Detail.DetailKeyField가 영역을 소스에 연결하고, OnGetDetailData가 필요할 때 채웁니다
  • 영역은 평면, 그룹, 트리 모드에서 동작하며, 변경된 상세 셀은 마스터 그리드처럼 깜박입니다

.NET Community 빌드에는 없으며, 그룹화는 지원합니다.

도움말 항목 읽기
나머지가 스크롤되는 동안 핵심 열 고정

데이터 가공하기

나머지가 스크롤되는 동안 핵심 열 고정

너비가 넓은 그리드는 종목 또는 고객 이름이 스크롤되어 사라지면 맥락을 잃습니다. FrozenColumns는 나머지 열이 가로로 스크롤되는 동안 처음 보이는 열들을 제자리에 유지하며, 머리글, 바닥글, 그룹 요약도 같은 구분을 따릅니다. 사용자는 머리글 가장자리를 끌어 열 크기를 조절하고, 헤드리스 렌더러도 같은 설정을 사용하므로 내보낸 이미지가 화면과 일치합니다. 왼쪽의 그룹 화살표도 스크롤되지 않습니다.

  • FrozenColumns는 보이는 열의 수를 세며, 1픽셀 선이 고정 경계를 표시합니다
  • 키보드로 이동하면 스크롤된 열이 고정 경계의 오른쪽에 나타납니다
  • 렌더러의 FrozenWidth는 스크롤되지 않는 너비를 반환합니다
  • MinWidth는 크기 조절을 제한하고, OnColumnResized는 새 너비를 알려 줍니다
  • 무료 .NET Community 빌드를 포함한 모든 에디션에서 제공됩니다
  • 아랍어와 히브리어를 위한 오른쪽에서 왼쪽 지원: 첫 번째 열이 오른쪽에 놓이고, 고정 열은 오른쪽 가장자리에 머물며, 오른쪽에서 왼쪽 그리드의 XLSX 내보내기는 오른쪽에서 왼쪽 시트를 만듭니다
도움말 항목 읽기
FilterAndFind 데모: 깔대기 버튼, (2 values)와 > 500이 입력된 필터 행, Nakatomi를 강조 표시하는 찾기 패널

데이터 가공하기

스프레드시트처럼 필터링하고 어떤 값이든 찾기

사용자는 Excel에서 익숙한 깔대기를 기대합니다. ShowFilterButtons는 모든 열 머리글에 깔대기를 하나씩 놓습니다. 누르면 해당 열의 고유 값과 행 수, 검색 상자, And 또는 Or로 연결한 형식 지정 조건 최대 2개가 있는 팝업이 열립니다. ShowFilterRow는 머리글 아래에 입력하는 동안 열을 필터링하는 행을 추가하고, Ctrl+F로 여는 찾기 패널은 모든 셀에서 텍스트를 강조 표시하며 일치 항목 사이를 이동합니다.

  • 열마다 필터는 하나뿐이며 팝업, 필터 행, 코드의 Column.Filter가 모두 이를 수정하므로 세 가지는 항상 일치합니다
  • 필터링된 두 열의 값 목록은 서로를 좁히고, 채워진 깔대기는 필터링 중인 열을 보여 줍니다
  • 열별 FilterRowOperator: 같음, 보다 큼, 포함, 시작 문자, 비어 있음 등
  • FindText, FindNext, FindPrevious는 코드에서도 쓸 수 있고, FindOnlyMatches는 일치하지 않는 행을 숨깁니다
  • 열 필터는 FilterText 및 OnFilterRow와 함께 적용되며, OnFilterChange가 변경될 때마다 알려 줍니다

VCL, FireMonkey, WinForms, WPF, Avalonia 그리드에서 사용할 수 있으며, 무료 .NET Community 빌드에도 포함됩니다.

도움말 항목 읽기

데이터 가공하기

사용자가 열을 정리하고 그 선택을 유지하게 하기

열 머리글을 마우스 오른쪽 버튼으로 클릭하면 정렬, 그룹화, 너비 맞춤, 필터링, 열 선택기 열기를 할 수 있는 메뉴가 나타납니다. 열 선택기는 열마다 확인란이 있는 팝업입니다. 사용자는 머리글을 끌어 열을 옮길 수 있고, 머리글 가장자리를 더블 클릭하면 너비가 캡션과 셀에 맞춰집니다. SaveLayoutToString과 LoadLayoutFromString은 이 모든 것을 짧은 JSON 텍스트로 저장하므로, 그리드는 사용자가 떠난 상태 그대로 열립니다.

  • HeaderMenu, ColumnMoving, BestFitOnDblClick은 기본적으로 켜져 있으며, 지정한 PopupMenu가 우선합니다
  • ShowColumnChooser는 원하는 버튼이나 메뉴 항목에서 선택기를 엽니다
  • 옮긴 열은 고정 열의 같은 쪽과 자신의 밴드 안에 머물며, OnColumnMoved가 이동을 알려 줍니다
  • BestFitColumn과 BestFitColumns는 머리글과 최대 1,000개의 샘플 행을 측정하므로, 100만 행도 1,000행과 비슷한 비용이 듭니다
  • 레이아웃은 열 순서, 너비, 표시 여부, 정렬, 그룹화, 열 필터, 밴드, 패널 옵션을 유지하며, SaveLayoutToFile과 LoadLayoutFromFile은 파일을 사용합니다

VCL, FireMonkey, WinForms, WPF, Avalonia 그리드에서 사용할 수 있으며, 무료 .NET Community 빌드에도 포함됩니다.

도움말 항목 읽기
BandsAndCells 데모: Instrument, Live data, Price, Position 밴드, 영역형 스파크라인, 진행률 막대, 상태 아이콘, 선택된 세 행

데이터 가공하기

밴드 머리글, 풍부한 셀, 여러 행 선택

거래 화면은 Last, Change, Trend가 하나의 Price 캡션 아래에 모여 있을 때 더 읽기 좋습니다. Bands는 열 그룹 위에 필요한 만큼의 단계로 캡션을 추가하고, 각 열은 Band에 자신의 밴드를 지정합니다. CellKind는 셀을 이미지, 진행률 막대, 스파크라인으로 그리지만 셀은 원래 값을 그대로 유지하므로, 정렬, 그룹화, 내보내기는 계속 숫자를 사용합니다.

  • Bands.Add는 캡션과 상위 밴드를 받으며, 밴드 행은 열 머리글 위에 쌓입니다
  • gcdProgress는 ProgressMin과 ProgressMax를 사용하고, gcdSparkline은 숫자 목록으로 꺾은선, 영역, 막대 차트를 그립니다
  • gcdImage는 CellImages의 이미지를 그리며, 그리드는 Images에 지정한 이미지 목록 어느 것으로든 이를 채웁니다
  • SelectionMode의 gsmMultiRow는 Ctrl과 Shift로 임의의 행 집합을 선택하고, gsmCellRange는 셀 범위를 선택하며, Ctrl+A는 모두 선택합니다
  • 선택은 행 키로 유지되므로 정렬, 필터링, 실시간 업데이트 후에도 남아 있으며, Ctrl+C는 이를 탭으로 구분된 텍스트로 복사합니다

VCL, FireMonkey, WinForms, WPF, Avalonia 그리드에서 사용할 수 있으며, 무료 .NET Community 빌드에도 포함됩니다.

도움말 항목 읽기

편집과 내보내기

데이터를 변경하고, 데이터베이스와 동기화하고, 다른 곳으로 넘겨 주세요.

편집과 내보내기 Registered 에디션 전용

유효성 검사가 있는 인플레이스 편집

백오피스 사용자는 수량이나 상태를 그리드에서 바로 고치길 기대합니다. ReadOnly를 False로 설정하면 F2, Enter, 문자 입력, 더블 클릭으로 셀 위에 에디터가 열리며, 열에 PickList가 있으면 콤보 상자가 열립니다. 입력한 텍스트는 열의 데이터 형식으로 변환되고, OnValidate가 값을 바꾸거나 거부할 수 있으며, 결과는 UpdateCell로 기록되므로 정렬과 깜박임도 그대로 적용됩니다.

  • 열별 Editable, 그리고 OnBeforeEdit로 편집을 거부할 수 있습니다
  • Enter는 확정, Tab은 다음 편집 가능한 셀로 이동, Escape는 취소이며, StartEdit, CommitEdit, CancelEdit로 코드에서도 같은 동작을 합니다
  • OnEditError는 잘못된 입력에서 에디터를 열린 채로 유지하고, OnEdited는 이전 값과 새 값을 알려 줍니다

.NET Community 빌드에는 없습니다.

도움말 항목 읽기
몇 줄로 모든 TDataSet 바인딩

편집과 내보내기

몇 줄로 모든 TDataSet 바인딩

기존 데이터베이스 코드는 그대로 동작합니다. TsgcGridSource_DataSet는 FireDAC 쿼리, TClientDataSet 또는 다른 모든 TDataSet으로 그리드를 채웁니다. Grid와 DataSet을 설정하고 Active로 만들면 행이 나타납니다. KeyField가 있으면 그리드는 다시 불러오지 않고 동기화되므로, 변경된 행이 제자리에서 갱신되며 깜박입니다. LiveUpdates를 켜면 게시된 모든 Append, Edit, Delete가 추가 코드 없이 그리드에 반영됩니다.

  • AutoColumns는 데이터셋 필드로 열을 만듭니다
  • KeyField가 있으면 새 키는 추가되고 사라진 키는 삭제됩니다
  • 데이터셋은 DisableControls로 순회하며 현재 레코드가 복원됩니다
  • JSON과 CSV도 지원합니다: GridLoadFromJSONFile, GridSaveToCSVFile 및 sgcGrid_IO의 나머지 함수
  • .NET에서는 같은 클래스가 DataTable을 읽습니다
도움말 항목 읽기

편집과 내보내기 Registered 에디션 전용

사용자에게 진짜 Excel 파일 제공

회계 담당자는 스크린샷이 아니라 Excel로 숫자를 원합니다. SaveToXLSX는 외부 라이브러리 없이 그리드를 Office Open XML 통합 문서로 파일이나 스트림에 씁니다. 시트에는 사용자가 보는 그대로, 표시 순서의 보이는 열과 너비, 숫자 서식, 고정된 머리글, 접을 수 있는 윤곽으로 표시된 그룹과 트리 수준, SUBTOTAL 수식으로 쓰인 그룹 합계가 유지됩니다.

  • SaveToXLSX는 파일 이름 또는 스트림과 선택적인 시트 이름을 받습니다
  • 숫자는 숫자로, 날짜는 Excel 날짜로 유지되며, DisplayFormat은 셀 숫자 서식이 됩니다
  • 접힌 그룹은 그리드에서 보이던 대로 Excel에서도 접힌 채로 열립니다
  • UI 스레드에서 호출하세요. 상세 영역은 내보내지 않습니다
  • 접혀 있는지와 관계없이 모든 그룹 행과 보기 행이 기록됩니다

.NET Community 빌드에는 없으며, JSON 및 CSV 내보내기는 지원합니다.

도움말 항목 읽기
DataSetEditing 데모: 그리드와 같은 레코드를 공유하는 TDBNavigator와 TDBEdit 두 개, 카테고리 조회 열

편집과 내보내기 Registered 에디션 전용

그리드를 통해 DataSet 편집하기

WriteBack을 켜면 TsgcGridSource_DataSet이 그리드에서 일어난 모든 변경을 해당 행의 레코드에 기록합니다. KeyField로 레코드를 찾아 값을 포스트합니다. 포스트가 실패하면, 예를 들어 BeforePost 검사에서 실패하면 레코드는 취소되고 셀은 이전 값을 유지합니다. SyncCursor는 현재 레코드와 활성 행을 함께 유지하므로, 같은 데이터셋의 TDBNavigator와 TDBEdit 컨트롤은 그리드를 따라가고 그리드도 이들을 따라갑니다.

  • AllowInsert: Ins는 레코드를 추가하고 포스트하며, 데이터셋의 OnNewRecord가 기본값을 채웁니다
  • AllowDelete: OnBeforeDelete가 동의하면 Ctrl+Del이 선택한 행과 그 레코드를 삭제합니다
  • 조회 필드는 조회 결과의 선택 목록으로 편집되며, 대응하는 키가 기록됩니다
  • OnEditError는 데이터셋의 메시지를 표시하며, 붙여넣은 값과 실행 취소도 같은 쓰기 경로를 사용합니다

VCL, FireMonkey, WinForms, WPF, Avalonia 그리드에서 사용할 수 있으며, .NET Community 빌드에는 없습니다. .NET에서는 소스가 DataTable에 다시 기록되고, AddLookup이 조회 열을 추가하며, SyncCursor는 Delphi 전용입니다.

도움말 항목 읽기
어두운 테마의 Editing 데모: Date 열에 날짜 선택기가 열려 있음

편집과 내보내기 Registered 에디션 전용

날짜 선택기, Excel에서 붙여넣기, 실행 취소와 다시 실행

각 열은 자신을 편집할 컨트롤을 직접 고릅니다. EditorKind는 날짜, 시간, 날짜와 시간 선택기, 화살표가 있는 숫자 상자, 색 선택기, sgcEditors의 토큰 편집기 중에서 고르며, 기본값은 열의 데이터 형식에서 정해집니다. Ctrl+V는 Excel에서 복사한 블록을 붙여넣습니다. 모든 값은 무엇이든 기록하기 전에 변환되고 검증되며, 붙여넣기 전체가 하나의 실행 취소 단계가 됩니다. Ctrl+Z와 Ctrl+Y는 편집과 붙여넣기를 실행 취소하고 다시 실행합니다.

  • OnCreateEditor는 예를 들어 TTrackBar처럼 원하는 컨트롤을 셀에 놓습니다
  • PasteText와 PasteFromClipboard는 코드에서도 쓸 수 있고, OnBeforePaste는 텍스트를 수정하거나 거부할 수 있습니다
  • 변환되지 않는 값이 하나라도 있거나 OnValidate가 거부하면, 아무것도 기록되기 전에 붙여넣기가 중단됩니다
  • 실행 취소는 행 키와 필드 단위로 동작하므로 정렬이나 필터링 후에도 행을 찾아가며, 그사이 실시간 업데이트가 바꾼 값은 유지합니다
  • UndoLimit는 최근 100단계를 유지하며, Undo, Redo, CanUndo는 코드에서도 쓸 수 있습니다

VCL, FireMonkey, WinForms, WPF, Avalonia 그리드에서 사용할 수 있으며, .NET Community 빌드에는 없습니다.

도움말 항목 읽기

규모와 연결

수백만 행, 실시간 피드, 일상 언어.

불러오지 않고 수백만 행 탐색

규모와 연결

불러오지 않고 수백만 행 탐색

이미 다른 곳에 있는 로그 보관소, 센서 이력, 쿼리 결과는 메모리에 복사할 필요가 없습니다. 가상 모드에서는 그리드가 행을 저장하지 않습니다. VirtualRowCount가 행 수를 알려 주고, 행이 보이는 위치로 스크롤되면 OnGetValue가 값을 반환합니다. 보이는 행만 그려지므로 백만 행 그리드도 오십 행 그리드와 같은 비용이 듭니다. 소스가 늘어나면 개수를 변경하세요.

  • 그리드 데이터의 Virtual과 VirtualRowCount, OnGetValue가 셀 값을 제공합니다
  • 바닥글 요약도 OnGetValue를 통해 값을 읽습니다
  • 가상 행에는 키가 없으므로 정렬, 필터링, 깜박임 없이 소스 순서를 유지합니다
  • 끝없이 늘어나는 피드에는 TailMode와 함께 쓰는 MaxRows가 키 기반 대안입니다
도움말 항목 읽기

규모와 연결

사용자가 일상 언어로 그리드에 질문

모든 사용자가 필터를 만들고 싶어 하지는 않습니다. TsgcGridAI는 price greater than 100 sort by volume descending highlight change less than 0 같은 질문을 그리드의 필터, 정렬, 행 강조로 바꾸며, AI 쿼리 바는 사용자가 질문을 입력할 자리를 제공합니다. 공급자를 지정하지 않으면 규칙 기반 파서가 네트워크도 API 키도 없이 로컬에서 답합니다. 공급자를 지정하면 어떤 LLM이든 대신 답합니다. TsgcUIAIEventProvider는 각 요청을 사용자 코드에 넘기고, TsgcUIAIChatProvider는 sgcWebSockets의 TsgcAIChat 컴포넌트를 사용합니다. 전송되는 것은 필드 카탈로그, 즉 열의 이름, 캡션, 형식, 몇 개의 샘플 값뿐이며 행은 절대 전송되지 않습니다.

  • AI 쿼리 바: TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar, TsgcAvaloniaAIQueryBar. 최근 질문, 추천 질문, 취소, 실행 취소를 제공합니다
  • 필터는 OnFilterRow를 통하고, 강조 표시는 ApplyToRow 서식 규칙이 됩니다
  • 각 답은 이전 답을 대체하며, Undo로 한 단계 되돌립니다
  • LastExplanation이 적용된 내용을 알려 주며, 공급자가 실패하면 규칙 기반 파서가 답합니다
  • sgcGridWS 브리지는 TsgcHTMLAIAssistant를 쓰는 TsgcGridAIQuery를 계속 제공하며, JSON 메시지를 키별로 그리드에 쓰는 TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT, TsgcGridFeedSource_SSE도 제공합니다

무료 Community 에디션을 포함한 모든 에디션에서 VCL, FireMonkey, WinForms, WPF, Avalonia에서 사용할 수 있습니다. sgcWebSockets 공급자와 sgcGridWS 브리지에는 sgcWebSockets와 Registered 에디션이 필요합니다.

도움말 항목 읽기

접근성

UI Automation을 통한 화면 읽기 프로그램, 키보드, 고대비 지원, 별도 설정이 필요 없습니다.

접근성

실제 표로 노출되는 그리드

sgcGrid는 화면 읽기 프로그램(Narrator, NVDA 등)이 사용하는 API인 Microsoft UI Automation에 열 머리글, 행, 셀이 있는 표로 내용을 노출합니다. 보이는 행만 생성되고 행과 열 개수는 항상 전체 개수이므로, 행이 백만 개인 그리드도 추가 비용이 들지 않습니다.

  • 포커스된 셀, 선택 영역, 정렬, 필터, 그룹화, 트리 행이 Grid, Table, Selection 패턴으로 노출됩니다
  • 화살표, Home, End, Page Up, Page Down은 포커스된 셀을 이동하고, Shift는 선택을 확장하며, Ctrl+Space는 행이나 셀을 전환하고, F2 또는 Enter는 편집합니다
  • Alt+Down은 필터 팝업을 열고, Alt+Shift+Left와 Alt+Shift+Right는 열을 이동하며, Ctrl+Shift+G는 포커스된 열로 그룹화하고, Ctrl+Shift+U는 그 그룹화를 제거합니다
  • 눈에 보이는 포커스 링을 제공하며, Windows 고대비 테마에서는 그리드가 시스템 색으로 그려집니다

접근성은 무료 Community 에디션을 포함한 모든 에디션에서 기본으로 켜져 있으며, Delphi 7부터 Delphi 13까지 모든 Delphi 및 C++Builder 버전의 VCL, Windows의 FireMonkey, 그리고 WinForms, WPF, Avalonia에서 지원됩니다. Delphi와 C++Builder에서는 AccessibleName과 AccessibleDescription이 UI Automation에 노출되는 이름과 설명을 설정하고, .NET에서는 각 프레임워크의 표준 접근성 이름과 도움말 텍스트가 같은 역할을 합니다. 접근성 적합성 보고서를 참조하세요. Avalonia에는 표 패턴이 없으므로 각 셀이 이름과 도움말 텍스트에 자신의 열과 위치를 담고 있습니다. 열 너비는 마우스로만 조절할 수 있습니다.

도움말 항목 읽기

sgcGrid 동작 보기

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

몇 밀리초 만에 그려지는 1080p 프레임

sgcGrid QA 성능 게이트의 최근 측정 평균입니다. 열 12개, 행 100,000개, 보이는 행 45개의 1920 x 1080 프레임을 래스터 캔버스에서 60번 렌더링했습니다. 게이트는 프레임당 Win64에서 16 ms, Win32에서 25 ms를 넘으면 실패합니다.

측정 항목결과조건
일반 프레임3.0 msWin32
일반 프레임4.6 msWin64
일반 프레임3.7 msLinux64
깜박임 및 서식 규칙 3개3.2 msWin32
깜박임 및 서식 규칙 3개6.8 msWin64
LiveTicker 데모, 작업자 스레드 쓰기초당 약 1,000건 업데이트정렬된 깜박이는 그리드, 60 fps

출처: 이 수치를 설명하는 도움말 항목.

sgcGrid로 개발하는 사람들

트레이딩 및 시장 데이터 데스크

호가판은 수백 개의 가격이 매초 바뀌는 중에도 읽을 수 있어야 합니다. 피드 스레드는 UpdateRow로 쓰며 UI를 기다리지 않고, 변경 시 깜박임은 모든 움직임의 방향을 보여 주며, 테일 모드는 체결 로그를 최신 체결에 맞춰 둡니다. sgcGridWS 브리지는 WebSocket, MQTT, SSE에서 호가를 읽을 수 있습니다.

  • 실시간 업데이트
  • 변경 시 깜박임
  • 테일 모드
  • 실시간 피드
LiveTicker 데모 실행

백오피스 및 업무 시스템

주문 입력, 재고 목록, 송장 화면은 데이터베이스를 기반으로 합니다. 기존 TDataSet을 바인딩하고, 사용자가 고객이나 월별로 그룹화해 모든 그룹 행에서 합계를 보게 하고, 유효성 검사와 함께 값을 그 자리에서 수정하게 하며, 회계 담당자가 그룹과 SUBTOTAL 수식이 그대로 유지된 상태로 여는 통합 문서를 내보내세요.

  • DataSet 바인딩
  • 그룹화 및 요약
  • 인플레이스 편집
  • Excel 내보내기
DataSetGrid 데모 실행

모니터링, 로그, 알림

운영 화면은 끝나지 않는 이벤트 스트림을 보여 줍니다. MaxRows는 로그 크기를 제한하고, 서식 규칙은 오류를 빨간색으로 표시하며, 가상 모드는 수백만 줄의 보관 데이터를 필요할 때 탐색합니다. Linux64 서버에서는 렌더러가 같은 그리드를 PNG 또는 SVG 파일로 써서 알림 이메일에 사용할 수 있습니다.

  • 서식 규칙
  • MaxRows 및 테일 모드
  • 가상 모드
  • 헤드리스 PNG 및 SVG
LiveFeed 데모 실행

몇 줄로 만드는 실시간 그리드

Delphi, C++ Builder, C#에서 같은 API를 사용합니다. 열을 추가하고, 키로 행을 추가하고, 나중에 어떤 스레드에서든 갱신하세요.

코드로 만든 VCL 그리드: 타입이 지정된 열, 키로 추가한 행, 어떤 스레드에서든 필드 이름으로 하는 업데이트.

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

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

도움말 항목 읽기 →

생성된 sgcGrid 헤더를 사용하는 C++ Builder의 같은 그리드.

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

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

도움말 항목 읽기 →

깜박이는 셀, 마이너스 변경 규칙, 다크 테마가 있는 WinForms 그리드.

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

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

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

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

도움말 항목 읽기 →

sgcGrid 데모 실행하기

Delphi용 데모 15개(그중 3개는 FireMonkey), C++ Builder용 11개, WinForms, WPF, Avalonia용 .NET 데모 18개가 있습니다.

LiveTicker

LiveTicker

작업자 스레드에서 UpdateRow로 초당 약 1,000건의 가격 업데이트를 보내며, 정렬된 보기, 깜박이는 셀, 마이너스 변경 서식 규칙을 포함합니다. VCL, FireMonkey, C++ Builder, WinForms, WPF, Avalonia를 지원합니다.

DataSetGrid

DataSetGrid

KeyField, AutoColumns, LiveUpdates가 있는 레코드 200개의 TClientDataSet에 바인딩된 TsgcGridSource_DataSet과 JSON 및 CSV 내보내기와 가져오기를 보여 줍니다.

GroupAndSummary

GroupAndSummary

지역과 카테고리로 그룹화한 주문 100,000건과 그룹 패널, Count, Sum, Average 요약, 바닥글, 고정 열 2개를 보여 줍니다. .NET에서는 Grouping이라고 부릅니다.

FilterAndFind

FilterAndFind

10만 행의 판매 데이터에 깔대기 팝업, 필터 행, 찾기 패널을 적용하고, 열 선택기, 최적 너비, 파일에 저장했다가 다시 불러오는 레이아웃도 보여 줍니다. VCL, FireMonkey, C++ Builder, WinForms, WPF, Avalonia용입니다.

BandsAndCells

BandsAndCells

종목 2,000개를 Instrument, Live data, Price, Position 밴드 아래에 표시하며, 스파크라인, 진행률, 이미지 셀, 여러 행 선택, Copy 버튼을 갖추고 있습니다. VCL, C++ Builder, WinForms용입니다.

Registered 에디션 전용 Editing

선택 목록 열, Space로 전환하는 불리언 열, 음수 수량을 거부하는 OnValidate, OnEditError, OnEdited 로그를 보여 줍니다. 여기에 sgcEditors의 날짜, 시간, 숫자, 색, 토큰 편집기, OnCreateEditor를 통한 TTrackBar, 붙여넣기, 실행 취소와 다시 실행이 더해집니다.

DataSetEditing

Registered 에디션 전용 DataSetEditing

제품과 카테고리를 TClientDataSet 두 개에 담고, TDBNavigator와 TDBEdit 두 개가 그리드와 같은 레코드를 공유합니다. WriteBack, SyncCursor, 조회 열, 삽입, 삭제, 실행 취소를 보여 줍니다. VCL, C++ Builder, WinForms(AddLookup이 있는 DataTable)용입니다.

TreeAndDetail

Registered 에디션 전용 TreeAndDetail

조직도 트리와 TsgcGridDataStore로 채운 주문 상세 영역이 있는 고객을 보여 줍니다.

Registered 에디션 전용 ExcelExport

SaveToXLSX로 저장하고 스프레드시트 애플리케이션에서 연 그룹 그리드와 트리 그리드로, 윤곽과 요약이 유지됩니다.

GridAndChart

대시보드의 그리드 타일과 차트 타일: TsgcChartDataSource_Table이 그리드 행을 그립니다. sgcCharts와 sgcDashboard가 필요합니다.

Registered 에디션 전용 AskYourGrid

TsgcGridAI와 AI 쿼리 바가 일상 언어 질문으로 종목 200개를 필터링, 정렬, 강조하며, 네트워크도 API 키도 필요 없고 TsgcGridAIQuery 브리지도 함께 보여 줍니다. sgcWebSockets가 필요합니다.

Registered 에디션 전용 LiveFeed

프로세스 내 WebSocket 서버가 50개 심볼의 JSON 배치를 브로드캐스트하고, TsgcGridFeedSource_WebSocket이 키별로 그리드에 씁니다. Delphi와 .NET용입니다.

컴파일된 데모

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

sgcUI_bin.zip 다운로드 →

sgcGrid가 포함된 곳

sgcGrid는 단독으로 판매되며, Standard 이상의 모든 sgcUI 에디션에 포함되고, All-Access 번들에도 들어 있습니다.

sgcGrid 단일 패키지

€199 / 개발자, 전체 소스 코드, 1년 업데이트.

sgcGrid 구매 → 가격 보기 →

sgcUI Standard

sgcGrid, sgcNavigation, sgcToolbar 및 sgcEditors, €380부터.

Standard 보기 →

sgcUI Professional

Standard에 sgcCharts, sgcDashboard 및 sgcGauges 추가, €529부터.

Professional 보기 →

sgcUI Enterprise

sgcUI 제품 14개 전체, €699부터.

Enterprise 보기 →

무료 Community 에디션은 NuGet의 esegece.sgcGrid.Community입니다. 프로젝트는 Community 또는 등록 패키지 중 하나만 참조하며, 둘 다 참조하지는 않습니다.

기능Community (무료)Registered 에디션
Live updates from any thread, flash on change, tail mode✓✓
Format rules and themes✓✓
Sorting, filtering and selection✓✓
Grouping, group panel and summaries✓✓
Frozen columns and column resizing✓✓
Virtual mode✓✓
DataTable binding, JSON and CSV✓✓
Headless PNG and SVG✓✓
열 필터, 필터 행, 찾기 패널✓✓
열 선택기, 열 이동, 최적 너비, 레이아웃✓✓
밴드, 이미지, 진행률, 스파크라인 셀, 다중 선택✓✓
그리드에 질문하기: TsgcGridAI, AI 쿼리 바, 모든 LLM 공급자✓✓
In-place editing−✓
양방향 DataTable 편집, 붙여넣기, 실행 취소와 다시 실행, sgcEditors 셀 편집기−✓
Tree rows and master detail−✓
Excel export−✓
실시간 피드, TsgcGridAIQuery, sgcWebSockets AI 공급자(sgcGridWS 및 sgcUICoreWS 브리지)−✓

지원 프레임워크 및 플랫폼

sgcGrid의 컴포넌트

컴포넌트대상
TsgcVCLGridDelphi 및 C++ Builder, VCL (sgcGrid_VCL)
TsgcFMXGridXE6부터 Delphi FireMonkey, Windows, macOS, iOS, Android (sgcGrid_FMX)
TsgcGridData, TsgcGridColumns, TsgcGridFormatRules, TsgcGridLineView, TsgcGridRenderer프레임워크 중립 행 저장소, 열, 서식 규칙, 렌더러이며 Linux64에서도 동작
TsgcGridSource_DataSet, TsgcGridDataStoreTDataSet 바인딩과 마스터 상세 영역의 행 저장소
TsgcGridAI프레임워크 중립 일상 언어 질의 엔진이며 모든 에디션과 Linux64에서도 사용 가능 (sgcGrid_AI)
TsgcVCLAIQueryBar, TsgcFMXAIQueryBar, TsgcUIAIEventProvidersgcUICore의 AI 쿼리 바와 AI 공급자, 모든 에디션
TsgcUIAIChatProvidersgcUICoreWS 브리지: sgcWebSockets의 TsgcAIChat을 AI 공급자로 사용 (Registered 에디션)
TsgcGridFeedSource_WebSocket, TsgcGridFeedSource_MQTT, TsgcGridFeedSource_SSE, TsgcGridAIQuerysgcWebSockets와 함께 쓰는 sgcGridWS 브리지 (등록 에디션)
TsgcWinFormsGrid, TsgcWpfGrid, TsgcAvaloniaGrid.NET, WinForms, WPF, Avalonia
TsgcGridAI, TsgcWinFormsAIQueryBar, TsgcWpfAIQueryBar, TsgcAvaloniaAIQueryBar.NET, WinForms, WPF, Avalonia용 일상 언어 질의와 AI 쿼리 바
대상컴포넌트플랫폼
Delphi 7부터 13, VCLTsgcVCLGridWin32, XE2부터 Win64
Delphi XE6부터 13, FireMonkeyTsgcFMXGridWindows, macOS, iOS, Android
C++ Builder 2007부터 13TsgcVCLGrid, TsgcFMXGrid생성된 .hpp 헤더와 정적 라이브러리
Delphi 10.2부터 13, 프레임워크 중립모델, 서식, 렌더러, JSON 및 CSVLinux64, 예를 들어 서버에서 그리드 이미지를 렌더링
.NET Framework 4.7.2, .NET 8, 9, 10TsgcWinFormsGrid, WPF 및 Avalonia 그리드WinForms, WPF, Avalonia, 헤드리스 PNG 및 SVG

자주 묻는 질문

네. 그리드 데이터의 AppendRow, UpdateRow, UpdateCell, DeleteRow는 스레드 안전하므로 작업자 스레드가 키로 행을 직접 쓸 수 있습니다. 그리드는 메인 스레드에서 초당 최대 MaxFPS번 다시 그립니다. 실시간 업데이트를 확인하세요.

보이는 행만 그려지므로 프레임 비용은 행 수가 아니라 창 크기에 따라 달라집니다. QA 게이트는 행 100,000개 그리드의 1080p 프레임을 Win32에서 3.0 ms, Win64에서 4.6 ms로 측정합니다. 다른 곳에 있는 데이터에는 가상 모드가 행을 저장하지 않고 스크롤되어 보이는 값만 요청합니다. 성능을 확인하세요.

네. TsgcGridSource_DataSet은 모든 TDataSet으로 그리드를 채우고, AutoColumns로 열을 만들며, LiveUpdates를 사용하면 데이터셋의 모든 Append, Edit, Delete를 따라갑니다. KeyField가 있으면 변경된 행이 다시 불러오지 않고 제자리에서 갱신됩니다. .NET에서는 같은 소스가 DataTable을 읽습니다. DataSet 바인딩을 확인하세요.

네. TsgcVCLGrid는 일반 VCL 컨트롤이므로 기존 TStringGrid나 TDBGrid 옆의 폼에 놓을 수 있습니다. TDBGrid 화면은 데이터셋을 유지하면서 TsgcGridSource_DataSet을 추가하고, TStringGrid 화면은 AppendRow와 UpdateRow로 키별로 행을 씁니다. 기존 폼을 자동으로 변환하지는 않습니다.

인플레이스 편집, 양방향 DataTable 편집, 붙여넣기, 실행 취소와 다시 실행, sgcEditors 셀 편집기, 트리 행, 마스터 상세 행, Excel 내보내기, sgcGridWS 브리지가 없습니다. 정렬, 필터링, 필터 행과 찾기 패널, 그룹화, 요약, 고정 열, 열 선택기, 레이아웃, 밴드, 이미지, 진행률, 스파크라인 셀, 다중 선택, 서식 규칙, 가상 모드, JSON 및 CSV, 헤드리스 출력, TsgcGridAI를 사용한 그리드에 질문하기는 모든 에디션에 있습니다. 에디션을 확인하세요.

네. GroupIndent와 GroupPanelHeight 같은 크기는 장치 독립 픽셀이며, VCL 그리드는 이를 모니터의 DPI에 맞게 조정하고 Delphi 10.3부터는 모니터별로 조정합니다. Theme는 utLight와 utDark를 전환하고, AccentColor는 선택과 깜박임의 강조 색을 설정합니다.

sgcGrid 도움말

3,000+개발자
20+년
761+컴포넌트
30+API 통합
5플랫폼
30일 환불 보장만족하지 않으세요? 구매 후 30일 이내에 전액 환불을 요청하세요. 환불 정책 보기

오늘 sgcGrid를 사용해 보세요

sgcUI 체험판에는 모든 기능이 잠금 해제된 sgcGrid, 나머지 sgcUI 제품 13개, 모든 데모 프로젝트가 포함되어 있습니다.