| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 26 Abr, 2012 8:18 am Asunto: Altura de bandas en QR 3 |
|
|
Tengo un informe hecho en QR 3 y en un de las bandas hay unos campos TQRMemo en los que añado una serie de líneas según me hace falta. Bien; me gustaría poder ajustar la altura de la banda que los contiene en función de las líneas de dichos campos memo. estoy usando esto:
| Código: | QRMemo1->Height = 15 * QRMemo1->Lines->Count;
QRBand1->Height = QRMemo1->Height;
QRBand1->Refresh(); |
Sin embargo no consigo que se expanda la banda hasta donde me hace falta. ¿Alguna sugerencia? _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 26 Abr, 2012 8:45 am Asunto: |
|
|
No te sirve poner la propiedad "AutoStretch" del QRMemo a 'true'?
En caso de que no te sirva, en que evento (o en que otro sitio) estas poniendo las líneas que muestras mas arriba? |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 26 Abr, 2012 8:58 am Asunto: |
|
|
| _Leo escribió: | No te sirve poner la propiedad "AutoStretch" del QRMemo a 'true'?
En caso de que no te sirva, en que evento (o en que otro sitio) estas poniendo las líneas que muestras mas arriba? |
El problema principal no es tanto el QRMemo como el QRBand. Con AutoStretch si se me ajusta la altura del QRMemo, pero lo que no consigo ajustar es la banda. El código lo estoy poniendo en OnBeforePrint de la banda. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 26 Abr, 2012 9:12 am Asunto: |
|
|
A mi si me modifica la altura lo que pones, no la ajusta con precision, pero eso se puede resolver.
El problema es que ignora el ajuste que haces de la altura? o que no la ajusta con la precisión que quieres?
Lo he probado con el BCB4 y el 6 (creo que tu utilizas la 5, pero no la tengo, aunque si funciona en la 4 y la 6 debería ser lo mismo en la 5). Lo he probado con el QuickReport que lleva cada una de ellas de fabrica. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 26 Abr, 2012 9:52 am Asunto: |
|
|
Como rellenas el QRMemo? que código usas? para poder probarlo lo mas parecido posible.
Te aparece todo el contenido en una línea larga? o se parte correctamente en líneas? |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 26 Abr, 2012 10:23 am Asunto: |
|
|
La información se muestra bien, cada línea con su registro pero no me expande la banda para que entre todo el QRMemo. El código es este:
| Código: | qResumen->Close();
qResumen->SQL->Text = "SELECT COUNT(*) Fichas, Sexo FROM 'Persona.db' GROUP BY Sexo ORDER BY Sexo";
qResumen->ParamByName("CodPrv")->AsString = cProvincia;
qResumen->Open();
for (; !qResumen->Eof; qResumen->Next())
{
QRMemo1->Lines->Add(iif(qResumen->FieldByName("Sexo")->AsInteger == 0, "Mujeres", "Varones"));
QRMemo2->Lines->Add(FormatFloat("###,##0", qResumen->FieldByName("Fichas")->AsInteger));
}
QRBand1->Height = 15 * QRMemo1->Lines->Count;
QRBand1->Refresh(); |
La función iif viene como las librerias Indy. Supongo que sabrás lo que hace. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 26 Abr, 2012 10:34 am Asunto: |
|
|
Antes de probar ninguna otra cosa y para no perder el tiempo con otras pruebas.. añade solo la siguiente linea en el BeforePrint de la banda:
QRBand1->Height = 200;
Y fíjate si cambia realmente la altura de la banda, a mi si me la cambia tanto en el BCB4 como en el 6 que son en los que he probado.
La banda presupongo que es de tipo 'Detail'. |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 26 Abr, 2012 10:42 am Asunto: |
|
|
| _Leo escribió: | Antes de probar ninguna otra cosa y para no perder el tiempo con otras pruebas.. añade solo la siguiente linea en el BeforePrint de la banda:
QRBand1->Height = 200;
Y fíjate si cambia realmente la altura de la banda, a mi si me la cambia tanto en el BCB4 como en el 6 que son en los que he probado.
La banda presupongo que es de tipo 'Detail'. |
Si, es de tipo Detail. Haré la prueba y te diré como ha ido. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 26 Abr, 2012 11:22 am Asunto: |
|
|
Yo estoy probando con lo siguiente en el BeforePrint de la banda y me funciona correctamente y con la precisión necesaria sin importar la fuente y el tamaño que se utilice en el QRMemo. Por si quieres probarlo a ver que tal te va:
| Código: | QRMemo1->Lines->Add("uno");
QRMemo1->Lines->Add("dos");
QRMemo1->Lines->Add("tres");
QRMemo1->Lines->Add("cuatro");
QRMemo1->Lines->Add("cinco");
// Calculamos la altura exacta de una línea
SIZE size;
HDC hdc = GetDC(QRMemo1->Handle);
SelectObject(hdc, QRMemo1->Font->Handle);
GetTextExtentPoint32(hdc, "Mg", 2, &size);
ReleaseDC(QRMemo1->Handle, hdc);
// Calculamos la altura del QRMemo para que muestre todas las líneas
QRMemo1->Height = size.cy * QRMemo1->Lines->Count;
// Compensamos la altura de la banda con el alto y posición del QRMemo
QRBand1->Height = QRMemo1->Height + QRMemo1->Top + 1;
|
Uploaded with ImageShack.us
Ultima edición por _Leo el Jue 26 Abr, 2012 12:08 pm, editado 2 veces |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Jue 26 Abr, 2012 11:50 am Asunto: |
|
|
¡HAY QUE HACERTE UN MONUMENTO!
Sale perfecto. Sólo he tenido que eliminar dos líneas:
| Código: | ReleaseDC(QRMemo1->Handle, hdc);
QRMemo1->Height = size.cy * QRMemo1->Lines->Count; |
Si las dejaba, me partía el QRMemo añadiendo un línea en blanco. Fuera de eso ¡perfecto! _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Jue 26 Abr, 2012 12:02 pm Asunto: |
|
|
A mi me funciona tal como te lo he puesto, con todas las líneas. He adjuntado mas arriba una imagen para que se vea. Pero si te funciona bien con las modificaciones que has hecho perfecto  |
|
| Volver arriba |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 02 May, 2012 4:45 pm Asunto: |
|
|
Ya sé por que me hace mi lo que comentaba el otro día. La verdad es que en la banda hay varis TQRMemo, pero siempre seguro el que más líneas tiene es el QRMemo1. El campo me lo parte en los que no son QRMemo1. _________________ Un saludo
Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA) |
|
| Volver arriba |
|
 |
|