Image: не реагирует на изменение .BorderStyle, если .Stretch =True? - VB
Формулировка задачи:
В форме куча контролов Image (массив imgLTR(32)). Код между звездочками *********.
В процедуре обработки клика на рисунке он временно "вдавливается" путем изменения .BorderStyle. Все работает...
...Однако, если свойство .Stretch установлено true (программно или нет, без разницы),
то никакого вдавливания не происходит!
Кто подскажет в чем прикол и как временно выделить кликнутый image (не переходя на ненужный PictureBox)?
Кстати проверил: командой с кнопки вдавливается, а с клика нет!
Листинг программы
- Private Sub Form_Activate()
- Const btZazor As Byte = 10: Const btIntZazor = 10
- Dim StartLng As String
- Dim i As Byte, rw As Byte, stlb As Byte
- Dim btNumLet As Byte
- Dim ltrHeight As Long, ltrShir As Long 'height and width of single ltr-imageBox
- Dim OptModeNames As Variant
- ' OptModeNames = Array( .....
- '.....тут обрабатываются другие контролы и путь к базе. Пропущено вместе с их переменными
- '....
- 'btNumLet = 22 'Public:removed and readed from *.MDB or *.ini
- With FrmChilDic
- .WindowState = 2
- ltrShir = (.ScaleWidth - 8 * btZazor) / 7: ltrHeight = (.ScaleHeight - 6 * btZazor) / 5
- End With
- '************************************************************************* pictures-ltrs filing
- With ImgLTR(0) '1st ltr-imageBox in array
- .Left = btZazor: .Top = btZazor
- .Height = ltrHeight: .Width = ltrShir
- .Stretch = True
- End With
- For i = 2 To 35 ' 7 x 5 image-boxes 1st imgBox index = 0
- If i > 33 Then GoTo ni '2 last places are reserved for controls. no lng with more than 33 ltrs
- Load ImgLTR(i - 1)
- rw = (i - 1) \ 7 + 1: stlb = (i - 1) Mod 7 + 1
- With ImgLTR(i - 1)
- .Left = stlb * btZazor + (stlb - 1) * ltrShir: .Top = rw * btZazor + (rw - 1) * ltrHeight
- .Height = ltrHeight: .Width = ltrShir
- .Visible = True
- End With
- ni:
- Next i
- ' Call ltrFill(StartLng, btNumLet) 'The Call is performed from cmbLNG_click [stratlng is defined in *.ini]
- '**************************************************************************
- End Sub
- Private Sub ImgLTR_Click(Index As Integer)
- With ImgLTR(Index)
- .BorderStyle = 1 'ВДАВЛИВАЕМ !!!!!!!
- Dim sndPath As String 'sound file *.wav ' обработка клика - можно не читать
- Dim sLngWay As String
- Select Case btMODE 'modul-function
- Case 1
- sLngWay = Trim(cmbLNG.Text)
- sndPath = aPath & sLngWay & "\" & sLngWay & "SOUND\" & CStr(Index + 1) & sLngWay & ".wav"
- If cdFilEx(sndPath) Then Call sndPlaySound(sndPath, &H0) 'API Function
- End Select
- .BorderStyle = 0 'ВОЗВРАЩАЕМ !!!!!!!!!
- End With
- End Sub
- Private Sub cmdStart_Click()
- ImgLTR(1).BorderStyle = 1 'ВДАВЛИВАЕМ - проверка
- End Sub
Решение задачи: «Image: не реагирует на изменение .BorderStyle, если .Stretch =True?»
textual
Листинг программы
- Private Sub ImgLTR_Click(Index As Integer)
- With ImgLTR(Index)
- .BorderStyle = 1 'ВДАВЛИВАЕМ !!!!!!!
- .Refresh 'ОБНОВЛЯЕМ!!!!!!
- Dim sndPath As String 'sound file *.wav ' обработка клика - можно не читать
- Dim sLngWay As String
- Select Case btMODE 'modul-function
- Case 1
- sLngWay = Trim(cmbLNG.Text)
- sndPath = aPath & sLngWay & "\" & sLngWay & "SOUND\" & CStr(Index + 1) & sLngWay & ".wav"
- If cdFilEx(sndPath) Then Call sndPlaySound(sndPath, &H0) 'API Function
- End Select
- .BorderStyle = 0 'ВОЗВРАЩАЕМ !!!!!!!!!
- End With
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д