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
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:
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!
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)