RAD
Paleta de componentes
As 42 classes da paleta, como acrescentar uma, e como o RAD é organizado por dentro.
A paleta#
A paleta tem hoje 42 classes, em três categorias:
| Categoria | Classes |
|---|---|
| Standard | TLabel TEdit TMemo TButton TCheckBox TRadioButton TListBox TComboBox TGroupBox TPanel TStaticText TRadioGroup TScrollBar TScrollBox |
| Additional | TShape TBevel TMaskEdit TLabeledEdit TButtonedEdit TImage TPaintBox TSplitter TColorBox TColorListBox TLinkLabel TFlowPanel TGridPanel |
| Win32 | TTabControl TRichEdit TTrackBar TProgressBar TUpDown THotKey TDateTimePicker TMonthCalendar TTreeView TListView THeaderControl TStatusBar TToolBar TComboBoxEx TCoolBar |
Mais os componentes não visuais TTimer, TMainMenu e TPopupMenu. Veja a WCL para o que cada controle faz.
Como acrescentar uma classe à paleta#
Uma linha na tabela de tools\gen_more.py (classe, categoria, tamanho, propriedades, eventos), e rodar o gerador, que reescreve Rad.Registry.More.fxm. As classes de Rad.Registry são escritas à mão e servem de modelo.
Por dentro: os módulos do RAD#
O RAD é um aplicativo Fenner de vários módulos em src\:
| Módulo | Papel |
|---|---|
Rad.Text | cadeias base 0, literais Pascal, caminhos, arquivos UTF-8 |
Rad.Ui | TKeptForm (formulário montado em código), diálogos, processos |
Rad.Registry | os descritores: propriedades, eventos, GetValue/SetValue por nome, tudo como texto |
Rad.Registry.More | os demais controles da WCL (30 classes), gerado por tools\gen_more.py a partir de uma tabela |
Rad.Designer | o designer: TDesignForm em csDesigning + IDesignerHook, alças, mouse e teclado |
Rad.FormFile | grava e lê o .fxf |
Rad.CodeGen | gera e atualiza o .fxm e o .fxp |
Rad.Inspector | a grade de propriedades (desenhada à mão) e o inspetor |
Rad.Options | as preferências do aplicativo e a tela delas |
Rad.FindDialog | a tela de localizar/substituir (quem executa é a janela principal) |
Rad.Complete · Rad.CompletePopup | de onde vêm as sugestões de completar código, e a janelinha dela |
Rad.Clipboard | a área de transferência do Windows, só texto (CF_UNICODETEXT) |
Rad.Deps | lê o .fxdeps (container FXDP + LZMA) e diz quais arquivos mudaram desde a compilação |
Rad.RtlPackage | onde a RTL pré-compilada mora, se está pronta (carimbo) e como se compila uma que falte |
Rad.CodeNav | navegação declaração ↔ implementação e completar classe, sobre o texto do módulo |
Rad.MainForm | a janela principal e o ciclo do projeto |
Rad.MenuEditor · Rad.Editors · Rad.ColorDialog · Rad.FontDialog | os editores em janela (menu, TStrings, cor, fonte) |
Rad.Project · Rad.Build · Rad.ProjectDialog | as configurações do projeto e as de build (lê e reescreve o <Nome>.config, resolve o escopo e diz onde o executável cai) |
Rad.Themes | os temas embutidos, a troca e a preferência gravada |
Testes#
A pasta smoke\ do RAD tem os programas de prova de cada etapa (texto e UI, registro, o designer num laboratório) e um projeto gerado pelo próprio RAD que compila e roda.