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;
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.