Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Contar líneas en un QRDBText (https://www.clubdelphi.com/foros/showthread.php?t=27890)

YaninaGenia 02-12-2005 16:20:14

Contar líneas en un QRDBText
 
Tengo un QRDBText al que le puse las propiedades AutoStretch y WordWrap en true para que siga abajo si el contenido del campo que tiene relacionado tiene muchas palabra sy no entran en un solo renglón. ¿Hay alguna manera de contar los renglones de ese QRDBText? Si hago QRDBText.lines.count no funciona, devuelve siempre cero pero en realidad hay cuatro o más lineas.

Yanina Genia

Casimiro Notevi 02-12-2005 19:45:45

Puedes "recorrerlo" y contar los caracteres 13 (intro) que tiene

Código:

var iX, iLineas :integer;
 var cT :string;
 begin
  iLineas:=0;
  cT := qrTEXT.asString;
  for iX:=1 to length(cT) do
        if cT[iX]=#13 then
          inc(iLineas);
 
 // en iLineas tienes el número de líneas
 end;


YaninaGenia 02-12-2005 21:31:27

...
 
No funciona!!!
No necesariamente se pasa de línea con un Enter, es algo que hace el QRDBText al setearle yo el AutoStretch y el WordWrap, el largo se lo pongo yo, y si los datos que saca de la base son más largos de lo que yo le puse, entonces continúa abajo, es algo automático.

Yanina Genia

jhonny 02-12-2005 22:16:42

Seria = a la cantidad de caracteres que fueron impresos en ese QRDBText divididos la cantidad de caracteres que caben en una sola linea, Por ejemplo:

Esta es la capacidad maxima de una linea <- Hasta aqui hay 41 caracteres
Esta es la segunda linea <- Hata aqui hay 65 caracteres

Entonces la cantidad de lineas seria 65/41 que es igual a 1.4878048780487804878048780487805

Alli puedes deducir ya que hay 2 lineas y con la funcion Ceil arreglartelas para acomodar la cosa ;)

Casimiro Notevi 02-12-2005 23:14:30

Cita:

Empezado por YaninaGenia
No funciona!!!
No necesariamente se pasa de línea con un Enter, es algo que hace el QRDBText al setearle yo el AutoStretch y el WordWrap, el largo se lo pongo yo, y si los datos que saca de la base son más largos de lo que yo le puse, entonces continúa abajo, es algo automático.Yanina Genia

Había entendido otra cosa :(

jhonny 03-12-2005 00:10:59

Para ampliar un poco, la funcion puede ser algo asi:

Código Delphi [-]
Ceil(Length(TDataSetCampo.AsString)/41);

espero te sirva. ;)

YaninaGenia 05-12-2005 13:49:04

Ceil function
 
Tengo que declarar algo antes para usar esta funcion? Porque se enojó Delphi, dice que no lo declaré en ningún lado y que por eso ahora no lo va a usar.
A mi se me ocurrió algo así, pero lo hice sin función y estaba buscando algo para que quede más prolijo, hice:

DetalleReporte.Height := DetalleReporte.Height + 17*((length(trim(query3.FieldByName('PAQ_SOLICITADO').AsString))div 80)+1);

Se supone que aumenta el ancho del detalle a medida que se incrementan las líneas. Y me funciona bastante bien, pero buscaba eso, algo más estético.
Hice 17 porque es el ancho de una línea, y le sumo 1 porque si tengo por ejemplo 150 caracteres, el div me va a dar 1. Y si los caracteres son 70, el div da cero, así que le suma 1 y queda bien.

Yanina Genia


La franja horaria es GMT +2. Ahora son las 15:00:38.

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