Array
(
)

Como saber o TRect de uma célula do dbGrid?

Pabhen
   - 20 fev 2006

Olá colegas do forum, gostaria de saber se tem como pegar o TRect de uma célula qualquer do dbGrid?


Pabhen
   - 20 fev 2006

ninguem sabe?


Pabhen
   - 21 fev 2006

Alguem pode ajudar?


Pabhen
   - 21 fev 2006

consegui,

achei uma dica aki mesmo no forum no link http://forum.clubedelphi.net/viewtopic.php?t=21060

que diz pra declarar um tipo

TAccessDBGrid = class(TCustomGrid);

depois você poderá usar esta classe para acessar propriedades protegidas do DBGrid.

aí usei o seguinte código:

// Trecho do código

var
R: TRect;
col, lin: integer;
begin
col := TAccesDbgrid(dbGrid).Col;
lin := TAccesDbgrid(dbgGrid).Row + 1;

R := TAccesDbgrid(dbGrid).CellRect(col, lin);
R.Left := R.Left + dbgGrid.Left;
R.Right := R.Right + dbgGrid.Left;
R.Top := R.Top + dbgGrid.Top;
R.Bottom := R.Bottom + dbgGrid.Top;

jvceTotalPago.Left := R.Left + 1;
jvceTotalPago.Top := R.Top + 1;
jvceTotalPago.Width := (R.Right + 1) - R.Left;
jvceTotalPago.Height := (R.Bottom + 1) - R.Top;

// fim do trecho

como dá pra perceber, eu criei esse código pra criar um artifício técnico (popularmente conhecido como um ´jeiteinho´), pra sobrepor a celula selecionada com um edit q contem uma calculadora da biblioteca JVCL.

O usuário precisava de somar vários boletos fora do sistema pra depois lançar o valor na celula do grid, assim eu ´engano´ o usuário com esse componente, ele vai somando os boletos no sistema e o total é lançado no grid.

Espero q essa dica sirva pra mais alguem q keira posicionar algum outro componente de sua necessidade numa célula especifica do grid.

flw.


Rcasistemas
|
MVP
    21 fev 2006

:arrow: Em quem metodo do Grid vc implementou este procedimento :?: :?:
:arrow: Vc simplesmente fez isto: TAccesDbGrid = TCustomGrid;, naum foi preciso rescrever nenhum metodo :?: :?:

No meu naum deu certo :!:


Pabhen
   - 21 fev 2006


Citação:
:arrow: Em quem metodo do Grid vc implementou este procedimento :?: :?:
:arrow: Vc simplesmente fez isto: TAccesDbGrid = TCustomGrid;, naum foi preciso rescrever nenhum metodo :?: :?:

No meu naum deu certo :!:


TAccesDbGrid = TCustomGrid;

eu declarei logo abaixo do

public
{ Public declarations }
end;

-->> TAccesDbGrid = TCustomGrid;

e o resto do código eu declarei no evento OnColEnter do dbgrid, blz.

qualquer coisa tamos aí.