Q&A

  • 벌써 세번째입니다...제발 도와주세요....
[질문]프린터 할때 'Printer selected is not valid' 에러에 대해서...


운영체제 : windows 98
사용DB : 오라클 8.1.7
사용Tool : 델파이 5

PrinterDialog 창에서 여러 프린터중에서 연속용지로 프린터하는 프린터를 선택하고 프린터를 시작하게 되면 위와 같은 에러가 납니다.
도대체 왜 에러가 나는지 알 수가 없네요.... 고수님들의 답변좀 부탁드립니다.

위에 해당되는 소스만 올립니다...

procedure TFM_T11101.BB_PrintSetupClick(Sender: TObject);
begin
  if PS_PrintSetup.Execute then
    FM_T11101R.QR_QuickReport.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
end;



if RB_Paper_136.Checked = True then     {136 용지선택}
begin
   LST_SelectPaperSize := LST_PaperSize_136;  --> 136칼럼을 선택하면
end;                                                                    '136'값이 대입.



if LST_SelectPaperSize = '136' then
  begin
            if QR_QuickReport.Page.Orientation = poPortrait then
              QR_QuickReport.Page.Orientation := poLandscape
            else QR_QuickReport.Page.Orientation := poPortrait;

            QR_QuickReport.Page.PaperSize := Custom; // Appended
            QR_QuickReport.Page.Length := 279;
            QR_QuickReport.Page.Width := 381;
            QR_QuickReport.Page.BottomMargin := 10;
  end;


if RB_Print_Printer.Checked then begin
  with FM_T11101R.QR_QuickReport do begin
     PrinterSettings.Copies    :=
          StrToInt(FloatToStr(NU_PrintCnt.Value));         {인쇄매수}
     PrinterSettings.FirstPage :=
          StrToInt(FloatToStr(NU_PrintRangeFrom.Value));   {인쇄범위-시작}
     PrinterSettings.LastPage  :=
          StrToInt(FloatToStr(NU_PrintRangeTo.Value));     {인쇄범위-종료}
     Print;   <--- 이 부분에서 에러납니다.
  end;
end;


** 참고 : 화면으로 출력시에는 에러가 나지않고 프린터로 출력시에만 에러납니다. 또한, 다른 프린터로 프린터할땐 에러가 나지 않습니다.
그리고, 용지규격을 B4로 하면 에러가 나지않습니다. 꼭 136칼럼으로해서 프린터할때만 에러가 납니다.

1  COMMENTS
  • Profile
    한만교 2003.03.13 18:42
    이건 마지막 부분에서 이상한데요...첫페이지와 마지막 페이지를 나타내주는 부분에서요....
         PrinterSettings.FirstPage :=   StrToInt(FloatToStr(NU_PrintRangeFrom.Value));   {인쇄범위-시
    위와 같이 하면 페이지 값이 이상하게 들어가지 않는가요?
    이부분을 아래처럼 한번 수정해서 해 보시지 않으시겠어요?
    Round(NU_PrintRangeFrom.Value)  이렇게요..
    꼭 맞다고는 할 수 없지만..이거 역시 에러요인이 될수도 있습니다..
    왜냐하면 지금 FloatToStr함수를 쓰신거로바서는 인티저값이 아닌거 같은데요..이럴때 여기에 들어가는 값이 1이라면 1.00이 들어가거든요...
    아니면 1.00000023뭐 이런식으로 들어가는 경우가 생기니까...한번 Round함수를 사용해 보시지요..
    뭐 허접한 답변이네요...