GARANTIR DESCONTO

Fórum thread -gt; Access Violation. #356668

05/04/2008

0

Amigos,
Boa noite.

Possuo em meu form um STRINGGRID, onde utilizo o seguinte código para carregá-lo
FrmLogin.Conex.ConnectionString := AppConex; FrmLogin.Conex.Connected := true; FrmLogin.Consulta.Connection := FrmLogin.Conex; FrmLogin.Consulta.SQL.Clear; FrmLogin.Consulta.SQL.Add(´SELECT * FROM scflog order by logdt desc, loghr desc´); FrmLogin.Consulta.Open; if FrmLogin.Consulta.Eof then begin application.MessageBox(´Nenhuma ação registrada´,´Aviso´,16); end else begin i := 1; FrmLog.Log.RowCount := 2; While not FrmLogin.Consulta.Eof do begin FrmLog.log.Cells[0,i] := FrmLogin.Consulta.fieldbyname(´lognv´).Value; FrmLog.log.Cells[1,i] := FrmLogin.Consulta.fieldbyname(´loguserlog´).Value; FrmLog.log.Cells[2,i] := FrmLogin.Consulta.fieldbyname(´logdesc´).Value; FrmLog.log.Cells[3,i] := FrmLogin.Consulta.fieldbyname(´logdt´).Value; FrmLog.log.Cells[4,i] := FrmLogin.Consulta.fieldbyname(´loghr´).Value; i := i + 1; FrmLog.log.RowCount := i; frmLogin.Consulta.Next; end; end; FrmLogin.Consulta.Close; FrmLogin.Conex.Connected := False; FrmLogin.Conex.Close;



esse código é chamado dentro de uma thread que por sua vez roda no evento onactivate do forma.

se eu rodar isso simplesmente funciona legal, o porém é que preciso mostrar uma imagem na primeira coluna, dependendo do resultado e por isso no evento ondrawcell do STRINGGRID coloquei o seguinte:

with TStringGrid(Sender) do begin if ((ACol = 0) and (Arow <> 0)) then begin if Cells[0,Arow] = ´1´ then begin Canvas.FillRect(Rect); Canvas.Draw((Rect.Right - Rect.Left - Im1.Picture.Bitmap.Width) div 2 + Rect.Left,(Rect.Bottom - Rect.Top - Im1.Picture.Bitmap.Height) div 2 + Rect.Top, Im1.Picture.Bitmap); exit; end; if Cells[0,Arow] = ´2´ then begin Canvas.FillRect(Rect); Canvas.Draw((Rect.Right - Rect.Left - Im2.Picture.Bitmap.Width) div 2 + Rect.Left,(Rect.Bottom - Rect.Top - Im2.Picture.Bitmap.Height) div 2 + Rect.Top, Im2.Picture.Bitmap); exit; end; if Cells[0,Arow] = ´3´ then begin Canvas.FillRect(Rect); Canvas.Draw((Rect.Right - Rect.Left - Im3.Picture.Bitmap.Width) div 2 + Rect.Left,(Rect.Bottom - Rect.Top - Im3.Picture.Bitmap.Height) div 2 + Rect.Top, Im3.Picture.Bitmap); exit; end; end; end;



ai que começa os problemas, por que as vezes aparece algumas mensagens de erro. Não é sempre....e geralmente nao é a mesma mensagem de erro. Alguém saberia me dizer onde estou errando? ou não é possivel fazer aparecer as imagens alimentando a grid por uma Thread?

abraços!


Framosip

Framosip

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar