원클릭으로
developer-delphi-fmx-components
Componentes FMX avançados — TMultiView, LiveBindings, inputs especializados e padrões GestorERP.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Componentes FMX avançados — TMultiView, LiveBindings, inputs especializados e padrões GestorERP.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Gera documentação completa por classe/interface com conteudo detalhado (O que e, Caracteristicas, Engine, Funcionalidades, Aplicabilidades, Exemplos de Uso, Relacionamentos) a partir do codigo-fonte. Generico para qualquer projeto. Orquestra agentes doc-agent-class-scanner, doc-agent-class-writer e doc-agent-class-indexer.
Convenções transversais de documentação entre skills (ordem de invocação, changelog em Markdown portátil, pacote para outro repositório/IA). Não define a pasta Analise/ — isso é documentation-paste_analysis_unit_class_method.
Ponto de entrada para todos os workflows de documentação — bootstrap, design OOP inicial, análise de código, conteúdo canónico, portais, manutenção e migração. Complementa o documentation-agent-orchestrator na camada de skills (25 skills da família documentation-*).
Inicializa o ecossistema documental em um projeto novo criando a estrutura canônica `Documentation/`, gerando o hub `README_V1.0.md`, criando o `Documentation/Versionamento/CHANGELOG.md` inicial e executando um scan inicial para lacunas (backlog documental). Use quando o usuario iniciar documentação "do zero" ou pedir "começar o padrão de Documentation". Raiz canónica `Documentation/`; se existir `Docs/` ou `docs/` na raiz, renomear para `Documentation/` antes do bootstrap.
Executa uma varredura (scanner padrão) para descobrir artefatos documentais e lacunas no ecossistema `Documentation/` (ou equivalente) com base em padrões de nomes/pastas. Gera inventário/classificação e um backlog acionável. Raiz canónica `Documentation/`; incluir `Docs/` ou `docs/` legados na raiz até consolidarem.
Referência do conjunto de instruções x86/x64 — utilizável com assembler Delphi, NASM, GAS e similares.
| name | developer-delphi-fmx-components |
| description | Componentes FMX avançados — TMultiView, LiveBindings, inputs especializados e padrões GestorERP. |
| model | sonnet |
| license | MIT |
| copyright | Copyright (c) 2026 CSL Tech Solutions |
| company | CSL Tech Solutions |
| author | Claiton de Souza Linhares |
Cobre componentes FMX além dos básicos de layout: TMultiView, LiveBindings, inputs (TEdit/TMemo/TComboBox), TListView customizado, TArc como progressbar, e diálogos cross-platform com TDialogService. Parte da Família A — FMX Layout.
Skill orquestradora: developer-delphi-fmx-layout_V1.1.0
uses FMX.MultiView;
// Configuração básica em runtime
MultiView1.Mode := TMultiViewMode.Drawer;
MultiView1.DrawerOptions.Placement := TPlacement.Left;
// Abrir/fechar programaticamente
MultiView1.ShowMaster;
MultiView1.HideMaster;
// Verificar estado
if MultiView1.IsShown then
MultiView1.HideMaster;
Propriedades principais:
| Propriedade | Tipo | Descrição |
|---|---|---|
Mode | TMultiViewMode | Drawer, Panel, Popover, PlatformBehaviour |
MasterButton | TControl | Botão hambúrguer que abre/fecha |
DrawerOptions.Placement | TPlacement | Left, Right, Top, Bottom |
DrawerOptions.Overlap | Boolean | Drawer sobrepõe conteúdo ou empurra |
DrawerOptions.TouchAreaSize | Single | Largura da área de swipe para abrir |
ShadowOptions.Enabled | Boolean | Sombra sob o drawer |
uses Data.Bind.Components, Data.Bind.ObjectScope, Fmx.Bind.Editors;
// Binding simples: campo de objeto → Edit
var Binding: TLinkPropertyToField;
Binding := TLinkPropertyToField.Create(Self);
Binding.ComponentProperty := 'Text';
Binding.DataSource := BindSourceDB1;
Binding.FieldName := 'Nome';
// Ativar todos os bindings
BindingsList1.Active := True;
Componentes de LiveBindings:
TBindingsList — container de todos os bindingsTLinkControlToField — bidirecional: Edit ↔ FieldTLinkPropertyToField — unidirecional: propriedade ↔ fieldTBindSourceDB — data source para TDataSet// TEdit — campo de texto
Edit1.Text := 'valor';
Edit1.Password := True; // ocultar com *
Edit1.MaxLength := 50;
Edit1.TextPrompt := 'Digite aqui...'; // placeholder
Edit1.OnChange := ProcOnChange;
Edit1.OnValidate := ProcOnValidate;
// TMemo — texto multilinha
Memo1.Lines.Text := 'texto\nmais texto';
Memo1.Lines.Add('nova linha');
Memo1.ScrollBy(0, Memo1.ContentBounds.Height); // scroll para o fim
// TComboBox — dropdown
ComboBox1.Items.Add('Item 1');
ComboBox1.Items.Add('Item 2');
ComboBox1.ItemIndex := 0;
var Sel: string := ComboBox1.Items[ComboBox1.ItemIndex];
// TDateEdit — seletor de data
DateEdit1.Date := Now;
DateEdit1.Format := 'dd/mm/yyyy';
var D: TDate := DateEdit1.Date;
uses FMX.ListView, FMX.ListView.Types, FMX.ListView.Appearances;
// Configuração básica
ListView1.ItemAppearance.ItemAppearance := 'ImageListItem';
// Ou: 'ListItem', 'ImageListItem', 'ImageListItemRightButton'
// Adicionar itens programaticamente
var Item := ListView1.Items.Add;
Item.Text := 'Título do item';
Item.Detail := 'Detalhe secundário';
// Acessar item por índice
var Txt: string := ListView1.Items[0].Text;
// Item selecionado
if ListView1.ItemIndex >= 0 then
ShowMessage(ListView1.Items[ListView1.ItemIndex].Text);
uses FMX.Objects;
// TArc: StartAngle + SweepAngle = arco desenhado
Arc1.StartAngle := -90; // começa do topo
Arc1.EndAngle := -90 + 270; // cobre 75% do círculo
// Calcular ângulo para porcentagem
procedure SetarProgresso(AArc: TArc; APct: Single);
begin
AArc.EndAngle := AArc.StartAngle + (360 * APct / 100);
end;
// Animar progressbar
procedure AnimarProgresso(AArc: TArc; APercent: Single; ADuracao: Single = 0.40);
var
AlvoAngulo: Single;
begin
AlvoAngulo := AArc.StartAngle + (360 * APercent / 100);
TAnimator.AnimateFloat(AArc, 'EndAngle', AlvoAngulo, ADuracao,
TAnimationType.Out, TInterpolationType.Cubic);
end;
uses FMX.DialogService;
// MessageDialog (não bloqueia — callback)
TDialogService.MessageDialog(
'Deseja excluir este registro?',
TMsgDlgType.mtConfirmation,
[TMsgDlgBtn.mbYes, TMsgDlgBtn.mbNo],
TMsgDlgBtn.mbNo,
0,
procedure(const AResult: TModalResult)
begin
if AResult = mrYes then
ExcluirRegistro;
end);
// ShowMessage simples
TDialogService.ShowMessage('Salvo com sucesso!');
// InputQuery (pedir texto ao usuário)
TDialogService.InputQuery('Nome', ['Digite seu nome:'], [''],
procedure(const AResult: Boolean; const AValues: array of string)
begin
if AResult and (AValues[0] <> '') then
ProcessarNome(AValues[0]);
end);
Por que usar TDialogService:
Application.MessageBox é Windows-only e bloqueiaO GestorERP usa arcos coloridos como indicadores de progresso em dashboards.
Ver exemplo completo em exemplos/progressbar_arc.pas.
Padrão de cores por domínio:
$FF3498DB (azul)$FF27AE60 (verde)$FFD4AC0D (dourado)$FFE74C3C (vermelho)