Problema con TextWidth en Access 2007

Hola a todos,


Os expongo un caso curioso que se me ha planteado.


He realizado un pequeño código en Access 97, que lo que hace es que al dar formato a un informe el tamaño de la fuente de un cuadro de texto se reduce en función de la longitud y tamaño del campo.


Es decir, tengo un cuadro de texto al que le caben perfectamente centradas 10 letras "POR" Arial y de tamaño 40, si le informo 15 letras el tamaño se reduce a 32 por ejemplo y así se evita que el texto se corte.


Ahora bien, he ejecutado este código en Access 2007 y en Access 2010, y algo ocurre porque no funciona bien.


He observado que la fuente se reduce pero no al mismo tamaño que con Access97.
He realizado un pequeño comparativo y he visto lo siguiente:


Valores obtenidos con WidthSpace:


Access 97 (Tamaño Fuente 48)
15 caracteres = 9576
10 caracteres = 6384
1 carácter = 638


Access 2007 o 2010 (Tamaño Fuente 48)
15 caracteres = 7483
10 caracteres = 4992
1 carácter = 499
___________
Access 97 (Tamaño Fuente 20)
15 caracteres = 4032
10 caracteres = 2688
1 carácter = 269


Access 2007 o 2010 (Tamaño Fuente 20)
15 caracteres = 3091
10 caracteres = 2059
1 carácter = 206


No se si queda muy claro el problema que tengo. Por si las moscas os pongo el código utilizado:


Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
Me![txtJust1] = Justifica(Me![txtAJust1], Me![txtAJust1], Me)
End Sub
____________________________________________________
Function Justifica(lpzText, ControlText As Control, objReport As Report) As String
inici1:
Dim tamañofuente1 As Integer
Dim tamañofuente2 As Integer
Dim WidthControl As Integer
Dim WidthSpace As Integer
Dim SizeText As Integer
objReport.FontSize = ControlText.FontSize
WidthControl = ControlText.Width
WidthSpace = objReport.TextWidth(lpzText)
tamañofuente1 = ControlText.FontSize
SizeText = Len(lpzText)
Do While WidthSpace > WidthControl Or tamañofuente1 <= 6
WidthSpace = objReport.TextWidth(lpzText)
tamañofuente2 = tamañofuente1 - 1
Set objReport = Me
With objReport
txtAJust1.FontSize = tamañofuente2
GoTo inici1
End With
Loop
txtAJust1.FontSize = tamañofuente1
End Function
____________________________________


Gracias anticipadas por los comentarios y posibles soluciones a mi problema.


Espero no haberos metido mucho rollo.


Saludos,
Jordi

Añade tu respuesta

Haz clic para o