Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Изменение высоты выпадающего списка в ImageCombo / 13 сообщений из 13, страница 1 из 1
30.10.2009, 19:59
    #36283175
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
Почему-то не смог найти поиском даже поднятие этого вопроса.

Стандартный метод для ComboBox-а (с изменением высоты окна) не работает :(
...
Рейтинг: 0 / 0
30.10.2009, 21:18
    #36283266
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
'-----------------------------------------------------------------------------------------
' Copyright ©1996-2008 VBnet, Randy Birch. All Rights Reserved Worldwide.
'        Terms of use http://vbnet.mvps.org/terms/pages/terms.htm
'-----------------------------------------------------------------------------------------

Private Const CB_SHOWDROPDOWN = &H14F
Private Const CB_GETITEMHEIGHT = &H154
         
Private Type POINTAPI
   x As Long
   y As Long
End Type

Private Type RECT
   Left As Long
   Top As Long
   Right As Long
   Bottom As Long
End Type

Private Declare Function SendMessage Lib "user32" _
   Alias "SendMessageA" _
  (ByVal hwnd As Long, _
   ByVal wMsg As Long, _
   ByVal wParam As Long, _
   lParam As Any) As Long

Private Declare Function MoveWindow Lib "user32" _
  (ByVal hWnd As Long, _
   ByVal x As Long, ByVal y As Long, _
   ByVal nWidth As Long, _
   ByVal nHeight As Long, _
   ByVal bRepaint As Long) As Long

Private Declare Function GetWindowRect Lib "user32" _
  (ByVal hWnd As Long, _
   lpRect As RECT) As Long

Private Declare Function ScreenToClient Lib "user32" _
  (ByVal hWnd As Long, _
   lpPoint As POINTAPI) As Long



Private Sub Form_Load()

   Dim i As Integer
   
  'add a few strings to the combo
   For i =  1  To  50 
   
      Combo1.AddItem CStr(i) & " - combo box string number "
   
   Next
   
End Sub


Private Sub Command1_Click()

   Dim pt As POINTAPI
   Dim rc As RECT
   Dim cWidth As Long
   Dim newHeight As Long
   Dim oldScaleMode As Long
   Dim numItemsToDisplay As Long
   Dim itemHeight As Long
   
  'how many items should appear in the dropdown?
   numItemsToDisplay =  16 
   Label1.Caption = "Items displayed = " & numItemsToDisplay

  'Save the current form scalemode, then
  'switch to pixels
   oldScaleMode = Form1.ScaleMode
   Form1.ScaleMode = vbPixels
   
  'the width of the combo, used below
   cWidth = Combo1.Width
  
  'get the system height of a single
  'combo box list item
   itemHeight = SendMessage(Combo1.hWnd, CB_GETITEMHEIGHT,  0 , ByVal  0 )
   
  'Calculate the new height of the combo box. This
  'is the number of items times the item height
  'plus two. The 'plus two' is required to allow
  'the calculations to take into account the size
  'of the edit portion of the combo as it relates
  'to item height. In other words, even if the
  'combo is only 21 px high (315 twips), if the
  'item height is 13 px per item (as it is with
  'small fonts), we need to use two items to
  'achieve this height.
   newHeight = itemHeight * (numItemsToDisplay +  2 )
   
  'get the co-ordinates of the combo box
  'relative to the screen
   Call GetWindowRect(Combo1.hWnd, rc)
   pt.x = rc.Left
   pt.y = rc.Top

  'then translate into co-ordinates
  'relative to the form.
   Call ScreenToClient(Form1.hWnd, pt)

  'using the values returned and set above,
  'call MoveWindow to reposition the combo box
   Call MoveWindow(Combo1.hWnd, pt.x, pt.y, Combo1.Width, newHeight, True)
   
  'it's done, so show the new combo height
   Call SendMessage(Combo1.hWnd, CB_SHOWDROPDOWN, True, ByVal  0 )
   
  'restore the original form scalemode
  'before leaving
   Form1.ScaleMode = oldScaleMode
   
End Sub
...
Рейтинг: 0 / 0
31.10.2009, 19:06
    #36283920
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
Konst_One,

При всем уважении - НИЗАЧОТ.
Где вы видели у ImageCombo метод AddItem ?

Я же говорил, что стандартный метод для комбобокса не работает.


P.S. Кроме того, приведенный вами пример зависит от формы, если комбик расположен хотя бы во фрейме, не говоря уж о юзерконтроле, то он не подходит. Вот более универсальный метод ДЛЯ КОМБОБОКСА :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Sub ReSizeCombo2(cbo As Control, n As Integer)
  Dim cboLeft As Long, cboTop As Long, cboWidth As Long
  Dim cboHeight As Long, h As Long, re As RECT
  Call GetWindowRect(cbo.hWnd, re)
  cboLeft = re.Left
  cboTop = re.Top
  cboWidth = re.Right - re.Left
  h = SendMessage(cbo.hWnd, CB_GETITEMHEIGHT,  0 ,  0 )
  cboHeight = h * (n +  2 )
  SetWindowPos cbo.hWnd,  0 , cboLeft, cboTop, cboWidth, cboHeight, SWP_NOMOVE
End Sub

Есть ли варианты для IMAGECOMBO ?
...
Рейтинг: 0 / 0
03.11.2009, 16:42
    #36288921
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
Antonariy,

Неужели и вы пас?

;-)
...
Рейтинг: 0 / 0
03.11.2009, 17:40
    #36289116
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
Никогда не пользовался этим контролом.

Jah loves you.
...
Рейтинг: 0 / 0
03.11.2009, 17:43
    #36289123
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
AntonariyНикогда не пользовался этим контролом.

Все когда-то бывает в первый раз ;)))
...
Рейтинг: 0 / 0
03.11.2009, 17:54
    #36289162
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
Если сделаете пример, посмотрю.

Jah loves you.
...
Рейтинг: 0 / 0
03.11.2009, 17:55
    #36289165
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
Вообще для этих целей я использовал универсальный дропдаун с прицепленным на него listview.

Jah loves you.
...
Рейтинг: 0 / 0
03.11.2009, 18:13
    #36289204
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
AntonariyЕсли сделаете пример, посмотрю

С удовольствием.

Вот.
...
Рейтинг: 0 / 0
03.11.2009, 18:40
    #36289262
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
Ничего не получилось(

Jah loves you.
...
Рейтинг: 0 / 0
03.11.2009, 18:48
    #36289274
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
AntonariyНичего не получилось(

А вот это
"универсальный дропдаун с прицепленным на него listview."
не оформлено ли в виде какого-нибудь перевариваемого контрола?
...
Рейтинг: 0 / 0
03.11.2009, 18:59
    #36289301
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
Ага.

Jah loves you.
...
Рейтинг: 0 / 0
03.11.2009, 19:08
    #36289317
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение высоты выпадающего списка в ImageCombo
Antonariy,

"Ух ты" (с) Ёська, Утомленные солнцем, КВН2003, Финал

Посмотрю на досуге.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Изменение высоты выпадающего списка в ImageCombo / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]