Fórum Problema com o DBGrid #383409
11/08/2010
0
Debugger Exception Notification
---------------------------
Project raiox.exe raised exception class EInvalidGridOperation with message 'Grid index out of range'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Mas se vou descendo linha por linha com o teclado, não dá o erro só que algumas linhas não aparecem, a barra de rolagem chega ao final e não terminou ainda de aparecer todos os campos. Acredito que o Dbgrid ainda está recionhecendo a sua altura como as linhas tivessem a altura padrão, como altera a altura de algumas linhas dá esse erro. Alguém pode dar uma força?
Lucas Souza
Curtir tópico
+ 0Posts
11/08/2010
Marco Salles
Gostei + 0
13/08/2010
Lucas Souza
TMyDBGrid = class(TDBGrid)
published
property DefaultRowHeight;
end; procedure TfrmFicha.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
R : TRect;
altura,carect,resultado,posicao : integer;
begin posicao := dmGeral.cdsFicha.RecNo -1; // A variavel posicao identifica a linha no DbGrid
carect := (Length(trim(dmGeral.cdsFichaDESCRICAO.Value))); // conta a quantidade d ecaracteres no campo if carect > 75 then
begin
altura := 75;
resultado := carect div altura * 18;
end
else
resultado := 18;
TMyDBGrid(DBGrid1).RowHeights[posicao] := resultado;
//Quebra de linha
R := Rect;
Dec(R.Bottom,0);
If Column.Field = dmGeral.cdsFichaDESCRICAO Then
Begin
DBGrid1.Canvas.FillRect(Rect);
DrawText(DBGrid1.Canvas.Handle,PChar(dmGeral.cdsFichaDESCRICAO.AsString),
Length(dmGeral.cdsFichaDESCRICAO.AsString),R,DT_WORDBREAK);
end;
end; Só quando rola pra baixo o DBgrid dá o erro, principalmente com o botão de rolagem do mouse.
Gostei + 0
13/08/2010
Eriley Barbosa
Gostei + 0
13/08/2010
Marco Salles
posicao := cdsFicha.RecNo -1; // A variavel posicao identifica a linha no DbGrid if posicao >= 0 Then .... ...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)