Avatar billede knorhaard Nybegynder
15. juni 2003 - 16:59 Der er 1 kommentar

Richedit printmargner

hey

Jeg havde en kode før hvor jeg kunne printe Richeditens canvas, med margner men da jeg nu har fået lagt paragraph.left og right indent på kan jeg ikke gøre dette mere. Koden jeg havde før var:

procedure TMainform.TbtnPrintClick(Sender: TObject);
var
I, XPixelsPrTomme, YPixelsPrTomme, Margen,
  LinieHoejde, LinieTaeller: Integer;
begin
  if PrintDialog1.Execute then
  begin
    Printer.Canvas.Font := TMDI(ActiveMDIChild).Richedit1.Font;
    XPixelsPrTomme := Round(GetDeviceCaps(Printer.handle, LOGPIXELSX ) * 0.0 );
    Margen := TMDI(ActiveMdiChild).RichEdit1.Paragraph.Leftindent; // - altså én tomme
    YPixelsPrTomme := GetDeviceCaps(Printer.handle, LOGPIXELSX );
    LinieHoejde := Round(Abs(Printer.Canvas.Font.Size) / 72 *
                        YPixelsPrTomme * 1.40);

    LinieTaeller := 3;
    Printer.BeginDoc;
//Erik


    for I := 0 to TMDI(ActiveMDIChild).Richedit1.Lines.Count - 1 do
    begin
      Inc(LinieTaeller);
      Printer.Canvas.Create.TextOut(Margen, LinieTaeller * LinieHoejde, TMDI(ActiveMDIChild).richedit1.Lines.Strings[I]);
    end;
    Printer.EndDoc;
  end;
end;

men nu vil jeg hellere have det så den godt nok laver canvasen men margenen skal være paragraph.leftindent er der nogle som kan hjælpe mig med det?
Avatar billede knorhaard Nybegynder
15. juni 2003 - 17:01 #1
sorry glemte lige at poste den rigtige kode

procedure TMainform.TbtnPrintClick(Sender: TObject);
var
I, XPixelsPrTomme, YPixelsPrTomme, Margen,
  LinieHoejde, LinieTaeller: Integer;
begin
  if PrintDialog1.Execute then
  begin
    Printer.Canvas.Font := TMDI(ActiveMDIChild).Richedit1.Font;
    XPixelsPrTomme := Round(GetDeviceCaps(Printer.handle, LOGPIXELSX ) * 1.0 );
    Margen := XPixelsPrTomme; // - altså én tomme
    YPixelsPrTomme := GetDeviceCaps(Printer.handle, LOGPIXELSX );
    LinieHoejde := Round(Abs(Printer.Canvas.Font.Size) / 72 *
                        YPixelsPrTomme * 1.40);

    LinieTaeller := 3;
    Printer.BeginDoc;
//Erik


    for I := 0 to TMDI(ActiveMDIChild).Richedit1.Lines.Count - 1 do
    begin
      Inc(LinieTaeller);
      Printer.Canvas.Create.TextOut(Margen, LinieTaeller * LinieHoejde, TMDI(ActiveMDIChild).richedit1.Lines.Strings[I]);
    end;
    Printer.EndDoc;
  end;
end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester