Страница: 1 |
Страница: 1 |
Вопрос: Почему не работает? For ... Next
Добавлено: 05.04.05 15:34
Автор вопроса: Andrey999 | Web-сайт:
Option Explicit
Dim WithEvents Text1 As TextBox
Private Sub Form_Load()
Dim index As Long
For index = 0 To 5
Set Text1(index) = Form1.Controls.Add("vb.textbox", "text1")
Text1(index).Move 40, 40
Text1(index).Visible = True
Next
End Sub
Ответы
Всего ответов: 11
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 05.04.05 17:38
Массив контролов - вещь в себе ещё та (в частности, фиг поймёшь, загружен контрол или нет, потому что Is Nothing здесь не прокатывает).
Для работы с массивом контролов ничего, кроме Load Text1(Index) и Unload Text1(Index) юзать лучше не надо...
Номер ответа: 2
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #2
Добавлено: 05.04.05 18:32
Если нужен массив контролов то хотелось бы так
Dim WithEvents Text1() As TextBox
но нельзя.
Зато можно так:
Option Explicit
Private Texts() As clsText
Private Sub Form_Load()
Dim i As Long, j As Long
ReDim Texts(0 To 5)
j = 1 - LBound(Texts) + UBound(Texts)
For i = LBound(Texts) To UBound(Texts)
Set Texts(i) = New clsText
With Texts(i)
Set .Parent = Me
.Index = i
Set .Control = Controls.Add("VB.textbox", "Text" & i)
With .Control
.Text = i
.Visible = True
Call .Move(0, Me.ScaleHeight * i / j, Me.ScaleWidth, Me.ScaleHeight / j)
End With
End With
Next i
End Sub
Public Sub Text1_Change(ByVal Text1 As clsText)
Debug.Print "Change " & Text1.Index
End Sub
Public Sub Text1_Click(ByVal Text1 As clsText)
MsgBox Text1.Control.Text
End Sub
и классик
Option Explicit
'classname=clsText
Public Parent As VB.Form
Public WithEvents Control As VB.TextBox
Public Index As Long
Private Sub Control_Click()
Call Parent.Text1_Click(Me)
End Sub
Private Sub Control_Change()
Call Parent.Text1_Change(Me)
End Sub
Номер ответа: 3
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #3
Добавлено: 05.04.05 19:30
Что-то он на строчке
Private Texts() As clsText
пишет:
Определяемый тип пользователем не определен
Номер ответа: 4
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #4
Добавлено: 05.04.05 20:00
Сори все, разобрался, не увидел класс просто пролистал его быстро.
Номер ответа: 5
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #5
Добавлено: 05.04.05 22:10
А как сделать чтобы было не text1, text2... , text1(0), text1(1).... массив
Номер ответа: 6
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #6
Добавлено: 06.04.05 11:43
массив тут Texts:
Texts(0).Control.Text = "hello"
Номер ответа: 7
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #7
Добавлено: 06.04.05 11:56
Что-то я не пойму куда его вставить
"Я же не спец я только учусь"
Номер ответа: 8
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #8
Добавлено: 06.04.05 13:52
Дальнейшие пояснения будут тратой времени, скажи что ты хочеш сделать и накой тебе массив контролов, да еще и создаваемых налету?
Номер ответа: 9
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #9
Добавлено: 06.04.05 15:19
Есть база данных Аксесс на форме надо сделать так чтобы появлялись Text1(массив) в зависимости от количества строк в базе (там их не много где-то около от 1 до 50) и потом дальше textbox заполняются значениями вот так: Text1(Index) = Data3.Recordset![ID_SORTCODE] но из другой таблицы. Если я делаю просто (Text1(Index) создаю сам на форме) то прекрасно работает, но мне не нужны на форме лишние Text1(), если в таблице 5 записей то и должно быть 5 text1(0), text1(1), text1(2), text1(3), text1(4)
Вот так.
Номер ответа: 10
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #10
Добавлено: 06.04.05 16:06
>заполняются значениями вот так: Text1(Index) = Data3.Recordset![ID_SORTCODE]
ну и используй
Texts(Index).Control.Text = Data3.Recordset![ID_SORTCODE]
я ж уже написал...
Номер ответа: 11
Автор ответа:
Andrey999
ICQ: 30852361
Вопросов: 73
Ответов: 168
Web-сайт:
Профиль | | #11
Добавлено: 06.04.05 18:10
Все получилось!
Огромнейшее спасибо!!! Это для спеца просто, а я не знаю как его использовать.