::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-07 10:18:48, Hit : 4413, Vote : 718
 TRichEdit 의 선택된 영역만 인쇄하기

Uses richedit;

procedure TForm1.Button1Click(Sender: TObject);
var
  r: TRect;
  richedit_outputarea: TRect;
  printresX, printresY: Integer;
  fmtRange: TFormatRange;
begin
  printer.begindoc;
  try
    with Printer.Canvas do
    begin
      printresX := GetDeviceCaps( handle, LOGPIXELSX);
      printresY := GetDeviceCaps( handle, LOGPIXELSY);
      r:= Rect(
            printresX,            // 1 inch left margin
            printresY * 3 div 2,  // 1.5 inch top margin
            Printer.PageWidth - printresX, // 1 inch right margin
            Printer.PageHeight - printresY * 3 div 2 // 1.5 inch bottom margin
             );

      // Define a rectangle for the rich edit text. The height is set to the
      // maximum. But we need to convert from device units to twips,
      // 1 twip = 1/1440 inch or 1/20 point.
      richedit_outputarea :=
        Rect(  r.left * 1440 div printresX,
               r.top * 1440 div printresY,
               r.right * 1440 div printresX,
               r.bottom* 1440 div printresY );

      // Tell rich edit to format its text to the printer. First set
      // up data record for message:
      fmtRange.hDC := Handle;            // printer handle
      fmtRange.hdcTarget := Handle;     // ditto
      fmtRange.rc := richedit_outputarea;
      fmtRange.rcPage :=
        Rect( 0, 0,
              Printer.PageWidth * 1440 div printresX,
              Printer.PageHeight * 1440 div printresY );
      fmtRange.chrg.cpMin := richedit1.SelStart;
      fmtRange.chrg.cpMax := fmtRange.chrg.cpMin + richedit1.SelLength - 1;

      // format the text
      richedit1.Perform( EM_FORMATRANGE, 1, Longint(@fmtRange));
      // and print it
      richedit1.Perform( EM_DISPLAYBAND, 0, Longint( @fmtRange.rc ));

      // Free cached information
      richedit1.Perform( EM_FORMATRANGE, 0, 0);
    End;
  finally
    printer.enddoc;
  end;
end;

The richedit1.perform( EM_FORMATRANGE call returns the index of the last
character that could be fitted into the passed fmtrange.rc, + 1. So if
multiple pages are required one repeats with fmtrange.chrg.cpMin set to
this value, until the returned character index is richedit1.gettextlen.





  [일반/컴포넌트] TRichEdit 의 선택된 영역만 인쇄하기  김영대 2003/03/07 4413 718
490   [시스템] CPU 종류 구하기  김영대 2003/03/07 4768 1193
489   [시스템] 사운드파일 없이 PC 스피커로 음악연주  김영대 2003/03/07 4598 923
488   [네트웍/인터넷] 프로그램으로 네트워크 드라이브 연결/해제  김영대 2003/03/07 6669 1245
487   [일반/컴포넌트] 윈도우즈 종료와 같은 그늘진 화면 만들기  김영대 2003/03/07 3120 836
486   [일반/컴포넌트] 아이콘 사이트  김영대 2003/03/07 3597 1065
485   [시스템] 윈도우즈 시스템 표준 폰트 구하기  김영대 2003/03/07 2999 846
484   [네트웍/인터넷] RS232 통신  김영대 2003/03/07 6879 1853
483   [일반/컴포넌트] 주어진 영역의 화면 캡처  김영대 2003/03/07 3546 1008
482   [일반/컴포넌트] 숫자를 영문 표기로 바꾸기  김영대 2003/03/07 4228 886
481   [일반/컴포넌트] 숫자를 한글 표기로 바꾸기  김영대 2003/03/07 3585 927
480   [일반/컴포넌트] RichEdit 의 내용을 Bitmap 으로 만들기 2  김영대 2003/03/07 3742 979
479   [COM/OLE] MS-WORD 종료시키기  김영대 2003/03/07 2639 742
478   [윈도우즈 API] 시스템 사운드 연주하기  김영대 2003/03/07 4766 1295
477   [일반/컴포넌트] Algorithm to sort a TStringGrid #2  김영대 2003/03/07 4746 1196
476   [윈도우즈 API] 외부 프로그램의 좌표,상태 구하기  김영대 2003/03/07 3149 1013
475   [윈도우즈 API] 윈도우즈 Telnet 으로 호스트 접속하기  김영대 2003/03/07 4056 1117
474   [일반/컴포넌트] 특정한 폴더로 이동한 DOS 창 띄우기  김영대 2003/03/07 4084 1134
473   [시스템] DOS 명령어 실행하고 결과 받아오기  김영대 2003/03/07 6518 1548
472   [윈도우즈 API] NT의 현재 user가 administrative privilege 를 가지고 있는지?  김영대 2003/03/07 2955 808
471   [일반/컴포넌트] 두개의 StringGrid sync 마추기  김영대 2003/03/07 3681 1016
470   [일반/컴포넌트] 윈도우의 title bar 폰트 바꾸기  김영대 2003/03/07 3204 839
469   [네트웍/인터넷] 네트워크 공유 설정/해제 하기 (Windows 9x)  김영대 2003/03/07 4346 1078
468   [네트웍/인터넷] 네트워크 공유 정보 읽어오기 (WIndows 9x)  김영대 2003/03/07 3623 968
467   [일반/컴포넌트] 눌려진 키보드 키의 명칭 구하기  김영대 2003/03/07 7349 1437
466   [윈도우즈 API] Windows98 에서의 SetForegroundWindow  김영대 2003/03/07 5714 1489
465   [윈도우즈 API] Task bar 에 나타나지 않는 프로그램 만들기  김영대 2003/03/07 5126 1508
464   [COM/OLE] Outlook 사용하기  김영대 2003/03/07 3445 1088
463   [시스템] 지정한 drive가 CD-ROM 인지 검사하기  김영대 2003/03/07 6270 1649
462   [시스템] 어떤 어플리케이션이 시작 되는지 hook으로 알아내기  김영대 2003/03/07 5067 1400
461   [윈도우즈 API] 윈도우즈 탐색기의 아이콘 뽑아내서 사용하기  김영대 2003/03/07 6435 1886
460   [윈도우즈 API] System Images  김영대 2003/03/07 6271 1827
459   [윈도우즈 API] 컴퓨터/파일/폴더 찾기 화면 띄우기  김영대 2003/03/07 6139 1470
458   [일반/컴포넌트] Unix-format time 을 TDateTime 로 바꾸기  김영대 2003/03/07 4078 1121
457   [일반/컴포넌트] 실행시 component 를 Move/Resize 시키기  김영대 2003/03/07 3286 951
456   [일반/컴포넌트] TMemo 를 화면크기로 인쇄하기  김영대 2003/03/07 2675 692
455   [일반/컴포넌트] SpeedButton 에 OnMouseEnter/OnMouseExit 이벤트 넣기  김영대 2003/03/07 3921 1041
454   [윈도우즈 API] 키보드의 Scroll Lock 켜기/끄기  김영대 2003/03/07 4001 1135
453   [데이터베이스] table packing 하기  김영대 2003/03/07 3430 999
452   [윈도우즈 API] reboot Windows  김영대 2003/03/07 3853 1119

[이전 10개] [1]..[11][12] 13 [14][15][16][17][18][19][20]..[25] [다음 10개]
 

Copyright 1999-2021 Zeroboard / skin by zero