Laboratório de
Programação I
Carlos Oberdan Rolim
Ciência da Computação
Sistemas de Informação
Componentes
TStringGrid
TStringGrid
A aba Additional do C++ Builder oferece o componente de
tabela de strings (classe TStringGrid).
Componente permite ao usuário adicionar uma tabela ao seu
projeto, podendo preencher as células com dados no formato
de objetos da classe AnsiString.
Propriedades mais importantes
RowCount e ColCount – estas propriedades permitem
mudar/ler o número de linhas ou colunas que compõem o
grid, respectivamente.
Cells[col][lin] – representa a string armazenada na célula
referenciada pela linha lin e pela coluna col. A primeira linha
do grid possui índice 0, bem como a primeira coluna.
Propriedades mais importantes
Selection – esta propriedade indica a porção do grid que está
selecionada, através de um objeto da classe TGridRect. Os
atributos Left, Top, Right e Bottom representam,
respectivamente, a coluna e a linha da primeira célula da
seleção e a coluna e a linha da última célula da seleção.
Pode-se impedir que o usuário selecione várias células,
mudando-se o valor da subpropriedade goRangeSelect, da
propriedade Options para false.
FixedRows e FixedCols – permitem “fixar” um determinado
número de linhas ou colunas do grid, respectivamente. As
células fixas são pintadas em cor diferente e normalmente
são utilizadas para a exibição de informações de cabeçalho
da tabela.
Propriedades mais importantes
ScrollBars – Define se as barras de rolagem devem aparecer
em ambos os lados (ssBoth), somente na horizontal
(ssHorizontal), somente na vertical (ssVertical), ou não
devem aparecer (ssNone)
GridLineWidth – Define o tamanho de cada linha da grid
FixedRows / FixedCols – Ativa (valor em 1) ou desativa
(valor em 0) as linhas e colunas fixas (primeira a aparecer)
da grid
FixedColor – Define a cor das colunas fixas
Exemplo de código
void __fastcall TForm1::FormCreate(TObject *Sender){
StringGrid1->RowCount = 6;
StringGrid1->ColCount = 4;
StringGrid1->FixedRows = 1;
StringGrid1->FixedCols = 0;
StringGrid1->Cells[0][0] = "Coluna 1";
StringGrid1->Cells[1][0] = "Coluna 2";
StringGrid1->Cells[2][0] = "Coluna 3";
//insere a opção ‘goRangeSelect’ na lista de opções
// para permitir a selecao de mais de uma celula
StringGrid1->Options = StringGrid1->Options << goRangeSelect;
TGridRect coords;
coords.Left = 1;
coords.Top = 1;
coords.Right = 2;
coords.Bottom = 3;
StringGrid1->Selection = coords;
}
Usados para efetuar a seleção de celulas.
Coordenadas correspondem a retangulo
delimitado por coordenada superior x
coordenada inferior
Exemplo de form criado com código anterior
Eventos mais importantes
OnGetEditMask ocorre quando entramos no modo de
edição. Neste momento podemos verificar em qual
linha/coluna se encontra o cursor e então, se quiser, poderá
especificar uma máscara de edição. Exemplo:
void __fastcall TForm1::StringGrid1GetEditMask(TObject
*Sender, int ACol, int ARow,
UnicodeString &Value) {
if (ARow == 1 && ACol == 1)
Value = "(999) 999-9999;1;_"; // Telefone
if (ARow == 1 && ACol == 2)
Value = "99/ 99/9999"; // Data
}
Eventos mais importantes
OnSetEditText ocorre quando saímos do modo de edição.
Neste momento podemos manipular a entrada e trocar por
um texto equivalente.
void __fastcall TForm1::StringGrid1SetEditText(TObject
*Sender, int ACol, int ARow,
const UnicodeString Value){
if (ARow == 1 && ACol == 2)
Label1->Caption = "Valor Digitado: " + Value;
}
Eventos mais importantes
OnSelectCell ocorre quando selecionamos uma célula
void __fastcall TForm1::StringGrid1SelectCell(TObject
*Sender, int ACol, int ARow,
bool &CanSelect){
if (ARow == 1 && ACol == 2)
Label1->Caption = "Selecionada a celula [1][2]";
}
Download

componente_grid