Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Почему не работает? For ... Next Добавлено: 05.04.05 15:34  

Автор вопроса:  Andrey999 | Web-сайт: www.radio-device.narod.ru | ICQ: 30852361 
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-сайт: sur.hotbox.ru/
 Профиль | | #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-сайт: www.radio-device.narod.ru
 Профиль | | #3
Добавлено: 05.04.05 19:30
Что-то он на строчке
Private Texts() As clsText
пишет:
Определяемый тип пользователем не определен

Ответить

Номер ответа: 4
Автор ответа:
 Andrey999



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #4
Добавлено: 05.04.05 20:00
Сори все, разобрался, не увидел класс просто пролистал его быстро.

Ответить

Номер ответа: 5
Автор ответа:
 Andrey999



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #5
Добавлено: 05.04.05 22:10
А как сделать чтобы было не text1, text2... , text1(0), text1(1).... массив

Ответить

Номер ответа: 6
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #6
Добавлено: 06.04.05 11:43
массив тут Texts:
Texts(0).Control.Text = "hello"

Ответить

Номер ответа: 7
Автор ответа:
 Andrey999



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #7
Добавлено: 06.04.05 11:56
Что-то я не пойму куда его вставить :(
"Я же не спец я только учусь"

Ответить

Номер ответа: 8
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #8
Добавлено: 06.04.05 13:52
Дальнейшие пояснения будут тратой времени, скажи что ты хочеш сделать и накой тебе массив контролов, да еще и создаваемых налету?

Ответить

Номер ответа: 9
Автор ответа:
 Andrey999



ICQ: 30852361 

Вопросов: 73
Ответов: 168
 Web-сайт: www.radio-device.narod.ru
 Профиль | | #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-сайт: sur.hotbox.ru/
 Профиль | | #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-сайт: www.radio-device.narod.ru
 Профиль | | #11
Добавлено: 06.04.05 18:10
Все получилось!
Огромнейшее спасибо!!! Это для спеца просто, а я не знаю как его использовать.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам