Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Rejilla, Db e imprimir. (https://www.clubdelphi.com/foros/showthread.php?t=30916)

marcoszorrilla 23-04-2006 19:15:47

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.


La franja horaria es GMT +2. Ahora son las 11:18:45.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi