Avatar billede loproc Praktikant
19. oktober 2004 - 19:38 Der er 7 kommentarer og
1 løsning

Udskrift af form

Hejsa

Jeg sidder og kæmper med et problem der går ud på at udskrive en form. Problemet er bare at indholdet der skal udskrives er større end skærmopløsningen. Derfor prøver jeg at ændre størrelsen af formen til mere end skærmens opløsning, men den bliver begrænset. Kan jeg på en eller anden måde undgå denne begrænsning eller få formens print metode til at printe hele indholdet, selv om det "stikker uden for formen"

Håber på lidt hurtig hjælp eftersom jeg skal aflevere det færdige program i morgen

Martin Kruse
Avatar billede stoney Nybegynder
19. oktober 2004 - 19:45 #1
Kan du ikke forklare det lidt bedre ?

Hvad mener du med "stikker uden for formen"

Stoney
Avatar billede loproc Praktikant
19. oktober 2004 - 19:48 #2
Altså, der er controls uden for formens synlige område - dvs. der er scrollbars
Avatar billede vallemanden Nybegynder
19. oktober 2004 - 22:19 #3
er det quickreport?

eller hvad går det ud på?
Avatar billede loproc Praktikant
19. oktober 2004 - 22:21 #4
Det er bare en form... Ikke mere end en form med et image og nogle labels
Avatar billede pjotre Novice
20. oktober 2004 - 08:23 #5
Hvis du bruger Frmxxxxx.Print funktionen, udskrives kun det, som du ser på skærmen.
Skal du have hele formen ud, må du ind og rette i skærmens opløsning, så hele formen kan ses på skærmen.
Pjotre
Avatar billede pjotre Novice
20. oktober 2004 - 09:01 #6
Du skal definere printeren i uses:
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Printers;
Herefter skal følgende kodes:
Printer.Orientation := poLandscape;  {A4 liggende}
Form1.PrintScale := poPrintToFit;    {Scaler så den passer til print}
Form1.Print;                          {Udskriv print}
Mvh
Pjotre
Avatar billede loproc Praktikant
20. oktober 2004 - 15:34 #7
Det lykkedes ikke at få den til at printe formen, men jeg har tegnet det hele til en bitmap og lagt den på printerens canvas... Kode følger:

procedure TForm3.PrintSeddel();
var
  Bitmap: TBitmap;
  OffX, OffY, I: Integer;
begin
  OffX := 45;
  OffY := 25;
  BitMap:=TBitmap.Create;
  BitMap.LoadFromFile(ExtractFilePath(Application.ExeName)+'timeseddel.bmp');
  with Printer do
  begin
    BeginDoc;
    for I := 0 to ControlCount -1 do
    if (Controls[I] is TLabel) then
      if TLabel(Controls[I]).Name <> '' then
      begin
        Bitmap.Canvas.Font := TLabel(Controls[I]).Font;
        Bitmap.Canvas.TextOut(TLabel(Controls[I]).Left, TLabel(Controls[I]).Top, TLabel(Controls[I]).Caption);
        TLabel(Controls[I]).Visible := False;
      end;
    Canvas.StretchDraw(rect(OffX, OffY, Printer.PageWidth - OffX, Printer.PageHeight - OffY), Image1.Picture.Bitmap);
    EndDoc;
  end;
end;
Avatar billede loproc Praktikant
07. maj 2005 - 20:48 #8
Se kommentar D. 20/10-2004 15:34:12
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