Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: чтоб выбранное слово в комбо не выделялось Добавлено: 05.10.08 13:16  

Автор вопроса:  busha
При выборе пункта в комбобоксе это слово появляется
выделенным серым, а как это отменить?
Спасибо Экзэкьюшенер

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 05.10.08 15:01
Вот код вместе с удалением курсора.

В форме пишем:
  1. Private Sub Form_Load()
  2.     'test
  3.     Combo1.Text = "Vbnet sample by Executioner"
  4.     Combo1.AddItem "test0"
  5.     Combo1.AddItem "test1"
  6.     Combo1.AddItem "test2"
  7.     Combo1.AddItem "test3"
  8.     ChangeCboParams Combo1 'замени Combo1 на имя своего комбобокса
  9. End Sub
  10.  
  11. Private Sub Form_Unload(Cancel As Integer)
  12.     RevertCboParams
  13. End Sub


В модуле пишем:
  1. Private Declare Function HideCaret Lib "user32" (ByVal hwnd As Long) As Long
  2. Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  3. Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  4. Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
  5. Private Const GW_CHILD = 5
  6.  
  7. Const EM_SETSEL = &HB1
  8. Const WM_LBUTTONDBLCLK = &H203
  9.  
  10. Dim OldProc As Long
  11. Dim CboTextHandle As Long
  12. Private bHooked As Boolean
  13.  
  14. Public Function ChangeCboParams(Combo As ComboBox)
  15.     If bHooked Then Exit Function
  16.     CboTextHandle = GetWindow(Combo.hwnd, GW_CHILD)
  17.     OldProc = SetWindowLong(CboTextHandle, &HFFFC, AddressOf WndProc)
  18.     bHooked = True
  19. End Function
  20.  
  21. Public Function RevertCboParams()
  22.     If Not bHooked Then Exit Function
  23.     SetWindowLong CboTextHandle, &HFFFC, OldProc
  24. End Function
  25.  
  26. Private Function WndProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  27.     Select Case uMsg
  28.         Case EM_SETSEL
  29.             HideCaret CboTextHandle
  30.         Case WM_LBUTTONDBLCLK
  31.             'NOP
  32.         Case Else
  33.             WndProc = CallWindowProc(OldProc, hwnd, uMsg, wParam, lParam)
  34.     End Select
  35. End Function

Ничего более гениального и простого я придумать не смог...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам