Skip to content
Development
Skill

/devexpress-components

Standards for using DevExpress (DEXT) components in Delphi VCL applications

From plugin
delphi-spec-kit
5118 skills1 command
Install
$ npx -y skills add delphicleancode/delphi-spec-kit --skill devexpress-components --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/devexpress-components

Context preview

The summary Claude sees to decide when to auto-load this skill.

Standards for using DevExpress (DEXT) components in Delphi VCL applications

SKILL.md

devexpress-components.SKILL.md
name: "DevExpress/DEXT Components"
description: "Standards for using DevExpress (DEXT) components in Delphi VCL applications"

DevExpress (DEXT) Components — Skill

Use this skill when developing rich interfaces with **DevExpress** (DEXT) components for Delphi VCL.

When to Use

  • When creating advanced grids with `TcxGrid`
  • When using `TcxDBTreeList` for hierarchical structures
  • When implementing layout managers (`TdxLayoutControl`)
  • When customizing skins and themes

Main Components

| 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` |

TcxGrid Configuration

//Programmatic column creation
procedure TfrmCustomerList.ConfigureGrid;
var
  LView: TcxGridDBTableView;
begin
  LView := grdCustomers.Views[0] as TcxGridDBTableView;
  LView.DataController.DataSource := dsCustomers;

  //Configure behavior
  LView.OptionsData.Editing := False;        //Read only
  LView.OptionsData.Deleting := False;
  LView.OptionsData.Inserting := False;
  LView.OptionsView.GroupByBox := True;       //Visual grouping
  LView.OptionsView.Footer := True;          //Footer with summaries
  LView.OptionsView.Indicator := True;       //Line indicator
  LView.OptionsCustomize.ColumnFiltering := True;
  LView.OptionsCustomize.ColumnSorting := True;
  LView.OptionsSelection.MultiSelect := True;

  //Configure columns individually
  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;

Summaries in the Grid

//Footer Summary
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;

TdxLayoutControl (Responsive Layout)

//Form organization with LayoutControl
//Advantages: responsive, automatically repositions, consistent look

procedure TfrmCustomerEdit.ConfigureLayout;
begin
  lytMain.BeginUpdate;
  try
    //Personal data group
    lgrpPersonal.Caption := 'Dados Pessoais';
    lgrpPersonal.LayoutDirection := ldHorizontal;

    //Address group
    lgrpAddress.Caption := 'Endereço';
    lgrpAddress.LayoutDirection := ldHorizontal;

    //Configure items
    litmName.Control := edtName;
    litmName.CaptionOptions.Text := 'Nome:';
    litmName.CaptionOptions.Width := 80;
  finally
    lytMain.EndUpdate;
  end;
end;

Skinning / Themes

//Apply skin globally
uses
  dxSkinsCore,
  dxSkinOffice2019Colorful;  //Specific skin

procedure TfrmMain.ApplySkin;
begin
  //Via SkinController (recommended)
  sknController.NativeStyle := False;
  sknController.SkinName := 'Office2019Colorful';

  //OR programmatically
  cxLookAndFeelController.NativeStyle := False;
  cxLookAndFeelController.SkinName := 'Office2019Colorful';
end;

//Skins populares: 'Office2019Colorful', 'WXI', 'Metropolis',
//'MetropolisDark', 'TheBezier', 'Fluent', 'Office2019DarkGray'

Filters in the Grid

//Programmatic filter
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;

//Clean filter
procedure TfrmCustomerList.ClearFilter;
begin
  (grdCustomers.Views[0] as TcxGridDBTableView)
    .DataController.Filter.Root.Clear;
end;

Grid Export

uses
  cxGridExportLink;

//Export to Excel
procedure TfrmCustomerList.ExportToExcel;
begin
  cxGridExportLink.ExportGridToXLSX(
    'customers.xlsx',
    grdCustomers,
    False,   // AExpand
    True,    //AUseNativeFormat
    True     //AShowProgress
  );
end;

//Export to PDF
procedure TfrmCustomerList.ExportToPDF;
begin
  cxGridExportLink.ExportGridToPDF(
    'customers.pdf',
    grdCustomers
  );
end;

DEXT Conventions

| Appearance | Convention | |--

Read more
Ships withdelphi-spec-kit

An opinionated ecosystem of rules, skills and steerings to elevate Delphi development to state-of-the-art with Artificial Intelligence.

Get the whole plugin
Stats
52
Stars
14
Forks
Maintained
Maintenance
MIT
License
5mo ago
Last commit
5mo ago
Created

Repo: delphicleancode/delphi-spec-kit

Other skills on delphi-spec-kit.