Ir ao topo

Tecnobyte

Logomarca da Tecnobyte
Contato por WhatsApp

WhatsApp

(69) 3421-6756

Contato por Telefone

(69) 3421-6756

(69) 3421-6757

Enviar mensagem

Enviar

mensagem

Contato por Facebook

Facebook

Vídeos

Vídeos

Atendimento de segunda a sexta, das 08h00 às 19h00 (horário de Brasília).

Banner

Delphi - Outros

Como obter a célula de um StringGrid que está sob o cursor do mouse?

Inclua na seção uses: Windows
{ Esta procedure pega a linha e coluna da célula onde estiver
  o mouse. Valores negativos para Linha ou Coluna indicam que
  o mouse está fora da área cliente do StringGrid }

procedure MouseCell(Grid: TStringGrid; 
  var Coluna, Linha: integer);
var
  Pt: TPoint;
begin
  GetCursorPos(Pt);
  Pt := Grid.ScreenToClient(Pt);
  if PtInRect(Grid.ClientRect, Pt) then
    Grid.MouseToCell(Pt.X, Pt.Y, Coluna, Linha)
  else begin
    Coluna := -1;
    Linha := -1;
  end;
end;

{ Exemplo de uso:
  - Coloque um botão no form;
  - Altere o evento OnClick deste botão como abaixo:
}

procedure TForm1.Button1Click(Sender: TObject);
var
  Coluna, Linha: integer;
begin
  MouseCell(StringGrid1, Coluna, Linha);
  if (Coluna >= 0) and (Linha >= 0) then
    Caption := 'Coluna: ' + IntToStr(Coluna) + ' - ' +
               'Linha: ' + IntToStr(Linha);
  else
    Caption := 'O mouse não está no StringGrid';
end;

{ Para testar: 
  - Execute o programa;
  - Posicione o cursor do mouse sobre alguma célula do 
    StringGrid;
  - Pressione TAB até chegar ao botão e pressione ENTER;
  - O resultado será mostrado no Caption do form;
}

Observações

Note que a procedure MouseCell usa um valor negativo (-1) para coluna e linha se o mouse não estiver sobre o StringGrid.

O conteúdo desta página pode ajudar alguém? Compartilhe!