Ваш комментарий ниже:
Что я имею в виду следующее: If Text1.text = ""
Тогда мне нужен этот 1
быть заменен переменной I
, так что цикл может быть зациклена через мои 5 текстовых и то же для моего Этикетки.
Вы не можете этого сделать (найдите переменную, используя выражение для создания своего имени) в VB6. (Edit:.. Хотя это утверждение верно, это не правда, что вы не можете посмотреть форму управления используя имя из выражения См «альтернативный» ниже)
Что вы можете сделать, это сделать массив ваших текстовых полей, а затем индексируйте в этот массив. Dev env даже поможет вам в этом: откройте свою форму в dev env и нажмите на первое текстовое поле. Измените его имя на имя, которое вы хотите, чтобы массив имел (возможно, TextBoxes
). Затем щелкните следующее текстовое поле и измените его имя на одно и то же (TextBoxes
). DEV окр спросит вас:
(Не спрашивайте меня, почему у меня есть виртуальная машина валяется с VB6 на нем ...)
Нажмите кнопку Да, а затем вы можете переименуйте другие текстовые поля TextBoxes
, чтобы добавить их в массив. Затем сделайте то же самое для своих лейблов.
Тогда ваш код должен выглядеть следующим образом:
For I = TextBoxes.LBound To TextBoxes.UBound
If TextBoxes(I).Text = "" Then
Labels(I).ForeColor = &HFF&
Else
Labels(I).ForeColor = &H80000012
End If
Next
LBound
самый низкий индекс массива элементов управления, UBound
является самым высоким. (Вы не можете использовать стандартные LBound
и Ubound
, которые принимают массив как аргумент, потому что массивы управления не совсем нормальные массивы.) Обратите также внимание на то, что нет необходимости ставить I
на строку Next
, которая не была обязательной так как VB4 или VB5. Вы можете, хотя, если вам нравится быть явным.
Просто убедитесь, что у вас точно такое же число TextBoxes
, что и Labels
. Кроме того, вы можете создать пользовательский элемент управления, состоящий из метки и текстового поля, а затем иметь контрольный массив вашего пользовательского элемента управления.
Альтернатива:: Вы можете использовать Controls
массив для поиска элемента управления, используя имя полученное из выражения, например:
For I = 1 To 5
If Me.Controls("Text" & I).Text = "" Then
Me.Controls("Label" & I).ForeColor = &HFF&
Else
Me.Controls("Label" & I).ForeColor = &H80000012
End If
Next
Это имеет преимущество отображения над к очень похожая конструкция в VB.Net, если вы в какой-то момент мигрируете.
Примечание стороны:
Я сейчас пытаюсь вам узнать VB6 ...
(Т.Л., д-р - я рекомендовал бы узнать что-то другое вместо VB6 устарел и dev env не поддерживается в течение многих лет.)
Среда разработки VB6 была прекращена и не поддерживается в течение многих лет (с 2008 года). Время выполнения все еще (я считаю) поддерживается из-за огромного количества приложений, которые его используют, хотя последний патч, кажется, from 2012. Но FWIW, вы получите лучшую отдачу от учебного времени, изучая VB.net или C# .Net (или любой из нескольких языков, отличных от Microsoft), а не VB6 ...
Что я имею в виду: 'If Text1.text = "" Then' Мне нужно, чтобы этот 1 был заменен переменной I, поэтому цикл for может проходить через мои 5 текстовых полей и то же самое для моих ярлыков. Мне очень жаль, что я так не понял – user2479441
@ user2479441: Ах! Теперь я понимаю. Я обновил ответ. –
Спасибо, много! Это было именно то, что мне нужно. Извините снова за то, что вы так не поняли. С наилучшими пожеланиями, Тим Смитс – user2479441