powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по массиву
6 сообщений из 6, страница 1 из 1
Вопрос по массиву
    #33346455
Larisonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пож-ста, новичку как узнать принадлежность данного столбца MSFlexGrida к одномерному массиву столбцов. Или может кто-то подскажет др. путь. Хочу запретить ввод текст. символов в столбцы с числами. Для этого создала массив с номерами числовых столбцов и хотела повесить это на событие Key_down.
...
Рейтинг: 0 / 0
Вопрос по массиву
    #33346513
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вам удалось ввести с клавиатуры текст в MSFlexGrid ?
...
Рейтинг: 0 / 0
Вопрос по массиву
    #33349040
Larisonka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WorobjoffКак вам удалось ввести с клавиатуры текст в MSFlexGrid ?
Вот таким образом
Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 13
With MSFlexGrid1
If .Col + 1 <= .Cols - 1 Then
.Col = .Col + 1
.Row = 1
Else
.Col = 0
.Row = 1
End If
End With
Case 8
With MSFlexGrid1
If Trim(.text) <> "" Then _
.text = Mid(.text, 1, Len(.text) - 1)
End With
Case Else
With MSFlexGrid1
.text = .text & Chr(KeyAscii)

End With
End Select
End Sub
...
Рейтинг: 0 / 0
Вопрос по массиву
    #33349109
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
могу предложить такой вариант

создать массив размерностью равной кол-ву столбцов в гриде и писать там либо единицу либо 0 (или что-то подобное, к примеру true false)
и в процедуре обрабатывать

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
public fldArr() as boolean
public sub From_Load()
  redim fldArr(MSFlexGrid1.Colls)
end sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
  Select Case KeyAscii
    Case  13 
      With MSFlexGrid1
        If .Col +  1  <= .Cols -  1  Then
        .Col = .Col +  1 
        .Row =  1 
      Else
        .Col =  0 
        .Row =  1 
      End If
    End With
  Case  8 
    With MSFlexGrid1
      If Trim(.text) <> "" Then _
        .text = Mid(.text,  1 , Len(.text) -  1 )
    End With
  Case Else
     With MSFlexGrid1
      if fldArr(MSFlexGrid1.Col) then _
        .text = .text & Chr(KeyAscii)
     End With
  End Select
End Sub

хотя, вероятно, есть и другое, более правильное, решение
...
Рейтинг: 0 / 0
Вопрос по массиву
    #33349110
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
Option Explicit

Private Type TColDescriptor
   fcIndex As Long
   fcCaption As String
   fcEnabled As Boolean
End Type

Dim ColDescriptor() As TColDescriptor

Dim ColEnabled() As Boolean

Private Sub MyFlexInit()
   Dim i As Long
   With MSFlexGrid1
      ReDim ColDescriptor(.Cols -  1 )
      For i =  0  To .Cols -  1 
         ColDescriptor(i).fcCaption = .TextMatrix( 0 , i)
         ColDescriptor(i).fcEnabled = True
         ColDescriptor(i).fcIndex = i
      Next
   End With
End Sub

Private Property Get ColumnEnabled(ByVal Key As Variant) As Boolean
   Dim i As Long
   If IsNumeric(Key) Then
      ColumnEnabled = ColDescriptor(Key).fcEnabled
   Else
      For i =  0  To UBound(ColDescriptor)
         If ColDescriptor(i).fcCaption = Key Then
            ColumnEnabled = ColDescriptor(i).fcEnabled
         End If
      Next
   End If
End Property
Private Property Let ColumnEnabled(ByVal Key As Variant, ByVal NewEnabled As Boolean)
   Dim i As Long
   If IsNumeric(Key) Then
      ColDescriptor(Key).fcEnabled = NewEnabled
   Else
      For i =  0  To UBound(ColDescriptor)
         If ColDescriptor(i).fcCaption = Key Then
            ColDescriptor(i).fcEnabled = NewEnabled
         End If
      Next
   End If
End Property

Private Sub Form_Load()
'Инициализация заголовков
   With MSFlexGrid1
      .Cols =  7 
      .TextMatrix( 0 ,  0 ) = "Первый"
      .TextMatrix( 0 ,  1 ) = "Второй"
      .TextMatrix( 0 ,  2 ) = "Третий"
      .TextMatrix( 0 ,  3 ) = "Четвертый"
      .TextMatrix( 0 ,  4 ) = "Пятый"
      .TextMatrix( 0 ,  5 ) = "Шестой"
      .TextMatrix( 0 ,  6 ) = "Седьмой"
   End With
'Инициализация описателя (вызывать всегда после переопределения колонок грида)
   MyFlexInit
'Обращение по имени колонки
   ColumnEnabled("Второй") = False
   ColumnEnabled("Четвертый") = False
'Обращение по номеру колонки
   ColumnEnabled( 5 ) = False
End Sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
   If ColDescriptor(MSFlexGrid1.Col).fcEnabled = True Then
      Select Case KeyAscii
         Case  13 
            With MSFlexGrid1
               If .Col +  1  <= .Cols -  1  Then
                  .Col = .Col +  1 
                  .Row =  1 
               Else
                  .Col =  0 
                  .Row =  1 
               End If
            End With
         Case  8 
            With MSFlexGrid1
               If Trim(.Text) <> "" Then _
               .Text = Mid(.Text,  1 , Len(.Text) -  1 )
            End With
         Case Else
            With MSFlexGrid1
               .Text = .Text & Chr(KeyAscii)
            End With
      End Select
   End If
End Sub
Можно оформить все красиво, написав класс-обертку гриду, и добавив кучу функционала.
Но стоит ли? Когда есть True DBGrid
...
Рейтинг: 0 / 0
Вопрос по массиву
    #33352409
Всем спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос по массиву
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]