← ClaudeAtlas

advpl-ui-patternslisted

Patterns visuais do Protheus (SmartClient) — browses (FWMarkBrowse/FWBrowse/FWFormBrowse/MsSelect), janelas MsDialog (MsAdvSize pra maximizar, OWNER, fechamento via TTimer), ParamBox por tipo, atalhos SetKey+VK_*, coloração de linha (AddLegend/SetBlkBackColor/bColor), export Excel via FWMSExcel:GetXMLFile (gera .xml, não .xlsx). Use ao construir/editar UI Protheus server-side fora de MVC, escolher tipo de browse, maximizar diálogo, colorir linha, montar ParamBox, registrar atalho de teclado, ou exportar grid pra Excel.
JoniPraia/plugadvpl · ★ 12 · Data & Documents · score 66
Install: claude install-skill JoniPraia/plugadvpl
# advpl-ui-patterns — Patterns visuais do Protheus (SmartClient) Catálogo dos patterns de UI server-side do Protheus que não são cobertos pelo MVC (vide [[advpl-mvc]] para cadastros). Foco em telas ad-hoc: browses customizados, diálogos, ParamBox, coloração, atalhos e export. Cada método TOTVS pode **não existir** numa build específica — quando houver alternativa, ela está anotada (vide a regra de discovery em `check-build` / catálogo `apis_por_build`). ## Quando usar - Construir/editar tela interativa fora do MVC (painel, consulta, conferência). - Escolher entre `FWMarkBrowse`, `FWBrowse`, `FWFormBrowse`, `MsSelect`. - Maximizar `MsDialog`, controlar fechamento, ou tratar erro de `RestoreArea`. - Montar `ParamBox` (largura de campo, F3, validação) sem `Pergunte`/SX1. - Colorir linha de browse por status. - Registrar atalho de teclado (`SetKey` + `VK_*`). - Exportar grid pra Excel (`FWMSExcel`). ## 1. Browses — qual classe usar | Classe | Use quando | Marcação | Gotchas | |---|---|---|---| | **`FWMarkBrowse`** | grid com **checkbox de marcação** em massa (seleção múltipla) | nativa (coluna mark) | coloração via `AddLegend`/`SetColorFn`, **não** `SetBlkBackColor` | | **`FWBrowse`** | grid genérico read-only ad-hoc sobre alias/temporária | não | mais leve; sem MVC. `SetTemporary(.T.)` pode não existir em builds antigas | | **`FWFormBrowse`** | browse acoplado a um **MVC** (ViewDef) | via model | preferido dentro de MVC; fora dele é overkill | | **`MsSelect`** | grid simple