Pessoal, hoje me deparei com uma situação bem inusitada( pelo menos pra mim), trata-se do checkbox no dbgrid.
Bem, eu utilizo esse recurso a anos, porém hoje ao criar uma nova grade em uma nova tela percebo uma lentidão incrível. Ao rodar a aplicação e clicar no ckeckbox dava para ir tomar um cafezinho e voltar para então ver o check marcado ou desmarcado. Levei um susto e fui conferir algumas grades, a minha surpresa estava tudo normal. Pensei é aqui o problema, vamos atras, nada encontrei de anormal. Bom para descargo de consciência criei uma tela semelhante a outra que esta funcionado, chamando os mesmos métodos, buscando os mesmos dados no banco, a grid com as propriedades setadas igualmente e o resultado é o seguinte: access Violation na linha Check := IS_CHECK[Column.Field.AsInteger = 1]; outro detalhe, na maquina do colega desenvolvedor, o access violation não ocorria mesmo dentro de um try except end, no entanto a lentidão era a mesma.
Alguém já viu algo parecido?
Obrigado pela atenção.
Segue o código.
procedure TfrmGerenciamentoFinanceiro.dbgContasReceberDrawColumnCell(
Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
const
IS_CHECK: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED);
var
Check : Integer;
R : TRect;
begin
inherited;
if cdsContasReceber.Active then
begin
with dbgContasReceber do
begin
if Column.FieldName = 'IMPRIMIR' then
begin
Canvas.FillRect(Rect);
Check := IS_CHECK[Column.Field.AsInteger = 1]; // Aqui estou tendo access Violation
R := Rect;
InflateRect(R, -2,-2);
DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, Check);
end
end;
end;
end;
Pergunta
DanielR
Boa tarde a todos!
Pessoal, hoje me deparei com uma situação bem inusitada( pelo menos pra mim), trata-se do checkbox no dbgrid.
Bem, eu utilizo esse recurso a anos, porém hoje ao criar uma nova grade em uma nova tela percebo uma lentidão incrível. Ao rodar a aplicação e clicar no ckeckbox dava para ir tomar um cafezinho e voltar para então ver o check marcado ou desmarcado. Levei um susto e fui conferir algumas grades, a minha surpresa estava tudo normal. Pensei é aqui o problema, vamos atras, nada encontrei de anormal. Bom para descargo de consciência criei uma tela semelhante a outra que esta funcionado, chamando os mesmos métodos, buscando os mesmos dados no banco, a grid com as propriedades setadas igualmente e o resultado é o seguinte: access Violation na linha Check := IS_CHECK[Column.Field.AsInteger = 1]; outro detalhe, na maquina do colega desenvolvedor, o access violation não ocorria mesmo dentro de um try except end, no entanto a lentidão era a mesma.
Alguém já viu algo parecido?
Obrigado pela atenção.
Segue o código.
procedure TfrmGerenciamentoFinanceiro.dbgContasReceberDrawColumnCell( Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); const IS_CHECK: array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED); var Check : Integer; R : TRect; begin inherited; if cdsContasReceber.Active then begin with dbgContasReceber do begin if Column.FieldName = 'IMPRIMIR' then begin Canvas.FillRect(Rect); Check := IS_CHECK[Column.Field.AsInteger = 1]; // Aqui estou tendo access Violation R := Rect; InflateRect(R, -2,-2); DrawFrameControl(Canvas.Handle, Rect, DFC_BUTTON, Check); end end; end; end;
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.