Ver Mensaje Individual
  #3  
Antiguo 16-04-2010
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 585
Reputación: 23
santiago14 Va por buen camino
Thumbs up

Bueno compañeros, a pesar de no tener respuestas les agradezco sus lecturas e interés.
Encontré un principio de solución y lo comparto con todos por si alguien lo necesita.
Sin dudas a la cuestión de impresión le falta un poco pero van por buen camino.
TPlanner.Print intenta meter en una sola hoja todo el contenido de la grilla y lo logra, pero achicharra todo, usando TPlanner.PrintRange solucionamos la cosa de mejor manera.
Un atributo clave es TPlanner.PrintOptions.CellHeigth el cual debe ir a 0 (cero) para hacer así que se acomode a la hoja automáticamente, si uno lo pone con otro valor algunas impresoras lo interpretan bien y otras no. De ahí que se me achicharraba y salía todo pegado.
Pongo aquí un pedacito de código que muestra lo que hice:

Código Delphi [-]
procedure TFrmABMTurnos.btnImprimirAgendaClick(Sender: TObject);
begin
  with gTurnos do
  begin
    if txtNombreOdont.Text <> EmptyStr then
    begin
      if dlgImprimir.Execute then
      begin
        PrintOptions.Header.Clear;
        PrintOptions.Header.Add('Turnos correspondientes al Dr. ' + txtNombreOdont.Text);
        PrintOptions.Footer.Clear;
        PrintOptions.Footer.Add('Fecha impresión: ' + DateTimeToStr(Now));
        PrintOptions.Footer.Add('Fin de Agenda');
        PrintOptions.CellHeigth:=0;
      //Los otros valores de la configuración de la impresión están puestos directamente en el Object Inspector
      //Display.ActiveEnd + 4 --> Incluímos una hora mas por las dudas...
        PrintRange(0, Positions - 1, Display.ActiveStart, Display.ActiveEnd + 4);
        MessageBox(handle, 'Impresión terminada.', 'Impresión agenda',
          MB_OK + MB_ICONINFORMATION);
      end;
    end
    else
    begin
      MessageBox(handle, 'Debe buscar primero un Odontólogo.', 'Impresión agenda',
        MB_OK + MB_ICONERROR);
    end;
  end;
end;
Con esto he logrado imprimir exitosamente en una HP deskjet 3420 y en una HP laser 1018. Me falta probar en la HP deskjet 1500 y en otras pero espero no tener problemas.

Bien, gracias a todos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita