Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
텍스트 인쇄?
으아... 미치겠습니다.
인쇄를 하기 위해서
매핑모드 바꾼거 까지는 좋았습니다.
텍스트를 인쇄하기 전까지는 말이죠... -.-;;
그런데... 텍스트가 지 마음대로 인쇄가 되는 것입니다.
이 난관을 어떻게 극복해야 할까요?
알려 주세용...
저는 델파이의 Printer객체를 사용해서 인쇄를 하려 합니다.
이 질문을 윈도우API로 분류해도 되는지 몰겠네요...
그럼...
- 글을 읽어 주셔서 감사합니다.
7
COMMENTS
황하강
•
1999.06.23 04:00
[질문]기본 프린터의 온라인 상태 체크...
델파이 2.0 에서 기본 프린터가 켜져있는지, 온라인 상태인지를 체크하는
명령어가 무엇인가요? (혹, 명령어가 없다면 어떻게 해야하나요?)
0
0
삭제
수정
댓글
남윤혁
•
1999.04.16 02:34
-.-;; 무슨말인지 잘모르겠네요...
다시 정리해서 올립니다.
아래의 함수는 그리기 전용함수입니다.
이곳에서 모든것을 그리죠...
procedure DrawContent( c: TCanvas );
begin
with c do
begin
Rectangle( 150, 50, 250, 400 );
MoveTo( 100, 100 );
LineTo( 300, 300 );
Font.Size:= 10;
TextOut( 200, 200, '테스트' );
Font.Size:= 20;
TextOut( 200, 400, '테스트' );
end;
end;
미리보기 버튼을 누르면 다음과 같이 화면에 나옵니다.
procedure TfrmPrinter04.btnDrawClick(Sender: TObject);
var
sWin, sView: TSize;
begin
SetMapMode( imgArea.Canvas.Handle, MM_ISOTROPIC );
SetWindowExtEx( imgArea.Canvas.Handle, 300, 300, @sWin );
SetViewportExtEx( imgArea.Canvas.Handle, 300, 300, @sWin );
DrawContent(imgArea.Canvas);
end;
여기서 imgArea는 TImage컴포넌트죠...
그리고 인쇄버튼을 누르면
procedure TfrmPreview.btnPrintingClick(Sender: TObject);
var
XPI, YPI: Integer;
sWin, sView: Size;
begin
if prtDlg.Execute then
begin
Printer.BeginDoc;
XPI:= GetDeviceCaps( Printer.Canvas.Handle, LOGPIXELSX );
YPI:= GetDeviceCaps( Printer.Canvas.Handle, LOGPIXELSY );
SetMapMode( Printer.Canvas.Handle, MM_ISOTROPIC );
SetWindowExtEx( Printer.Canvas.Handle, XPI, YPI, @sWin );
SetViewportExtEx( Printer.Canvas.Handle, XPI, YPI, @sWin );
DrawContent( Printer.Canvas );
Printer.EndDoc;
end;
end;
요렇게 실행을 하죠...
결과는 인쇄하면 폰트가 무자게 커진다는 말씀... -.-;
이 문제를 어떻게 해결할까요?
폰트에 어떤 조작을 가해야 하지 않나요?
알려주세요...
프리즈~
0
0
삭제
수정
댓글
최석기
•
1999.06.23 17:28
황하강 께서 말씀하시기를...
> [질문]기본 프린터의 온라인 상태 체크...
> 델파이 2.0 에서 기본 프린터가 켜져있는지, 온라인 상태인지를 체크하는
> 명령어가 무엇인가요? (혹, 명령어가 없다면 어떻게 해야하나요?)
예전에 김영대님의 팁을 받아 두엇던게 있어서 올려 드립니다..
참고 하세요..
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// 프린터의 상태를 리턴하는 함수
function PrinterStatus(const APort: Word): Byte; assembler;
{
AH 레지스터의 상태값(8 bit) :
0 - time out
1 - unused
2 - unused
3 - I/O error
4 - On line selected
5 - Out of paper
6 - Acknowledge
7 - Not Busy
}
begin
asm
mov ah, 2 { 서비스 2 - Printer Status }
mov dx, APort { 프린터 포트 - 0 부터 시작 }
int 17h { 프린터 서비스 인터럽트 }
mov al, ah { Set function value }
end;
end;
// 프린터의 준비 상태를 리턴하는 함수
function PrinterReady(APort: Word): Boolean;
{APort : 0=LPT1, 1=LPT2, etc }
const
pTimeOut= $01;
pIOError= $08;
pNoPaper= $20;
pNotBusy= $80;
pTestAll= pTimeOut + pIOError + pNoPaper;
begin
PrinterReady := (PrinterStatus(APort) and pTestAll) = $00;
end;
// 프린터 초기화 프로시저
procedure InitPrinter(const APort: word); assembler;
begin
asm
mov ah, 1
mov bx, APort
int 17h
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if PrinterReady(1) = True then // LPT1
ShowMessage('Printer Ready')
else
// 에러 발생시 위의 PrinterStatus 함수를 호출하여 에러 상태를
// 알 수 있습니다
ShowMessage('Printer off or unplugged');
end;
end.
0
0
삭제
수정
댓글
남윤혁
•
1999.04.16 00:37
다시 질문입니다.
제가
XPI:= GetDeviceCaps( Canvas.Handle, LOGPIXELSX );
YPI:= GetDeviceCaps( Canvas.Handle, LOGPIXELSY );
SetMapMode( Canvas.Handle, MM_ISOTROPIC );
SetWindowExtEx( Canvas.Handle, 100, 100, @sWin );
SetViewportExtEx( Canvas.Handle, XPI, YPI, @sWin );
이 코드를 이용해서 인쇄를 했습니다.
문제는 화면에 뿌렸을 때는 폰트의 사이즈에 따라
화면의 비율에 따라 자연스럽게 나오지만
인쇄로 들어가면 비율에 맞지 않는 이미지가
나온다는 것이죠...
이 문제를 해결하려면 어떻게 해야 할까요?
T.T
무진장 중요한 문제랍니다.
그럼.. 고수님들 부탁드립니다.
0
0
삭제
수정
댓글
황하강
•
1999.06.24 00:44
최석기 께서 말씀하시기를...
> 황하강 께서 말씀하시기를...
> > [질문]기본 프린터의 온라인 상태 체크...
> > 델파이 2.0 에서 기본 프린터가 켜져있는지, 온라인 상태인지를 체크하는
> > 명령어가 무엇인가요? (혹, 명령어가 없다면 어떻게 해야하나요?)
>
> 예전에 김영대님의 팁을 받아 두엇던게 있어서 올려 드립니다..
> 참고 하세요..
>
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
> Dialogs, StdCtrls;
>
> type
> TForm1 = class(TForm)
> Button1: TButton;
> procedure Button1Click(Sender: TObject);
> private
> { Private declarations }
> public
> { Public declarations }
> end;
>
> var
> Form1: TForm1;
>
> implementation
> {$R *.DFM}
>
> // 프린터의 상태를 리턴하는 함수
> function PrinterStatus(const APort: Word): Byte; assembler;
> {
> AH 레지스터의 상태값(8 bit) :
> 0 - time out
> 1 - unused
> 2 - unused
> 3 - I/O error
> 4 - On line selected
> 5 - Out of paper
> 6 - Acknowledge
> 7 - Not Busy
> }
> begin
> asm
> mov ah, 2 { 서비스 2 - Printer Status }
> mov dx, APort { 프린터 포트 - 0 부터 시작 }
> int 17h { 프린터 서비스 인터럽트 }
> mov al, ah { Set function value }
> end;
> end;
>
> // 프린터의 준비 상태를 리턴하는 함수
> function PrinterReady(APort: Word): Boolean;
> {APort : 0=LPT1, 1=LPT2, etc }
> const
> pTimeOut= $01;
> pIOError= $08;
> pNoPaper= $20;
> pNotBusy= $80;
> pTestAll= pTimeOut + pIOError + pNoPaper;
> begin
> PrinterReady := (PrinterStatus(APort) and pTestAll) = $00;
> end;
>
> // 프린터 초기화 프로시저
> procedure InitPrinter(const APort: word); assembler;
> begin
> asm
> mov ah, 1
> mov bx, APort
> int 17h
> end;
> end;
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> if PrinterReady(1) = True then // LPT1
> ShowMessage('Printer Ready')
> else
> // 에러 발생시 위의 PrinterStatus 함수를 호출하여 에러 상태를
> // 알 수 있습니다
> ShowMessage('Printer off or unplugged');
> end;
>
> end.
>
>
[다시 질문]
프로그램 예제 잘 받아서 테스트를 해보았습니다.
그런데 PrinterStatus function 문에서 뭔가 문제가 있는것 같은데...
제가 분석을 잘못한것인지 아니면 테스트 환경이 잘못되었는지를
알려주세요.( 나 원참 줘도 못먹네여...)
감사합니다.
0
0
삭제
수정
댓글
이정욱
•
1999.04.16 01:06
화면 출력 후
XPI := GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX);
YPI := GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY);
로 다시 계산 하신후 출력해 보세요.
남윤혁 wrote:
> 다시 질문입니다.
>
> 제가
>
> XPI:= GetDeviceCaps( Canvas.Handle, LOGPIXELSX );
> YPI:= GetDeviceCaps( Canvas.Handle, LOGPIXELSY );
> SetMapMode( Canvas.Handle, MM_ISOTROPIC );
> SetWindowExtEx( Canvas.Handle, 100, 100, @sWin );
> SetViewportExtEx( Canvas.Handle, XPI, YPI, @sWin );
>
> 이 코드를 이용해서 인쇄를 했습니다.
>
> 문제는 화면에 뿌렸을 때는 폰트의 사이즈에 따라
>
> 화면의 비율에 따라 자연스럽게 나오지만
>
> 인쇄로 들어가면 비율에 맞지 않는 이미지가
>
> 나온다는 것이죠...
>
> 이 문제를 해결하려면 어떻게 해야 할까요?
>
> T.T
>
> 무진장 중요한 문제랍니다.
>
> 그럼.. 고수님들 부탁드립니다.
>
>
0
0
삭제
수정
댓글
안치봉
•
1999.04.15 23:28
남윤혁 wrote:
> 으아... 미치겠습니다.
>
> 인쇄를 하기 위해서
>
> 매핑모드 바꾼거 까지는 좋았습니다.
>
> 텍스트를 인쇄하기 전까지는 말이죠... -.-;;
>
> 그런데... 텍스트가 지 마음대로 인쇄가 되는 것입니다.
>
> 이 난관을 어떻게 극복해야 할까요?
>
> 알려 주세용...
>
> 저는 델파이의 Printer객체를 사용해서 인쇄를 하려 합니다.
>
> 이 질문을 윈도우API로 분류해도 되는지 몰겠네요...
>
> 그럼...
>
>
> - 글을 읽어 주셔서 감사합니다.
안녕하세요!.
질문의 범위가 너무 광범위 합니다. 질문을 하실때는 되도록 이면
이런 이런 코드가 있는데 이런 부분에서 문제가 생기더라 식으로 작성 해주시면
감사하겠습니다.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
안창주
•
1999.06.23 20:15
1
COMMENTS
/
0
LIKES
Alias의 개념 및 용도를 알고 싶어요
신인재
•
1999.06.23 21:02
안창주 께서 말씀하시기를... > 저는 델파이 책을 처음보는 초보자입니다. > 1데이타베이스에서Alias라는...
이종진
•
1999.06.23 18:46
1
COMMENTS
/
0
LIKES
DBGrid에서 text값을 변경해주는 방법을 알고싶습니다
최석기
•
1999.06.23 20:25
이종진 께서 말씀하시기를... > DBGrid에서 text값을 다른값으로 바꿔주는 방법을 알고 싶습니다. > ...
VMNT
•
1999.06.23 15:12
5
COMMENTS
/
0
LIKES
UNION문을 사용하면서 UpdateSQL을....
이슬
•
1999.04.15 03:34
1. ParamByName과 FieldByName의 차이점이 무엇인지요? 2. 폼에 성별(남,여:radiobutton) 체크가 있는데...
김영해
•
1999.04.17 08:00
이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
신호성
•
1999.04.16 01:36
> 2. 폼에 성별(남,여:radiobutton) 체크가 있는데, DB는 Alpha로 2자리 만들었습니다. > 근데, DBGrid에...
박종모
•
1999.04.15 04:44
이슬 wrote: > 1. ParamByName과 FieldByName의 차이점이 무엇인지요? > > 2. 폼에 성별(남,여:radiobu...
글쎄요
•
1999.04.15 05:41
추가로 답변합니다. 2번째 건데 답변이 잘 못된 것 같아요. 가장 좋은 방법은 DBGRID 대신에 STRINGGRID...
이용민
•
1999.06.23 12:51
1
COMMENTS
/
0
LIKES
프로시저나 함수에서의 sender 의 의미 ?
하남수
•
1999.06.23 19:46
이용민 께서 말씀하시기를... > 안녕하십니까 ? (주) 천의무봉의 이용민입니다. > 작업하다 간간히 의문...
정남용
•
1999.04.16 01:29
3
COMMENTS
/
0
LIKES
인스톨쉴드로 BDE를 배포하는데
김정선
•
1999.04.23 00:51
저두 같은 문제로 올렸는데 고맙게도 web@ns.nilex.co.kr라는 분이 메일을 보내왔더라구요.. Autoexec.bat...
이정욱
•
1999.04.17 02:26
저도 역시 이런 문제 때문에 고생을 한적이 있었습니다. 전 엑세스 DB를 사용했을때 문제였죠. 그래서 결...
김정선
•
1999.04.16 22:56
저두 같은 문제가 있었어요.. 아시는 분 꼭좀 가르쳐 주세요 전 델파이4.0 오라클 8.0.5버젼을 가지고 ...
francis
1999.06.23 12:22
0
COMMENTS
/
0
LIKES
도스용 프로그램에서..
이용민
•
1999.06.23 09:27
2
COMMENTS
/
0
LIKES
감사합니다. 추가적인 중요한 질문입니다.
아무게
•
1999.06.23 19:58
이용민 께서 말씀하시기를... > 다음과 같은 의문을 정리해 보겠습니다. > > 1. 그렇다면 참조가 ...
이용민
•
1999.06.24 11:23
(주) 천의무봉의 이용민입니다. 선생의 말씀 고맙습니다. 그런데 깨끗한 정리는 안되는 군요. 자질을 말...
화랑
•
1999.04.16 01:29
4
COMMENTS
/
0
LIKES
[Q]프린터로 가는 데이타를 잡을수 있을까요?
이정욱
•
1999.04.16 02:17
아무래도 케이블을 그냥 두갈래로 뽑으신것 같군요. 그렇게 하면 아마도 제데로 안될것 같네요... 그것보...
화랑
•
1999.04.16 03:06
답변 감사합니다.. 문제는 제가 그 서버를 건드릴수가 없습니다. 지금 현재 나와있는 것은 프린터로 가...
이정욱
•
1999.04.16 05:08
프린터포트를 제어하는것은 문제가 없습니다. 그것을 지원하는 컴포넌트를 본적이 있는데.... 아마도 찾아...
화랑
•
1999.04.17 18:11
매번 감사합니다.. 저기 한가지만 더 하고 싶은데.. 프린트는 앱슨을 쓰거든요.. 혹시 서로 전달되는 ...
강민주
•
1999.06.23 09:18
1
COMMENTS
/
0
LIKES
qr에서 테이블 2개 출력하려면?
박흥태
•
1999.06.25 03:38
강민주 께서 말씀하시기를... > 안녕하세요.^^; > 외상장부처리를 위해 외상테이블과 수금 테이블로 > 2...
홍희석
1999.06.23 05:52
0
COMMENTS
/
0
LIKES
정말 감사합니다
남윤혁
•
1999.04.15 22:13
4
COMMENTS
/
0
LIKES
텍스트 인쇄?
남윤혁
•
1999.04.16 02:34
-.-;; 무슨말인지 잘모르겠네요... 다시 정리해서 올립니다. 아래의 함수는 그리기 전용함수입니다. ...
남윤혁
•
1999.04.16 00:37
다시 질문입니다. 제가 XPI:= GetDeviceCaps( Canvas.Handle, LOGPIXELSX ); YPI:= GetDeviceCaps( ...
이정욱
•
1999.04.16 01:06
화면 출력 후 XPI := GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX); YPI := GetDeviceCaps(Printe...
안치봉
•
1999.04.15 23:28
남윤혁 wrote: > 으아... 미치겠습니다. > > 인쇄를 하기 위해서 > > 매핑모드 바꾼거 까지는 좋았...
박성훈
•
1999.06.23 05:39
1
COMMENTS
/
0
LIKES
[긴급]데이터가 저장되지 않는 이유...
이용민
•
1999.06.23 12:56
질문에 대한 답은 아니지만 얼핏보이기에... 선생이 쓰시는 이코드는 다음과 같이 간단히 할 수 있거든...
고부성
•
1999.04.16 00:05
1
COMMENTS
/
0
LIKES
메모 컴포넌트 말인데여...
이정욱
•
1999.04.16 01:04
음.. 두가지 가능성이 있습니다. 먼저 첫째, Path가 잘못되어있을 경우이죠. 실제로 C:sample.txt 에 저...
이현옥
•
1999.06.23 05:26
1
COMMENTS
/
0
LIKES
EolesysError in module ....
김영해
•
1999.06.23 08:22
이현옥 께서 말씀하시기를... > 급하게 도사님들의 처방을 기다립니다. > > 프로그램을 실행시키면 > ...
이정석
•
1999.04.16 00:10
1
COMMENTS
/
0
LIKES
ActiveX Form을 사용한 WEB 프로그램...
신인재
•
1999.04.16 00:56
이정석 wrote: > 안녕하십니까? > ActvieX Form으로 웹에서 데이타베이스를 사용하는 프로그램을 > 만...
변상준
•
1999.06.23 04:02
1
COMMENTS
/
0
LIKES
델파이4pro 와 오라클 연결 어떻게 하나요
류성호
•
1999.06.23 05:13
변상준 께서 말씀하시기를... > 델파이4 프로페셔널 버전에서 오라클 7.3.2 연결을 하는데 준비 사항 및 ...
남윤혁
•
1999.04.15 22:13
7
COMMENTS
/
0
LIKES
텍스트 인쇄?
으아... 미치겠습니다. 인쇄를 하기 위해서 매핑모드 바꾼거 까지는 좋았습니다. 텍스트를 인쇄하기 전까지는 말이죠... -.-;; 그런데... 텍스트가 지 마음대로 인쇄가 되는 것입니다. 이 난관을 어떻게 극복해야 할까요? 알려 주세용... ...
황하강
•
1999.06.23 04:00
[질문]기본 프린터의 온라인 상태 체크... 델파이 2.0 에서 기본 프린터가 켜져있는지, 온라인 상태인지...
남윤혁
•
1999.04.16 02:34
-.-;; 무슨말인지 잘모르겠네요... 다시 정리해서 올립니다. 아래의 함수는 그리기 전용함수입니다. ...
최석기
•
1999.06.23 17:28
황하강 께서 말씀하시기를... > [질문]기본 프린터의 온라인 상태 체크... > 델파이 2.0 에서 기본 프...
남윤혁
•
1999.04.16 00:37
다시 질문입니다. 제가 XPI:= GetDeviceCaps( Canvas.Handle, LOGPIXELSX ); YPI:= GetDeviceCaps( ...
황하강
•
1999.06.24 00:44
최석기 께서 말씀하시기를... > 황하강 께서 말씀하시기를... > > [질문]기본 프린터의 온라인 상태 체크...
이정욱
•
1999.04.16 01:06
화면 출력 후 XPI := GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX); YPI := GetDeviceCaps(Printe...
안치봉
•
1999.04.15 23:28
남윤혁 wrote: > 으아... 미치겠습니다. > > 인쇄를 하기 위해서 > > 매핑모드 바꾼거 까지는 좋았...
임선주
1999.06.23 03:11
0
COMMENTS
/
0
LIKES
OLE자동화서버 구현시 TTable 또는 TQuery를 넘길려면
김민오
•
1999.06.23 02:49
2
COMMENTS
/
0
LIKES
파라독스사용시 에러
이정석
•
1999.04.16 00:10
안녕하십니까? ActvieX Form으로 웹에서 데이타베이스를 사용하는 프로그램을 만들려고 합니다. 아시겠...
신인재
•
1999.04.16 00:56
이정석 wrote: > 안녕하십니까? > ActvieX Form으로 웹에서 데이타베이스를 사용하는 프로그램을 > 만...
고부성
•
1999.04.16 00:05
2
COMMENTS
/
0
LIKES
메모 컴포넌트 말인데여...
김민오
•
1999.06.23 02:45
네트웍으로 연결된 파라독스가 엑세스 바이올레이션과 파라이 일치하지 않느다고 에러가 나옵니다. sql문...
이정욱
•
1999.04.16 01:04
음.. 두가지 가능성이 있습니다. 먼저 첫째, Path가 잘못되어있을 경우이죠. 실제로 C:sample.txt 에 저...
남윤혁
1999/04/15 22:13
Views
253
Likes
0
Comments
7
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
델파이 2.0 에서 기본 프린터가 켜져있는지, 온라인 상태인지를 체크하는
명령어가 무엇인가요? (혹, 명령어가 없다면 어떻게 해야하나요?)