Controles Adicionais
A aba Adicionais fornece controles visuais e de entrada avancados que estendem o conjunto padrao com graficos, grades e editores especializados.
TBitBtn CT_BITBTN = 12
Um botao que exibe uma legenda e um glifo (imagem bitmap). Ideal para barras de ferramentas e botoes de acao.
| Propriedade | Tipo | Padrao | Descricao |
cText | String | "BitBtn" | Legenda do botao |
cGlyph | String | "" | Caminho para imagem bitmap do glifo |
nGlyphAlign | Numerico | 0 | Posicao do glifo: 0=Esquerda, 1=Direita, 2=Topo, 3=Inferior |
nSpacing | Numerico | 4 | Espacamento entre glifo e texto (pixels) |
nWidth, nHeight | Numerico | 100, 30 | Tamanho |
| Evento | Categoria | Descricao |
OnClick | Acao | Botao clicado |
OnEnter | Foco | Controle recebeu foco |
OnExit | Foco | Controle perdeu foco |
| Plataforma | Widget Nativo |
| Windows | BUTTON (BS_BITMAP | BS_PUSHBUTTON) |
| macOS | NSButton (NSBezelStyleTexturedSquare + imagem) |
| Linux | GtkButton + GtkImage |
// BitBtn com glifo
@ 10, 10 BITBTN oBtn PROMPT "Salvar" OF oForm GLYPH "save.bmp" SIZE 100, 30
oBtn:OnClick := { || SalvarRegistro() }
Botao plano projetado para barras de ferramentas. Pode atuar como alternancia e nao recebe foco.
| Propriedade | Tipo | Padrao | Descricao |
cGlyph | String | "" | Caminho para bitmap do glifo |
lFlat | Logico | .T. | Aparencia plana (sem borda ate passar o mouse) |
lDown | Logico | .F. | Estado pressionado/alternancia |
nGroupIndex | Numerico | 0 | Grupo para exclusao mutua (0 = nenhum) |
lAllowAllUp | Logico | .F. | Permitir que todos os botoes do grupo fiquem despressionados |
| Evento | Categoria | Descricao |
OnClick | Acao | Botao clicado |
| Plataforma | Widget Nativo |
| Windows | BUTTON (BS_OWNERDRAW, renderizacao plana) |
| macOS | NSButton (NSBezelStyleRoundRect, sem borda) |
| Linux | GtkToggleButton (alivio plano) |
// Botoes de velocidade com exclusao mutua na barra
@ 2, 2 SPEEDBTN oNegrito GLYPH "bold.bmp" OF oToolbar GROUP 1 SIZE 24, 24
@ 2, 28 SPEEDBTN oItalico GLYPH "italic.bmp" OF oToolbar GROUP 1 SIZE 24, 24
TImage CT_IMAGE = 14
Exibe uma imagem bitmap, JPEG, PNG ou GIF em um formulario.
| Propriedade | Tipo | Padrao | Descricao |
cFileName | String | "" | Caminho para arquivo de imagem |
lStretch | Logico | .F. | Esticar imagem para caber no controle |
lProportional | Logico | .F. | Manter proporcao ao esticar |
lCenter | Logico | .F. | Centralizar imagem no controle |
nWidth, nHeight | Numerico | 100, 100 | Tamanho |
| Evento | Categoria | Descricao |
OnClick | Acao | Imagem clicada |
OnDblClick | Acao | Imagem clicada duas vezes |
| Plataforma | Widget Nativo |
| Windows | STATIC (SS_BITMAP | SS_REALSIZECONTROL) |
| macOS | NSImageView |
| Linux | GtkImage |
// Exibir um logotipo
@ 10, 10 IMAGE oLogo FILENAME "logo.png" OF oForm SIZE 200, 80 STRETCH
TShape CT_SHAPE = 15
Desenha formas geometricas (retangulo, circulo, elipse, retangulo arredondado) em um formulario.
| Propriedade | Tipo | Padrao | Descricao |
nShape | Numerico | 0 | 0=Retangulo, 1=Circulo, 2=Elipse, 3=RetanguloArred |
nPenColor | Cor | CLR_BLACK | Cor da borda |
nPenWidth | Numerico | 1 | Espessura da borda |
nBrushColor | Cor | CLR_WHITE | Cor de preenchimento |
| Plataforma | Widget Nativo |
| Windows | STATIC com desenhoproprio (desenho GDI) |
| macOS | NSView (Core Graphics drawRect:) |
| Linux | GtkDrawingArea (Cairo) |
TBevel CT_BEVEL = 16
Controle decorativo nao interativo que desenha linhas e caixas com relevo elevado ou rebaixado.
| Propriedade | Tipo | Padrao | Descricao |
nStyle | Numerico | 0 | 0=Rebaixado, 1=Elevado |
nBevelShape | Numerico | 0 | 0=Caixa, 1=LinhaSuperior, 2=LinhaInferior, 3=LinhaEsquerda, 4=LinhaDireita |
| Plataforma | Widget Nativo |
| Windows | STATIC (SS_ETCHEDHORZ / SS_ETCHEDFRAME) |
| macOS | NSBox (NSBoxSeparator) |
| Linux | GtkSeparator / GtkFrame |
TMaskEdit CT_MASKEDIT = 28
Entrada de texto com mascara de entrada que restringe o formato (datas, telefones, CPF, etc.).
| Propriedade | Tipo | Padrao | Descricao |
cText | String | "" | Conteudo do texto atual (com literais) |
cMask | String | "" | Mascara de entrada (ex. "999-999-9999") |
lSaveLiterals | Logico | .T. | Incluir literais da mascara no valor |
cPlaceholder | String | "_" | Caractere de espaco reservado |
| Evento | Categoria | Descricao |
OnChange | Acao | Conteudo do texto alterado |
OnValidate | Acao | Validacao da mascara concluida |
OnEnter | Foco | Controle recebeu foco |
OnExit | Foco | Controle perdeu foco |
| Plataforma | Widget Nativo |
| Windows | EDIT (ES_AUTOHSCROLL + logica de mascara) |
| macOS | NSTextField + NSFormatter |
| Linux | GtkEntry + filtragem de entrada |
// Mascara de telefone
@ 50, 120 MASKEDIT oTelefone MASK "(99) 99999-9999" OF oForm SIZE 160, 24
TStringGrid CT_STRINGGRID = 29
Grade editavel de celulas organizadas em linhas e colunas. Adequada para entrada de dados tabulares.
| Propriedade | Tipo | Padrao | Descricao |
nColCount | Numerico | 5 | Numero de colunas |
nRowCount | Numerico | 5 | Numero de linhas |
nFixedCols | Numerico | 1 | Numero de colunas fixas (cabecalho) |
nFixedRows | Numerico | 1 | Numero de linhas fixas (cabecalho) |
nDefaultColWidth | Numerico | 64 | Largura padrao da coluna |
nDefaultRowHeight | Numerico | 24 | Altura padrao da linha |
lEditing | Logico | .T. | Permitir edicao de celulas |
| Evento | Categoria | Descricao |
OnSelectCell | Acao | Celula selecionada |
OnSetEditText | Acao | Texto da celula alterado |
OnDrawCell | Desenho | Pintura personalizada da celula |
OnKeyDown | Teclado | Tecla pressionada na grade |
| Plataforma | Widget Nativo |
| Windows | Grade customizada com desenho proprio (baseada em WC_LISTVIEW) |
| macOS | NSTableView (multi-coluna editavel) |
| Linux | GtkTreeView + GtkListStore (editavel) |
// Criar uma grade estilo planilha de 3 colunas
@ 10, 10 STRINGGRID oGrade OF oForm SIZE 400, 200 COLS 3 ROWS 10
oGrade:SetCell( 0, 0, "Produto" )
oGrade:SetCell( 0, 1, "Qtd" )
oGrade:SetCell( 0, 2, "Preco" )
Painel conteiner com rolagem. Controles colocados dentro recebem barras de rolagem automaticamente quando excedem a area visivel.
| Propriedade | Tipo | Padrao | Descricao |
lAutoScroll | Logico | .T. | Exibir barras de rolagem automaticamente |
nHorzPos | Numerico | 0 | Posicao da rolagem horizontal |
nVertPos | Numerico | 0 | Posicao da rolagem vertical |
nWidth, nHeight | Numerico | 200, 200 | Tamanho da area visivel |
| Evento | Categoria | Descricao |
OnScroll | Acao | Posicao da rolagem alterada |
OnResize | Layout | Conteiner redimensionado |
| Plataforma | Widget Nativo |
| Windows | Window (WS_HSCROLL | WS_VSCROLL) |
| macOS | NSScrollView + NSView |
| Linux | GtkScrolledWindow + GtkViewport |
TStaticText CT_STATICTEXT = 31
Rotulo com borda visivel. Similar ao TLabel mas com estilo de borda rebaixada, elevada ou simples.
| Propriedade | Tipo | Padrao | Descricao |
cText | String | "" | Texto de exibicao |
nBorderStyle | Numerico | 0 | 0=Nenhuma, 1=Simples, 2=Rebaixada |
nAlignment | Numerico | 0 | 0=Esquerda, 1=Centro, 2=Direita |
| Plataforma | Widget Nativo |
| Windows | STATIC (SS_SUNKEN | SS_LEFT) |
| macOS | NSTextField (com borda, nao editavel) |
| Linux | GtkLabel + GtkFrame |
TLabeledEdit CT_LABELEDEDIT = 32
Controle composto que combina um TLabel e um TEdit em um unico componente. Simplifica o layout de formularios.
| Propriedade | Tipo | Padrao | Descricao |
cText | String | "" | Conteudo do texto de edicao |
cLabelText | String | "Label" | Legenda para a parte do rotulo |
nLabelPosition | Numerico | 0 | 0=Esquerda, 1=Topo, 2=Direita, 3=Inferior |
nLabelSpacing | Numerico | 3 | Espacamento entre rotulo e edicao (pixels) |
lReadOnly | Logico | .F. | Impede edicao |
| Evento | Categoria | Descricao |
OnChange | Acao | Texto de edicao alterado |
OnEnter | Foco | Edicao recebeu foco |
OnExit | Foco | Edicao perdeu foco |
// Edicoes rotuladas para formulario rapido de entrada
@ 20, 20 LABELEDEDIT oNome LABEL "Nome Completo:" OF oForm SIZE 200, 24
@ 50, 20 LABELEDEDIT oEmail LABEL "E-mail:" OF oForm SIZE 200, 24
10 Controles Adicionais
Estes controles avancados fornecem elementos graficos, entrada com mascara, edicao em grade e widgets compostos. Disponiveis em todas as plataformas usando renderizacao nativa ou com desenho proprio.