?
Solved

Long text in a combo box

Posted on 2000-03-10
7
Medium Priority
?
206 Views
Last Modified: 2010-08-05
Hi,

I am having a problem with the combo box. I have set the physical size of the control (which is already pretty long) quite long because of the text it holds (some really long sentences). So when I select the combo box, any text that is long it cuts the end off.

I have two questions about this:

1. Can I set a property on this control, so when its selected it opens up to the size of the longest text in it. Or..

2. If the text is longer than the length of the control, automatically place a vertical control bar, so the user can scroll across to see the full length of the option.

Can both of these be accomplished. Let me know.

Thanks.

Mari
0
Comment
Question by:mari_carmen
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 7

Expert Comment

by:Vbmaster
ID: 2606241
You can go thru all the items in the combobox checking the width of all items, using code like this...

  Dim a As Integer
  Dim MaxWidth As Long
  Dim CurrWidth As Long
  Dim MeFont As New StdFont
 
  'If you want you can set MaxWidth to prevent the Combobox
  'to be more narrow than a specific value
  'MaxWidth = (MinWidth)

  MeFont = Me.Font
  Me.Font = Combo1.Font
  For a = 1 To Combo1.ListCount
    CurrWidth = Me.TextWidth(Combo1.List(a - 1))
    If (CurrWidth > MaxWidth) Then MaxWidth = CurrWidth
  Next
  Combo1.Width = MaxWidth + 30 * Screen.TwipsPerPixelX
  Me.Font = MeFont


This code uses the Me.Font property (only temporary, the property is restored when the code has executed) to be able to use the Me.TextWidth function, if you do not want to use this way there is a way to calculate the width of a string using API's.. a little bit more complex but it's doable. Let me know and I can post that code.
0
 
LVL 15

Expert Comment

by:ameba
ID: 2606356
Use ToolTipText property of your combobox to present the whole text, e.g.:

Option Explicit

Private Sub Form_Load()
    Combo1.AddItem "Normal Item1"
    Combo1.AddItem "Normal Item2"
    Combo1.AddItem "Very, very, very, very, very, very, long Item1"
    Combo1.AddItem "Very, very, very, very, very, very, long Item2"
End Sub

Private Sub Combo1_Change()
    ' make sure form and Combo1 use the same font
    If Me.TextWidth(Combo1.Text) > Combo1.Width Then
        Combo1.ToolTipText = Combo1.Text
    Else
        Combo1.ToolTipText = ""
    End If
End Sub
0
 

Author Comment

by:mari_carmen
ID: 2606376
VBmaster,

The problem is I do not want to change the size of the actual combo box.

When you click the combo and it shows the list, is there anyway of displaying that part (list part) to the length of the longest text.

Mari
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 15

Expert Comment

by:ameba
ID: 2606379
'or
Private Sub Combo1_Change()
    If Me.TextWidth(Combo1.Text) > Combo1.Width - 300 Then
        Combo1.ToolTipText = Combo1.Text
    Else
        Combo1.ToolTipText = ""
    End If
End Sub

Private Sub Combo1_Click()
    Combo1_Change
End Sub
0
 
LVL 32

Expert Comment

by:Erick37
ID: 2606392
See the code:

"Changing the Dropdown Width of a Combo Box, Advanced"

http://www.mvps.org/vbnet/code/listapi/combowidthadv.htm
0
 
LVL 15

Accepted Solution

by:
ameba earned 320 total points
ID: 2606394
Change the width of the dropdown portion of a ComboBox:
http://www.vb2themax.com/Item.asp?PageID=TipBank&ID=115

width is in pixels, to calculate it, use
 pw = Textwidth(Combo1.Text) / 15
0
 

Author Comment

by:mari_carmen
ID: 2609361
Thanks, thats perfect for what i need.
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
Suggested Courses
Course of the Month11 days, 8 hours left to enroll

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question