advpl-ui-patternslisted
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