프로그램 초보 심해영 또 다시 질문을 올립니다. 고수님의 조언 부탁드립니다.
프린트에는 퀵레포트를 이용하는 방법두 있구 Printers.pas를 이용한 법두 있는것은 알고 있습니다.
그런데..
Printers.pas를 이용할때....실시간 즉, 원하는 변수의 값을 한라인씩...프린터로 출력하고 싶은 데...역시 실력이 모라라서...
이를 테면
a:변수값 b:변수값 c:변수값 d:변수값 e:변수값 f:변수값 g:변수값 h:변수값 을 계속해서 한줄씩 라인단위로 프린트하는 것입니다. 물론 변수값은 계속해서 변하구요...
좀 어려운가요? 질문이...
한줄씩계속해서 즉,,, 연이어서...출력하고 싶습니다..
고수님의 시원한 답변을 부탁드립니다......
--- 초보 프로그래머 심해영 올림 ---
실시간이라는게 프린트는 계속 켜져 있고 프로그램에서는 사용자가 원할때가 아닌
어떤 조건에 만족하면 바로 출력하는것 같은데...
그렇다 하더라도 이걸 프린트로 바로 보내는건 별로 좋아 보이지 않네요...
바로 보내 버리면 ( 예 LPT1 ) 이 포트가 닫혀 있을때나 오류가 났을때에 대한 대비를
프로그램에서 해 주어야 합니다....
이렇게 하실려면 그냥 LPT1에다가 보내 버리시면 됩니다..
AssignFile(PrnPort,'LPT1');
Rewrite(PrnPort);
Write(PrnPort,'출력하자');
CloseFile(PrnPort);
요렇게 하시면 됩니다...
가장 간단하게 출력할수 있는데.. 아까 말했던 부분이 문제가 될 수 있습니다...
그래서 약간 수정을 하면...
var
Prt : TPrinter; // 프린트인건 아시죠??/
ADevice, ADriver, APort : array[0..79] of Char;
ADeviceMode : THandle;
// 위의 4개의 변수는 프린트의 설정을 가져오기 위한것입니다.
begin
Prt := Printer;// 일단 프린트 가져오고..
Prt.PrinterIndex := -1;
// 기본프린트 선택합니다... ( 여기서 폼하나 띄워서 선택할 수 있게 하면
더 좋겠죠???
{
for i := 0 to prt.printers.count -1 do
cbPrt.Items.Add(prt.printers[i]);
} 요렇게 하시면 프린트 이름들이 들어가고 그냥 보여주시고 출력할때 index를 맞
춰주면 됩니다.
Prt.GetPrinter(ADevice, ADriver, APort, ADeviceMode);
// 프린트의 설정을 가져 옵니다.
if not OpenPrinter(ADevice, HPrt, nil) then Exit;
if HPrt = 0 then Exit;
그런다음에 이놈을 열죠..
// 이제 출력-----------------------------
WritePrinter(HPrt, PChar(Data), Length(Data), PrintCount);
이놈도 따로 프린트를 위한 부분을 만드시는게 좋습니다...
ClosePrinter(HPrt);
// 그런다음 끝내면 되죠...
그럼.. 즐거운시간 되세요..
- 하얀까마귀 -
심해영 wrote:
> 프로그램 초보 심해영 또 다시 질문을 올립니다. 고수님의 조언 부탁드립니다.
> 프린트에는 퀵레포트를 이용하는 방법두 있구 Printers.pas를 이용한 법두 있는것은 알고 있습니다.
>
> 그런데..
>
> Printers.pas를 이용할때....실시간 즉, 원하는 변수의 값을 한라인씩...프린터로 출력하고 싶은 데...역시 실력이 모라라서...
>
> 이를 테면
> a:변수값 b:변수값 c:변수값 d:변수값 e:변수값 f:변수값 g:변수값 h:변수값 을 계속해서 한줄씩 라인단위로 프린트하는 것입니다. 물론 변수값은 계속해서 변하구요...
>
> 좀 어려운가요? 질문이...
>
> 한줄씩계속해서 즉,,, 연이어서...출력하고 싶습니다..
>
> 고수님의 시원한 답변을 부탁드립니다......
> --- 초보 프로그래머 심해영 올림 ---
>