text box on form - automatically adjust height based on contents

  • Thread starter Thread starter Paul Kraemer
  • Start date Start date
P

Paul Kraemer

Hi,

I am using Access 2007. I have a Textbox in the detail section of a form
that is bound to a field of type 'Memo'. Most of the time, this memo field
contains only one line of text. Sometimes, however, it contains several
lines of text. When designing the form, I made the height of this textbox
just high enough to display one line of text. This is ok for most records,
but for records where this field contains more than one line of text, I would
like the height of my Textbox to automatically increase in order to fit the
extra lines of text. I tried to do this by setting the "Can Grow" and "Can
Shrink" properties of both my Textbox and the Detail section itself to "Yes",
but this did not do anything.

Is there anyway that I can automatically adjust the height of my textbox to
accomodate the variable number of lines of text that it will contain from
record to record?

Thanks in advance,
Paul
 
Assuming you're talking a continuous form, be aware that changing the height
of the row will apply to every row in the form. You can take a look at what
Stephen Lebans has at http://www.lebans.com/cangrow.htm but be aware that it
hasn't been tested with Access 2007 yet.

The CanGrow property only applies text boxes and detail sections in Reports.
 
Hi,

I am using Access 2007. I have a Textbox in the detail section of a form
that is bound to a field of type 'Memo'. Most of the time, this memo field
contains only one line of text. Sometimes, however, it contains several
lines of text. When designing the form, I made the height of this textbox
just high enough to display one line of text. This is ok for most records,
but for records where this field contains more than one line of text, I would
like the height of my Textbox to automatically increase in order to fit the
extra lines of text. I tried to do this by setting the "Can Grow" and "Can
Shrink" properties of both my Textbox and the Detail section itself to "Yes",
but this did not do anything.

Is there anyway that I can automatically adjust the height of my textbox to
accomodate the variable number of lines of text that it will contain from
record to record?

Thanks in advance,
Paul

CanGrow and CanShrink, on a form control, will only work when/if the
form is Previewed or Printed.

I would suggest using the controls scroll bars. however, you might
want to see what is available at
http://www.lebans.com
 
Well you could calculate how many characters you can fit on 1 line, some code
like the following should resize the control

Dim NoCanFit As Long ' The number of characters wide
Dim ChrHeight As Long ' The height 1 line in twips
Dim CtlHeight As Long
NoCanFit = 30
ChrHeight = 340

If Len(Me.YourControl & "") > 0 Then
Dim NoChar As Long
NoChar = Len(Me.Text0)

CtlHeight = ChrHeight * (Int(NoChar / NoCanFit) + 1)

If CtlHeight > ChrHeight Then
Me.YourControl.Height = CtlHeight
Else
Me.YourControl.Height = ChrHeight
End If
Else
End If
 
Thanks Danny,

Where would be the best place for me to try that code? My guess would be
OnFormat, OnPaint, or OnPrint for my detail section?

Thanks again,
Paul
 
Hi Danny,

When I sent my last post, I was mistakenly looking at the detail section of
a report when I asked you if I should put the code in the OnFormat, OnPaint,
or OnPrint event for my detail section? Now that I am looking at my form,
there only appears to be an OnPaint event. Does it make sense to try the
code here?

Thanks again,
Paul
 
When do you expect/want it to resize?

I would put it in several places... inn for forms on current event so it is
resized when the record is loaded and probably in the forms after update
event.
 
Well you could calculate how many characters you can fit on 1 line, some code
like the following should resize the control

Dim NoCanFit As Long ' The number of characters wide
Dim ChrHeight As Long ' The height 1 line in twips
Dim CtlHeight As Long
NoCanFit = 30
ChrHeight = 340

If Len(Me.YourControl & "") > 0 Then
Dim NoChar As Long
NoChar = Len(Me.Text0)

CtlHeight = ChrHeight * (Int(NoChar / NoCanFit) + 1)

If CtlHeight > ChrHeight Then
Me.YourControl.Height = CtlHeight
Else
Me.YourControl.Height = ChrHeight
End If
Else
End If


Danny

Thanks so much. Its amazing. For me worked 100% as I wanted
 
Back
Top