Страницы: 1
RSS
Картинка по умолчанию в ImageList
 
В прилагаемом примере ImageBox имеет по умолчанию картинку лилии. При переборе списка в ComboBox ImageList меняет картинки в ImageBox. При выборе какого либо значения списка все корректно, но в случае если просто отвести курсор мыши от списка и кликнуть, выбор не сделан, а картинка осталась выбранной.  
 
Вопрос: Как заставить ImageList возвращать картинку ImageBox по умолчанию, Или как обратиться к ImageBox и присвоить ему картинку по умолчанию?  
 
Заранее благодарен,    
 
Владимир.
 
Попробуйте так:  
 
Dim pic As IPictureDisp  
 
Private Sub ComboBox1_Change()  
   On Error Resume Next  
   ComboBox1.ControlTipText = [ГОСТ].Find(What:=ComboBox1.Text, LookAt:=xlWhole, LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Offset(0, 1).Text
   ' Image1.Picture = ImageList1.ListImages(ComboBox1.Text).Picture  
End Sub  
 
 
Private Sub ComboBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)  
   If ComboBox1.TopIndex < 0 Then  
       ComboBox1.ControlTipText = ""  
       Me.Image1.Picture = pic  
       Exit Sub  
   End If  
   Label1.Caption = [ГОСТ].Find(What:=ComboBox1.List(Int(Y / 9.65) + ComboBox1.TopIndex), LookAt:=xlWhole, LookIn:=xlValues, SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Offset(0, 1).Text
   Image1.Picture = ImageList1.ListImages(ComboBox1.List(Int(Y / 9.65) + ComboBox1.TopIndex)).Picture  
End Sub  
 
Private Sub UserForm_Initialize()  
   Set pic = Me.Image1.Picture  
End Sub  
 
 
 
 
Пример файла:  http://excelvba.ru/XL_Files/Sample__20-09-2009__1-28-38.zip
 
Я бы применил LISTBOX вместо COMBOBOX-а:  
 
Dim pic As IPictureDisp  
 
Private Sub ListBox1_Change()  
   On Error Resume Next  
   Label1.Caption = [ГОСТ].Find(What:=Me.ListBox1, LookAt:=xlWhole).Next
   Image1.Picture = ImageList1.ListImages(Me.ListBox1.ListIndex + 1).Picture  
   If Err.Number Or Len(Me.ListBox1) = 0 Then Me.Image1.Picture = pic  
End Sub  
 
Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)  
   On Error Resume Next  
   If Me.ListBox1.ListIndex <> Int(Y / 9.65) Then Me.ListBox1.ListIndex = Int(Y / 9.65)  
End Sub  
 
Private Sub UserForm_Initialize()  
   Set pic = Me.Image1.Picture  
End Sub  
 
 
Пример файла:  http://excelvba.ru/XL_Files/Sample__20-09-2009__1-40-10.zip
 
Спасибо EducatedFool,  
 
ListBox мне не подойдет, а Me.Image1.Picture = pic я подумаю на какое событие поставить.  
 
Еще раз спасибо за подсказку.  
 
Владимир.
 
Ура, порадуйтесь за меня - поставил на событие Exit Comboboxa и все очень даже симпотично...
Страницы: 1
Читают тему
Наверх
Loading...