ワンクリックで
devexpressdext-components
Standards for using DevExpress (DEXT) components in Delphi VCL applications
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Standards for using DevExpress (DEXT) components in Delphi VCL applications
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Pragmatic clean code standards for Delphi — concise, direct, no over-engineering
Delphi code review checklist — quality, security, performance, SOLID, memory
Good memory management practices, memory leak prevention and exception handling in Delphi
SOLID implementation patterns for Delphi projects — Repository, Service, Factory, Strategy with constructor injection and interfaces
Implementation of the 23 GoF (Gang of Four) patterns in Object Pascal / Delphi with interfaces, TInterfacedObject and SOLID principles. Covers Creational, Structural and Behavioral patterns.
Standards for using DevExpress (DEXT) components in Delphi VCL applications
| name | DevExpress/DEXT Components |
| description | Standards for using DevExpress (DEXT) components in Delphi VCL applications |
Use this skill when developing rich interfaces with DevExpress (DEXT) components for Delphi VCL.
TcxGridTcxDBTreeList for hierarchical structuresTdxLayoutControl)| Component | Usage | Prefix |
|---|---|---|
TcxGrid | Advanced grid with grouping, filters, summaries | grd |
TcxGridDBTableView | Data-aware tabular view | tvw |
TcxGridDBBandedTableView | View with grouped bands/columns | btvw |
TcxGridDBCardView | Card view | cvw |
TcxDBTreeList | TreeList data-aware | trl |
TdxLayoutControl | Responsive layout manager | lyt |
TdxLayoutGroup | Grupo dentro de layout | lgrp |
TdxLayoutItem | Item within layout | litm |
TcxDBTextEdit | Edit text data-aware | edt |
TcxDBComboBox | ComboBox data-aware | cmb |
TcxDBDateEdit | Date picker data-aware | dte |
TcxDBCurrencyEdit | Data-aware currency editor | cur |
TcxDBCheckBox | Checkbox data-aware | chk |
TcxDBLookupComboBox | Lookup combo data-aware | lcb |
TcxDBMemo | Memo data-aware | mmo |
TdxBarManager | Toolbar/ribbon | bar |
TdxRibbon | Ribbon UI | rbn |
TdxNavBar | Navigation Bar | nav |
TdxSkinController | Skin controller | skn |
TcxPageControl | Advanced PageControl | pgc |
TcxGroupBox | Styled GroupBox | grp |
// Criaction programática de colunas
procedure TfrmCustomerList.ConfigureGrid;
var
LView: TcxGridDBTableView;
begin
LView := grdCustomers.Views[0] as TcxGridDBTableView;
LView.DataController.DataSource := dsCustomers;
// Configurar comportamento
LView.OptionsData.Editing := False; // Somente leitura
LView.OptionsData.Deleting := False;
LView.OptionsData.Inserting := False;
LView.OptionsView.GroupByBox := True; // Agrupamento visual
LView.OptionsView.Footer := True; // Rodapé com sumários
LView.OptionsView.Indicator := True; // Indicador de linha
LView.OptionsCustomize.ColumnFiltering := True;
LView.OptionsCustomize.ColumnSorting := True;
LView.OptionsSelection.MultiSelect := True;
// Configurar colunas individualmente
ConfigureColumn(LView.GetColumnByFieldName('name'), 'Nome', 200);
ConfigureColumn(LView.GetColumnByFieldName('cpf'), 'CPF', 120);
ConfigureColumn(LView.GetColumnByFieldName('email'), 'E-mail', 250);
end;
procedure TfrmCustomerList.ConfigureColumn(
AColumn: TcxGridDBColumn; const ACaption: string; AWidth: Integer);
begin
if not Assigned(AColumn) then Exit;
AColumn.Caption := ACaption;
AColumn.Width := AWidth;
AColumn.HeaderAlignmentHorz := taCenter;
end;
// Sumário no Footer
procedure ConfigureFooterSummary(AView: TcxGridDBTableView);
var
LSummary: TcxGridDBTableSummaryItem;
begin
AView.DataController.Summary.FooterSummaryItems.Clear;
LSummary := AView.DataController.Summary.FooterSummaryItems.Add
as TcxGridDBTableSummaryItem;
LSummary.FieldName := 'value';
LSummary.Kind := skSum;
LSummary.Format := 'Total: R$ #,##0.00';
LSummary.Column := AView.GetColumnByFieldName('value');
LSummary := AView.DataController.Summary.FooterSummaryItems.Add
as TcxGridDBTableSummaryItem;
LSummary.FieldName := 'id';
LSummary.Kind := skCount;
LSummary.Format := 'Registros: %d';
LSummary.Column := AView.GetColumnByFieldName('name');
end;
// Organizaction de formulário com LayoutControl
// Vantagens: responsivo, reposiciona automaticamente, visual consistente
procedure TfrmCustomerEdit.ConfigureLayout;
begin
lytMain.BeginUpdate;
try
// Grupo de data pessoais
lgrpPersonal.Caption := 'Dados Pessoais';
lgrpPersonal.LayoutDirection := ldHorizontal;
// Grupo de address
lgrpAddress.Caption := 'Endereço';
lgrpAddress.LayoutDirection := ldHorizontal;
// Configurar itens
litmName.Control := edtName;
litmName.CaptionOptions.Text := 'Nome:';
litmName.CaptionOptions.Width := 80;
finally
lytMain.EndUpdate;
end;
end;
// Aplicar skin globalmente
uses
dxSkinsCore,
dxSkinOffice2019Colorful; // Skin específico
procedure TfrmMain.ApplySkin;
begin
// Via SkinController (recomendado)
sknController.NativeStyle := False;
sknController.SkinName := 'Office2019Colorful';
// OU programaticamente
cxLookAndFeelController.NativeStyle := False;
cxLookAndFeelController.SkinName := 'Office2019Colorful';
end;
// Skins populares: 'Office2019Colorful', 'WXI', 'Metropolis',
// 'MetropolisDark', 'TheBezier', 'Fluent', 'Office2019DarkGray'
// Filtro programático
procedure TfrmCustomerList.ApplyFilter(const AField, AValue: string);
var
LView: TcxGridDBTableView;
begin
LView := grdCustomers.Views[0] as TcxGridDBTableView;
LView.DataController.Filter.Root.Clear;
LView.DataController.Filter.Root.AddItem(
LView.GetColumnByFieldName(AField),
foLike,
'%' + AValue + '%',
AValue
);
LView.DataController.Filter.Active := True;
end;
// Limpar filtro
procedure TfrmCustomerList.ClearFilter;
begin
(grdCustomers.Views[0] as TcxGridDBTableView)
.DataController.Filter.Root.Clear;
end;
uses
cxGridExportLink;
// Exportar para Excel
procedure TfrmCustomerList.ExportToExcel;
begin
cxGridExportLink.ExportGridToXLSX(
'customers.xlsx',
grdCustomers,
False, // AExpand
True, // AUseNativeFormat
True // AShowProgress
);
end;
// Exportar para PDF
procedure TfrmCustomerList.ExportToPDF;
begin
cxGridExportLink.ExportGridToPDF(
'customers.pdf',
grdCustomers
);
end;
| Appearance | Convention |
|---|---|
| Prefixes | Follow the table above (grd, tvw, lyt, etc.) |
| Skins | Use TdxSkinController in the main form |
| Layout | Prefer TdxLayoutControl to manual positioning |
| Grid | Configure at FormCreate, never at design-time for dynamic columns |
| Filters | Use DataController.Filter — do not filter via SQL when possible |
| Summaries | Configure FooterSummaryItems instead of calculating manually |
| Exports | Use cxGridExportLink — do not redeploy export |
TdxSkinController configured in the main form?OptionsData (read-only when appropriate)?R$ #,##0.00)?TdxLayoutControl used for editing forms?Caption, Width and Alignment?DataController.Filter (not SQL)?cxGridExportLink?