Image: не реагирует на изменение .BorderStyle, если .Stretch =True? - VB

Узнай цену своей работы

Формулировка задачи:

В форме куча контролов Image (массив imgLTR(32)). Код между звездочками *********. В процедуре обработки клика на рисунке он временно "вдавливается" путем изменения .BorderStyle. Все работает... ...Однако, если свойство .Stretch установлено true (программно или нет, без разницы), то никакого вдавливания не происходит! Кто подскажет в чем прикол и как временно выделить кликнутый image (не переходя на ненужный PictureBox)? Кстати проверил: командой с кнопки вдавливается, а с клика нет!
Листинг программы
  1. Private Sub Form_Activate()
  2. Const btZazor As Byte = 10: Const btIntZazor = 10
  3. Dim StartLng As String
  4. Dim i As Byte, rw As Byte, stlb As Byte
  5. Dim btNumLet As Byte
  6. Dim ltrHeight As Long, ltrShir As Long 'height and width of single ltr-imageBox
  7. Dim OptModeNames As Variant
  8. ' OptModeNames = Array( .....
  9. '.....тут обрабатываются другие контролы и путь к базе. Пропущено вместе с их переменными
  10. '....
  11. 'btNumLet = 22 'Public:removed and readed from *.MDB or *.ini
  12. With FrmChilDic
  13. .WindowState = 2
  14. ltrShir = (.ScaleWidth - 8 * btZazor) / 7: ltrHeight = (.ScaleHeight - 6 * btZazor) / 5
  15. End With
  16. '************************************************************************* pictures-ltrs filing
  17. With ImgLTR(0) '1st ltr-imageBox in array
  18. .Left = btZazor: .Top = btZazor
  19. .Height = ltrHeight: .Width = ltrShir
  20. .Stretch = True
  21. End With
  22. For i = 2 To 35 ' 7 x 5 image-boxes 1st imgBox index = 0
  23. If i > 33 Then GoTo ni '2 last places are reserved for controls. no lng with more than 33 ltrs
  24. Load ImgLTR(i - 1)
  25. rw = (i - 1) \ 7 + 1: stlb = (i - 1) Mod 7 + 1
  26. With ImgLTR(i - 1)
  27. .Left = stlb * btZazor + (stlb - 1) * ltrShir: .Top = rw * btZazor + (rw - 1) * ltrHeight
  28. .Height = ltrHeight: .Width = ltrShir
  29. .Visible = True
  30. End With
  31. ni:
  32. Next i
  33. ' Call ltrFill(StartLng, btNumLet) 'The Call is performed from cmbLNG_click [stratlng is defined in *.ini]
  34. '**************************************************************************
  35. End Sub
  36. Private Sub ImgLTR_Click(Index As Integer)
  37. With ImgLTR(Index)
  38. .BorderStyle = 1 'ВДАВЛИВАЕМ !!!!!!!
  39. Dim sndPath As String 'sound file *.wav ' обработка клика - можно не читать
  40. Dim sLngWay As String
  41. Select Case btMODE 'modul-function
  42. Case 1
  43. sLngWay = Trim(cmbLNG.Text)
  44. sndPath = aPath & sLngWay & "\" & sLngWay & "SOUND\" & CStr(Index + 1) & sLngWay & ".wav"
  45. If cdFilEx(sndPath) Then Call sndPlaySound(sndPath, &H0) 'API Function
  46. End Select
  47. .BorderStyle = 0 'ВОЗВРАЩАЕМ !!!!!!!!!
  48. End With
  49. End Sub
  50. Private Sub cmdStart_Click()
  51. ImgLTR(1).BorderStyle = 1 'ВДАВЛИВАЕМ - проверка
  52. End Sub

Решение задачи: «Image: не реагирует на изменение .BorderStyle, если .Stretch =True?»

textual
Листинг программы
  1. Private Sub ImgLTR_Click(Index As Integer)
  2.   With ImgLTR(Index)
  3.    .BorderStyle = 1                       'ВДАВЛИВАЕМ   !!!!!!!
  4.   .Refresh                                  'ОБНОВЛЯЕМ!!!!!!
  5.    Dim sndPath As String   'sound file *.wav     ' обработка клика - можно не читать
  6.    Dim sLngWay As String
  7.     Select Case btMODE  'modul-function
  8.      Case 1    
  9.         sLngWay = Trim(cmbLNG.Text)
  10.         sndPath = aPath & sLngWay & "\" & sLngWay & "SOUND\" & CStr(Index + 1) & sLngWay & ".wav"
  11.         If cdFilEx(sndPath) Then Call sndPlaySound(sndPath, &H0)          'API Function
  12.  
  13.     End Select
  14.     .BorderStyle = 0                       'ВОЗВРАЩАЕМ   !!!!!!!!!
  15.   End With
  16. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы