Avatar billede freesite Nybegynder
09. maj 2004 - 21:14 Der er 6 kommentarer og
1 løsning

udskriv en hel form

jeg kan ikke udsrive hele formen, kun det som er vist på skermen, hjælp mig !!
Avatar billede stone Forsker
09. maj 2004 - 22:19 #1
Form1.Print;

// udskriver formen uden border og titelLinie
Avatar billede freesite Nybegynder
09. maj 2004 - 22:24 #2
Ja men kun det som er synligt på skærmen
Avatar billede freesite Nybegynder
09. maj 2004 - 22:28 #3
jeg har lavet en form med scroll, og der laves printscreen når man bruger koden form1.print;
Avatar billede borrisholt Novice
10. maj 2004 - 08:28 #4
Så må du tegne din form over på en tBitmap og så skrive den ud.

jens B
Avatar billede freesite Nybegynder
10. maj 2004 - 09:03 #5
hvordan ¨kan jeg tegne en formular over i et bitmap, når værdierne afhænger af hvad der indtastes
Avatar billede hrc Mester
14. maj 2004 - 23:44 #6
Dit program er sandsynligvis noget grafisk på skærmen (knapper, listbokse og lignende) - og så kan du kopiere udsnit ud derfra. Hvis du kigger på implementeringen af Print (i form-unitten), kan du se, at der kopieres fra form til bitmap netop som Borrisholt foreslog.

procedure TCustomForm.Print;
var
  FormImage: TBitmap;
  Info: PBitmapInfo;
  InfoSize: DWORD;
  Image: Pointer;
  ImageSize: DWORD;
  Bits: HBITMAP;
  DIBWidth, DIBHeight: Longint;
  PrintWidth, PrintHeight: Longint;
begin
  Printer.BeginDoc;
  try
    FormImage := GetFormImage;
    Canvas.Lock;
    try
      { Paint bitmap to the printer }
      with Printer, Canvas do
      begin
        Bits := FormImage.Handle;
        GetDIBSizes(Bits, InfoSize, ImageSize);
        Info := AllocMem(InfoSize);
        try
          Image := AllocMem(ImageSize);
          try
            GetDIB(Bits, 0, Info^, Image^);
            with Info^.bmiHeader do
            begin
              DIBWidth := biWidth;
              DIBHeight := biHeight;
            end;
            case PrintScale of
              poProportional:
                begin
                  PrintWidth := MulDiv(DIBWidth, GetDeviceCaps(Handle,
                    LOGPIXELSX), PixelsPerInch);
                  PrintHeight := MulDiv(DIBHeight, GetDeviceCaps(Handle,
                    LOGPIXELSY), PixelsPerInch);
                end;
              poPrintToFit:
                begin
                  PrintWidth := MulDiv(DIBWidth, PageHeight, DIBHeight);
                  if PrintWidth < PageWidth then
                    PrintHeight := PageHeight
                  else
                  begin
                    PrintWidth := PageWidth;
                    PrintHeight := MulDiv(DIBHeight, PageWidth, DIBWidth);
                  end;
                end;
            else
              PrintWidth := DIBWidth;
              PrintHeight := DIBHeight;
            end;
            StretchDIBits(Canvas.Handle, 0, 0, PrintWidth, PrintHeight, 0, 0,
              DIBWidth, DIBHeight, Image, Info^, DIB_RGB_COLORS, SRCCOPY);
          finally
            FreeMem(Image, ImageSize);
          end;
        finally
          FreeMem(Info, InfoSize);
        end;
      end;
    finally
      Canvas.Unlock;
      FormImage.Free;
    end;
  finally
    Printer.EndDoc;
  end;
end;

Uden at have testet noget vil jeg sige at det umiddelbart ser ud som om det er nedenstående procedure der skal kopieres/modificeres:

function TCustomForm.GetFormImage: TBitmap;
var
  Ofs: Integer;
begin
  Result := TBitmap.Create;
  try
    Result.Width := ClientWidth;
    Result.Height := ClientHeight;
    Result.Canvas.Brush := Brush;
    Result.Canvas.FillRect(ClientRect);
    Result.Canvas.Lock;
    try
      if GetWindowLong(Handle, GWL_STYLE) and WS_BORDER <> 0 then
        Ofs := -1  // Don't draw form border
      else
        Ofs := 0;  // There is no border
      PaintTo(Result.Canvas.Handle, Ofs, Ofs);
    finally
      Result.Canvas.Unlock;
    end;
  except
    Result.Free;
    raise;
  end;
end;
Avatar billede freesite Nybegynder
15. maj 2004 - 14:56 #7
tak for hjælpen det vil jeg prøve
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