QReport com Canvas - Impressão diagonal

28/09/2004

0

É o seguinte...

Tenho um relatório q é uma transferência escolar, onde no local do nome das disciplinas deve aparecer o texto na vertical...coisa q não é possível no QReport , então me utilizei de desenhar o Canvas do QRImage com a seguinte função:

var
OldFont,NewFont : hFont;
LogFont : TLogFont;
i : integer;
begin
OldFont := Canvas.Font.Handle;
i := 900;
GetObject(OldFont,Sizeof(LogFont),@LogFont);
LogFont.lfEscapement := i;
NewFont := CreateFontIndirect(LogFont);

SelectObject(QRImage19.Canvas.Handle,NewFont);
TextOut(QRImage19.Canvas.Handle,5,83,PChar(´Nome da Disciplina´),Length(´Nome da Disciplina´));

(...)
end;



Onde tenho um loop para vários QRImages e displinas e etc..

O problema é : o sistema rodou assim durante anos sempre em PCs com Windows 9x e sempre funcionou perfeitamente, até o dia q me apareceu um client ecom Win 2000 e Win XP e aí o QReport pirou tudo.

Nos QRImages o texto fica horizontal com fonte muito maior ou não aparece....a cada preview é uma reação diferente, e ainda mais....outros QRLabels tb mudam configuração de Font apenas em QReports onde eu tenho desenhar Canvas em QRImages.

Já tentei de tudo....(ParentFont, deixar tudo(QRBand, Form, QReport) com mesma configuração de fonte q já funcionou mas agora não funciona mais

Gostaria da ajuda de alguem q já tenha trabalhado com algo do tipo...talvez eu esteja esquecendo algum requisito básico..

Vlw...Obrigado[color=blue:9b2ab31a1a][/color:9b2ab31a1a]

[b:9b2ab31a1a][color=red:9b2ab31a1a]Título editador pelo Moderador (AZ) - Removido: ´....pirou tudo!!´[/color:9b2ab31a1a][/b:9b2ab31a1a]


Isaiasbass

Isaiasbass

Responder

Posts

29/09/2004

Aroldo Zanela

Colega,

Verifique se consegue adaptar este fragmento para sua necessidade:

procedure SetFontAngle( const vAngle : integer; Canvas: TCanvas );
var LogFont: TLogFont;
    OldHandle: DWord;
begin
  OldHandle:= Canvas.Font.Handle;
  GetObject( OldHandle, SizeOf(LogFont), @LogFont);
  LogFont.lfOrientation := vAngle;
  LogFont.lfEscapement := vAngle;
  LogFont.lfHeight:= -72;
  Canvas.Font.Handle := CreateFontIndirect(LogFont);
  DeleteObject( OldHandle );
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  QuickRep1.PreviewModal;
end;

procedure TForm1.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
var mf: TMetafile;
    mfc: TMetafileCanvas;
begin
    mf := TMetafile.Create;
    try
      mfc := TMetafileCanvas.Create(mf, 0);
      with mfc do
      try
        SetMapMode( Handle, MM_LOMETRIC );
        SetFontAngle( 2700, mfc );
        TextOut( 0, 0, ´Nome da disciplina´ );
      finally
        mfc.Free;
    end;
      QRImage1.Canvas.Draw(100,100,mf);
    finally
      mf.Free;
    end;
end;



Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar