Problema Canvas x TextOut x Thread x Delphi 7

13/11/2009

Olá a todos,

preciso muito de uma luz e já agradeço muito a quem poder ajudar.

Possuo um aplicação em Delphi 7 e roda em um Windows XP e funciona da seguinte maneira:
Fica recebendo dados de uma serial;
Quando o dado pertinente é reconhecido no meio de várias informações recebidas pela serial, é criado um Objeto que possui um TBitMap que também é criado nesta hora, bato uma foto que fica armezanado neste TBitMap e o adiciono o Objeto em um TObjectList;
Há um Thread que fica verificando este TObjectList que o processa esta fila quando há algum objeto;
Nesta Thread basicamente é escrito alguns dados na imagem utilizando Canvas.TextOut e salvo a imagem em disco.

O PROBLEMA é que não há uma lógica específica, mas algumas imagens são salvas em disco e não é gerado o texto na imagem, segue o trecho do código para avaliação, já mudei várias vezes no ituito de descobrir o problema, mas o atual é este:


procedure TEventoThread.CriaTxt(Aimg: TBitMap);
begin
  imgTxt    := Aimg; //declarado na thread
  Synchronize(AtualizaTxt);
  // depois numa outra chama gravo em disco
end;

procedure TEventoThread.AtualizaTxt;
var
txt : string;
begin
  imgTxt.Canvas.Lock;
  imgTxt.Canvas.Brush.Color:= clBlack;
  imgTxt.Canvas.Font.Color := clWhite;
  imgTxt.Canvas.Font.Size  := 9;
  imgTxt.Canvas.Pen.Style  := psSolid;

  altCaracter := imgTxt.Canvas.TextHeight('X');

  txt := 'XXXXXXXXXX';

  imgTxt.Canvas.Rectangle(0, 0, imgTxt.Width, altCaracter*2);
  imgTxt.Canvas.TextOut(0, 0, txt);
  imgTxt.Canvas.Unlock;
end;

Tenorio