Fenner
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:

CategoriaClasses
StandardTLabel TEdit TMemo TButton TCheckBox TRadioButton TListBox TComboBox TGroupBox TPanel TStaticText TRadioGroup TScrollBar TScrollBox
AdditionalTShape TBevel TMaskEdit TLabeledEdit TButtonedEdit TImage TPaintBox TSplitter TColorBox TColorListBox TLinkLabel TFlowPanel TGridPanel
Win32TTabControl 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óduloPapel
Rad.Textcadeias base 0, literais Pascal, caminhos, arquivos UTF-8
Rad.UiTKeptForm (formulário montado em código), diálogos, processos
Rad.Registryos descritores: propriedades, eventos, GetValue/SetValue por nome, tudo como texto
Rad.Registry.Moreos demais controles da WCL (30 classes), gerado por tools\gen_more.py a partir de uma tabela
Rad.Designero designer: TDesignForm em csDesigning + IDesignerHook, alças, mouse e teclado
Rad.FormFilegrava e lê o .fxf
Rad.CodeGengera e atualiza o .fxm e o .fxp
Rad.Inspectora grade de propriedades (desenhada à mão) e o inspetor
Rad.Optionsas preferências do aplicativo e a tela delas
Rad.FindDialoga tela de localizar/substituir (quem executa é a janela principal)
Rad.Complete · Rad.CompletePopupde onde vêm as sugestões de completar código, e a janelinha dela
Rad.Clipboarda área de transferência do Windows, só texto (CF_UNICODETEXT)
Rad.Depslê o .fxdeps (container FXDP + LZMA) e diz quais arquivos mudaram desde a compilação
Rad.RtlPackageonde a RTL pré-compilada mora, se está pronta (carimbo) e como se compila uma que falte
Rad.CodeNavnavegação declaração ↔ implementação e completar classe, sobre o texto do módulo
Rad.MainForma janela principal e o ciclo do projeto
Rad.MenuEditor · Rad.Editors · Rad.ColorDialog · Rad.FontDialogos editores em janela (menu, TStrings, cor, fonte)
Rad.Project · Rad.Build · Rad.ProjectDialogas 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.Themesos 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.