Не считываются индексы контролов массива Image - VB

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

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

Массив 'контролов' Image(33) создается программно, размещается в форме клетками 7Х5 , заполняется картинками. Код между '********* звездочками см. ниже. Не догоняю почему в процедуре клик не считывается индекс элемента, возвращает ошибку 'переменная не определена'. Кто поможет? Массив из трех options ( OptMode ) таки нормально возвращает индекс в 'клике', а ImgLTR - нет. Для проверки создал в той же форме короткий массиве image вручную, индекс тоже читается. Единственное отличие было у ImgLTR : первый индекс =1. Заменил на 0-32, тоже не помогло.
Листинг программы
  1. Private Sub ImgLTR_Click(Index As Integer)
  2. MsgBox "Index=" & CStr(Index): Exit Sub 'debug 'Ошибка на пред. строке
  3. .... 'т.е. на входе в процедуру
  4. End sub
  5. Private Sub Form_Activate()
  6. Const btZazor As Byte = 10: Const btIntZazor = 10
  7. Dim StartLng As String
  8. Dim i As Byte, rw As Byte, stlb As Byte
  9. Dim btNumLet As Byte
  10. Dim ltrHeight As Long, ltrShir As Long 'height and width of single ltr-imageBox
  11. Dim OptModeNames As Variant
  12. OptModeNames = Array("Learn", "Pictures-Exam", "Letters-Exam")
  13. Dim mdb_path As String
  14. Dim mdb As Database
  15. Dim rcs As Recordset
  16. mdb_path = aPath & "ChilDic.INI" 'экономия переменной
  17. ' Ñ÷èòûâГ*ГҐГ¬ Г*Г*Г·Г*ëüГ*ûé ÿçûê ГЁГ§ INI-ГґГ*éëГ*
  18. StartLng = sGetINI(mdb_path, "Boot", "StartLng", "nol")
  19. ...
  20. mdb_path = aPath & "cMDB.mdb"
  21. If cdFilEx(mdb_path) Then 'global-modl filexists-function
  22. Set mdb = OpenDatabase(mdb_path, , True) 'read-only = true
  23. Set rcs = mdb.OpenRecordset("TbLNG", dbOpenSnapshot)
  24. With rcs
  25. Do While Not .EOF 'reading LNG-list from MDB
  26. cmbLNG.AddItem .Fields(0)
  27. If .Fields(0) = StartLng Then btNumLet = .Fields(1)
  28. .MoveNext
  29. Loop
  30. End With
  31. End If
  32. With FrmChilDic
  33. .WindowState = 2
  34. ltrShir = (.ScaleWidth - 8 * btZazor) / 7: ltrHeight = (.ScaleHeight - 6 * btZazor) / 5
  35. End With
  36. '************************************************************************* pictures-ltrs filing
  37. With ImgLTR(0) '1st ltr-imageBox in array
  38. .Left = btZazor: .Top = btZazor
  39. .Height = ltrHeight: .Width = ltrShir
  40. End With
  41. For i = 2 To 35 ' 7 x 5 image-boxes . 1st imgBox index = 0
  42. If i > 33 Then GoTo ni '2 last places are reserved for controls.
  43. Load ImgLTR(i - 1)
  44. rw = (i - 1) \ 7 + 1: stlb = (i - 1) Mod 7 + 1
  45. With ImgLTR(i - 1)
  46. .Left = stlb * btZazor + (stlb - 1) * ltrShir: .Top = rw * btZazor + (rw - 1) * ltrHeight
  47. .Height = ltrHeight: .Width = ltrShir
  48. .Visible = True
  49. End With
  50. ni:
  51. Next i
  52. ' Call ltrFill(StartLng, btNumLet) 'The Call is performed from cmbLNG_click
  53. '**************************************************************************
  54. With frmMngmnt 'Mngmnt-controls- location
  55. .Left = 6 * btZazor + 5 * ltrShir
  56. .Top = 5 * btZazor + 4 * ltrHeight
  57. .Height = ltrHeight:
  58. .Width = ltrShir * 2 + btZazor
  59. .Caption = ""
  60. End With
  61. For i = 2 To 3
  62. Load OptMode(i)
  63. Next i
  64. For i = 1 To 3
  65. With OptMode(i)
  66. .Caption = OptModeNames(i)
  67. .Left = frMode.Left + (btIntZazor + .Width) * (i - 1)
  68. .Visible = True
  69. End With
  70. Next i
  71. OptMode(1).Value = True
  72. With cmbLNG
  73. .Left = frMode.Left
  74. cmdStart.Top = .Top
  75. .ListIndex = 0
  76. End With
  77. End Sub

Решение задачи: «Не считываются индексы контролов массива Image»

textual
Листинг программы
  1. Dim ZazGor1%, ZazGor2%, ZazVer1%, ZazVer2%
  2.  
  3. Private Sub Form_Load()
  4. ZazGor1 = (Me.ScaleHeight - Img1(1).Height * 5) \ 8
  5. ZazGor2 = ZazGor1 * 2
  6.  
  7. ZazVer1 = (Me.ScaleWidth - Img1(1).Width * 7) \ 10
  8. ZazVer2 = ZazVer1 * 2
  9.  
  10. For i = 0 To 4
  11. For j = 0 To 6
  12. s = s + 1
  13. Img1(s).Top = ZazGor2 + (Img1(1).Height + ZazGor1) * i
  14. Img1(s).Left = ZazVer2 + (Img1(1).Width + ZazVer1) * j
  15. Next j
  16. Next i:
  17. End Sub

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


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

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

15   голосов , оценка 4.267 из 5

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

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

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