Ver Mensaje Individual
  #1  
Antiguo 23-04-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Reputación: 10
marcoszorrilla Va por buen camino
Rejilla, Db e imprimir.

Bueno el tema es el siguiente:

Un Cliente quiere porque ya venía haciéndolo así, que en una rejilla en que se graban líneas de albarán, de vez en cuando en una de esas líneas, pone guiones - y los utiliza para subrayar:

Ejemplo:

PONER A PUNTO
---------------

Y al imprimir que le queden a la par los guiones y el texto, (se imprime la factura que se creará posteriormente con QuickReport).

El problema viene porque en la rejilla los guiones no se visualizan como luego quedarán al imprimir o en la vista previa, por lo que rellenando con guiones una línea para hacer el efecto de subrayado de la anterior, los guiones quedan a la par pero al imprimir o en la vista previa no.

Conclusión, que yo he hecho lo siguiente, que me funciona correctamente por cierto, lo cual es ya un alivio, pero lo pego aquí, por si a alguien se le ocurre algo mejor y mejor para mí es que sea más simple y además funcione.

Código Delphi [-]
procedure TfrAlbaran.GrLineasKeyPress(Sender: TObject; var Key: Char);
var
S:String;
{Ancho de la línea anterior a subrayar}
Todo:Integer;
Uno:Integer;
{Al dividir el ancho total entre 4 obtengo el número de guiones
que tengo que poner}
Resta:Variant;
begin
Uno:=4; //Medida de un guión en arial 9 que es lo que se va a utilizar

  if ((Key ='.') and (GrLineas.SelectedIndex = 0)) or ((Key ='.') and (GrLineas.SelectedIndex = 2)) then
  key:=',';

  if key ='-' then
  begin
  S:='';
  {Por si es una nueva línea, primero la grabo}
  DmGanc.Linalbar.Edit;
  DmGanc.LinAlbar.Post;

  {Ahora voy a la anterior para ver el ancho que tiene}
  DmGanc.LinAlbar.Prior;
  Todo:=Canvas.TextWidth(DmGanc.LinAlbarConcepto.value);

  {Número de guiones que hay que añadir}
  Resta:= Todo / uno;
  uno:=Resta;


  {Vuelvo a donde estaba para poner los guiones}
  DmGanc.linalbar.next;
  S:=StringofChar('-',Uno);

  DmGanc.Linalbar.Edit;
  DmGanc.LinAlbarConcepto.Value:=s;
  {Cuando pulso F2 funciona sino me borra los caracteres que le paso
  por eso le envío la tecla F2 para que funcione}
  keybd_event(VK_F2,0,0,0);
  end;

end;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 24-04-2006 a las 07:17:00.
Responder Con Cita