[C con Clase] problema de impresion

Tanburi Dario tamburi en southlink.com.ar
Sab Dic 2 17:04:47 CET 2006


Hola 
tengo un problema de impresion que detallo - trabajo con MFC VC 6.0 ++ MS Wxp -:
imprimo dos hojas la primera, se imprime correctamente. La segunda se imprime mal , no aparece los encabezados que corresponde al membrete, identificación de orden y planilla de mecanizado, tambien los detalles de la planilla de mecanizado - item, nom. Pieza, Cod. Pieza, etc, etc no salen bien encolumnados como en la primera impresion.
Ademas en presentación preliminar cuando tomo alguna accion de acercar o alejar o ver una sola pagina, desaparece el contenido 
No se que ocasiona este error, mas abajo adjunto el codigo; para cualquir comentario.
Muchas gracias
Dario

void CMetalurgicaView::OnPrint(CDC* pDC, CPrintInfo* pInfo) 
{

 pDC->SetMapMode(MM_LOMETRIC);

 CFont fntMainTitle, fntSubTitle, 
 fntSectTitle, fntLabel, fntResult;
 int left = 15, top = -10;
 TEXTMETRIC tm;
 CPen penLine2, penLine1;
 CBrush brsGray;

/////////MEMBRETE
 VERIFY(fntMainTitle.CreateFont(110, 0, 0, 0, FW_BOLD,
    FALSE, FALSE, 0, ANSI_CHARSET,
    OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY,
    DEFAULT_PITCH | FF_SWISS,
    TEXT("Times New Roman")));
 CFont *fntDefault = pDC->SelectObject(&fntMainTitle);
 pDC->GetTextMetrics(&tm);

 pDC->SetTextColor(RGB(0, 0, 0));
 pDC->SetBkMode(TRANSPARENT);
 pDC->SetTextCharacterExtra(1);

 pDC->TextOut(left, -top, TEXT("Metalúrgica Bell"));

 VERIFY(fntLabel.CreateFont(60, 0, 0, 0, FW_BOLD,
    FALSE, FALSE, 0, ANSI_CHARSET,
    OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY,
    DEFAULT_PITCH | FF_SWISS,
    TEXT("Times New Roman")));

 fntDefault = pDC->SelectObject(&fntLabel);
 pDC->TextOut(left, -top-120, TEXT("xx"));

 top = top + tm.tmHeight;


 pDC->SetTextCharacterExtra(4);
 VERIFY(fntSubTitle.CreateFont(100, 0, 0, 0, FW_BOLD,
    FALSE, FALSE, 0, ANSI_CHARSET,
    OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY,
    DEFAULT_PITCH | FF_SWISS,
    TEXT("Times New Roman")));
 fntDefault = pDC->SelectObject(&fntSubTitle);
 pDC->TextOut(140, -top-90, TEXT("Orden de Mecanizado"));

 penLine2.CreatePen(PS_SOLID, 2, RGB(0, 0, 0));
 CPen *penOld = pDC->SelectObject(&penLine2);

 pDC->MoveTo(10, -tm.tmHeight - 200);
 pDC->LineTo(4000, -tm.tmHeight - 200);

//////fin de membrete

 VERIFY(fntSectTitle.CreateFont(84, 0, 0, 0, FW_BOLD,
    FALSE, FALSE, 0, ANSI_CHARSET,
    OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY,
    DEFAULT_PITCH | FF_SWISS,
    TEXT("Verdana")));

 penLine1.CreatePen(PS_SOLID, 1, RGB(0, 0, 0));
 penOld = pDC->SelectObject(&penLine1);

 brsGray.CreateSolidBrush(RGB(128, 128, 128));
 CBrush *oldBrush = pDC->SelectObject(&brsGray);

/////////////IDENTIFICACION DE LA ORDEN
 pDC->Rectangle(30, -350, 1400, -450);
 fntDefault = pDC->SelectObject(&fntSectTitle);
 pDC->SetTextColor(RGB(255, 255, 255));
 pDC->TextOut(40, -360, TEXT("Identificación de Orden"));

 VERIFY(fntResult.CreateFont(60, 0, 0, 0, FW_NORMAL,
    FALSE, FALSE, 0, ANSI_CHARSET,
    OUT_DEFAULT_PRECIS,
    CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY,
    DEFAULT_PITCH | FF_SWISS,
    TEXT("Times New Roman")));
 
 CFile archivo(Nombre,CFile::modeRead);

 registroempresa *reg=new registroempresa;
 archivo.SeekToBegin();
 archivo.Read(reg,sizeof(registroempresa));


 pDC->SetTextColor(RGB(0, 0, 0));
 fntDefault = pDC->SelectObject(&fntLabel);
 pDC->TextOut(40, -465, TEXT("Nombre de Empresa: "));
 pDC->TextOut(800, -465, reg->empresa);
 pDC->TextOut(40, -515, TEXT("Domicilio:"));
 pDC->TextOut(800, -515, reg->domicilio);
 pDC->TextOut(40, -565, TEXT("IVA:"));
 if(reg->iva==0)
 {
  pDC->TextOut(800, -565, "Responsable Inscripto");
 }else{
  pDC->TextOut(800, -565, "Responsable No Inscripto");
 }
/////fin identificacion de orden


///////////PLANILLA DE MECANIZADO
 pDC->Rectangle(30, -650, 1400, -750);
 pDC->SetTextColor(RGB(255, 255, 255));
 fntDefault = pDC->SelectObject(&fntSectTitle);
 pDC->TextOut(40, -660, TEXT("Planilla de Mecanizado"));

 ///encabezado de las columnas
 pDC->SetTextColor(RGB(0,0,0));
 fntDefault = pDC->SelectObject(&fntLabel);
 pDC->TextOut(30, -750, TEXT("Item"));
 pDC->TextOut(250, -750, TEXT("Nom. Pieza"));
 pDC->TextOut(720, -750, TEXT("Cod. Pieza"));
 pDC->TextOut(1200, -750, TEXT("$ Unit."));
 pDC->TextOut(1500, -750, TEXT("Minuto de Trabajo"));
 pDC->TextOut(2100, -750, TEXT("Cantidad"));
 pDC->TextOut(2600, -750, TEXT("Sub-Total"));

 ///Linea de encabezado de columnas
 pDC->MoveTo(30, -800);
 pDC->LineTo(4000, -800);
 
 CString numero;
 int i =805;
 float total=0;
 int item=1;
 int pos=0;
 
 
 //////registros
 archivo.SeekToBegin();
/* if(posicionleida!=0)
 {
  archivo.Seek(posicionleida,CFile::begin);
  pos=posicionleida;
  if(pInfo->m_nCurPage==cantidadderegistros)
  {
   imprimirpiedepagina=true;
  }
 }
*/
 while(i<1660&&pos<archivo.GetLength())
 //while(pos<archivo.GetLength())
 {

  archivo.Read(reg,sizeof(registroempresa));
  pDC->SetTextAlign(TA_RIGHT);
  fntDefault = pDC->SelectObject(&fntResult);
  numero.Format("%i",item);
  pDC->TextOut(100, -i, TEXT(numero));
  fntDefault = pDC->SelectObject(&fntLabel);
  fntDefault = pDC->SelectObject(&fntResult);
  
  //Nombre de la Pieza
  pDC->TextOut(360, -i, TEXT(reg->nombrepieza));

  //codiga de pieza
  pDC->TextOut(890, -i, TEXT(reg->codigopieza));

  //$ Unuitario
  numero.Format("%.3f", reg->preciohora/60);
  pDC->TextOut( 1350, -i, TEXT(numero));

  //Minuto de trabajo de la pìeza
  numero.Format("%.2f",reg->minutotrabajo);
  pDC->TextOut( 1650, -i, TEXT(numero));

  //cantidad
  numero.Format("%i",reg->cantidad);
  pDC->TextOut( 2200, -i, TEXT(numero));
   
  //totalparcial
  total=total+(reg->cantidad*reg->minutotrabajo*(reg->preciohora/60));
  numero.Format("%.3f", reg->cantidad*reg->minutotrabajo*(reg->preciohora/60));
  pDC->TextOut(2800, -i, TEXT(numero));
  
  i+=50;
  item++;
  
  pos+=sizeof(registroempresa);
  posicionleida=archivo.GetPosition();
  archivo.Seek(pos,CFile::begin);


 }

 delete reg;
 archivo.Close();

//////////total de mecanizado
 if(imprimirpiedepagina)
 {
  pDC->SetTextCharacterExtra(0);
  pDC->SetTextColor(RGB(255,255,255));
  pDC->SetTextAlign(TA_LEFT);
  fntDefault = pDC->SelectObject(&fntSectTitle);
  pDC->SetTextAlign(TA_RIGHT);
  pDC->Rectangle(950, -i-70, 2850, -i-190);
  pDC->TextOut(1880, -i-80, TEXT("Total de Mecanizado : $"));
  numero.Format("%.3f",total);
  pDC->TextOut(2780, -i-80, TEXT(numero));
  
 }

//////linea pie de pagina
  
  numero.Format("%i", pInfo->m_nCurPage);
  pDC->SetTextColor(RGB(0,0,0));
  pDC->MoveTo(30, -1900);
  pDC->LineTo(4000, -1900);
  pDC->TextOut(2700, -1950, TEXT("Pagina Nº:"+numero));


 pDC->SelectObject(fntDefault);
 pDC->SelectObject(penOld); 
 
 CView::OnPrint(pDC, pInfo);
 
}
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20061202/7f403cca/attachment.html>


Más información sobre la lista de distribución Cconclase