Para que servem OnGetEditMask, OnGetEditText e OnSetEditText do TStringGrid

O evento 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:

procedure  TForm1.StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Integer; var Value:  String);
begin
  if (ARow = 1) and (ACol = 1) then
    Value := '(999) 999-9999;1;_'; // Telefone
end;

O evento OnGetEditText ocorre também quando entramos no modo de edição. Neste momento podemos manipular o texto da célula atual (linha/coluna) e então podemos simular algo tal como uma tabela onde opções podem ser digitadas através de números. Exemplo:

procedure  TForm1.StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer; var Value:  String);
begin
    if (ARow = 1) and (ACol = 2) then
      begin
        if StringGrid1.Cells[ACol, ARow] =  'Ótimo' then
          Value := '1'
        else if StringGrid1.Cells[ACol,  ARow] = 'Regular' then
          Value := '2';
        else if StringGrid1.Cells[ACol,  ARow] = 'Ruim' then
          Value := '3';
      end;
end;

O evento evento OnSetEditText ocorre quando saímos do modo de edição. Neste momento podemos manipular a entrada e trocar por um texto equivalente. Normalmente usamos este evento em conjunto com o evento OnGetEditText. Exemplo:

procedure  TForm1.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value:  String);
begin
  if (ARow = 1) and (ACol = 2) then
    begin
      if Value = '1' then
        StringGrid1.Cells[ACol, ARow] := 'Ótimo'
      else if Value = '2' then
        StringGrid1.Cells[ACol, ARow] := 'Regular'
      else if Value = '3' then
        StringGrid1.Cells[ACol, ARow] := 'Ruim';
    end;
end;

Observações:

Para testar o exemplo anterior crie um novo projeto e coloque no Form1 um TStringGrid. Mude os três eventos mencionados conforme os exemplos. Execute e experimente digitar nas céluas 1 e 2 da primeira linha.

Fonte:  800 Dicas de Programação Delphi – v. 2.6

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s