Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Не получается связать формы


Автор: AHTOH 9.7.2008, 10:03
Например есть TextBox, я ввожу "ПРОБА", открываю другую форму, там есть Label, Label caption должен равняться тексту,  введенному в  TextBox на первой форме, я пишу во второй форме:
Код

Private Sub Form_Load()
label1.caption=form1.Text1.text
End Sub

где form1 - имя первой формы
Но почемуто так не работает, в чём проблема?

Автор: Naghual 9.7.2008, 10:15
Как объявлены и как вызываются эти формы?

Автор: AHTOH 9.7.2008, 10:39
ФОРМЫ: Form1 и Form2
форма вызывается: 
Код

Private Sub Command12_Click()
Dim frm As Form2
frm.Show
End Sub

Автор: AHTOH 9.7.2008, 12:09
ну помогите же 

Автор: Akina 9.7.2008, 14:37
А зачем так дико вызывается вторая форма? ведь ты лишаешь ее методов... будь проще:
Код

Private Sub Command12_Click()
Load Form2
Form2.Visible = True
End Sub
Ну если надо, то еще SetFocus

Автор: AHTOH 9.7.2008, 15:01
сделал по вашему, пишу в загрузке формы:
Код

Private Sub Form_Load()
label1.caption=form1.Text1.text
End Sub

изначальное значение  Text1.text равняется 0, я меняю его например на 777, открываю вторую форму, label1.caption равняется 0, НО не 777, как сделать так, что бы label1.caption ранялся 777?

Автор: Naghual 9.7.2008, 15:43
А form1 как открылась?

Автор: Akina 9.7.2008, 15:43
Цитата(AHTOH @  9.7.2008,  16:01 Найти цитируемый пост)
как сделать так, что бы label1.caption ранялся 777? 

Блин, сперва надо ОТКРЫТЬ форму, или как минимум ее загрузить, и лишь потом устанавливать значения её контролов!

Автор: AHTOH 9.7.2008, 16:06
И так, есть форма MDI форма, в Form1 я захожу через меню формы MDI, а в Form2 я захожу через кнопку, которая расположена на Form1 

Автор: Naghual 9.7.2008, 16:21
Все работает, даже если делать ГРЯЗНО и Не КРАСИВО!


MDI:
Код

Private Sub frm1_Click()
    Form1.Show
End Sub


Form1:
Код

Private Sub Command1_Click()
    Form2.Show
End Sub


Form2:
Код

Private Sub Form_Load()
    Form2.Label1.Caption = Form1.Text1.Text
End Sub




Разбирайся, что у тебя не так

Автор: Akina 9.7.2008, 17:25
Цитата(AHTOH @  9.7.2008,  17:06 Найти цитируемый пост)
есть форма MDI форма

Так она MDI, оказывается... давай-ка сразу рассказывай, чего мы еще не знаем. А то все телепаты у нас в отпуске, как назло....

Автор: mb78 11.7.2008, 19:04
У меня в  Private Sub Form Load тоже не все получается.
Попробуйте то же самое сделать в Command1 в форме 2.
Если тоже будет ошибка , значит ошибка в выражении:
label1.caption=form1.Text1.text 

и еще label1 и form1 лучше писать с большой буквы.
Попробуйте так:
Form2.Label1.Caption=Form1.Text1.text и сделайте лучше в Command1 или Timer1
Обычно в таймере у меня все получается.

Автор: Naghual 11.7.2008, 23:41
mb78, про большие буквы - это вы батенька Бредите!
В Форме 2 по условию НЕТ кнопок

Автор: mb78 12.7.2008, 01:08
Действительно ,маленькие буквы автоматически исправляются на большие.
А кнопку я посоветовал поставить временно,чтобы проверить ,что ошибка получается  потому,что
код расположен в Form Load, или оттого что какая-то другая ошибка.

Автор: mb78 12.7.2008, 01:31
Попробовал у меня получилось 
вот откомпилированный файл

Автор: mb78 12.7.2008, 02:10
Form2 добавил через Add Form  в меню
Если кому нужны исходники:

Автор: Naghual 12.7.2008, 23:36
Цитата(mb78 @  12.7.2008,  01:31 Найти цитируемый пост)
вот откомпилированный файл 

Ты лучше САМ это удали, пока админы местные тебе Ай-ай не сказали

Добавлено через 54 секунды
Здесь (и на большинстве нормальных форумах) так не принято!

Автор: JusTalionis 13.7.2008, 13:22
mb78,  посмотрел твой исходник. А где внем присвоение имени САМОЙ форме? Там только присвоение имени Labelю!
Добавл присвоение имени форме: 
Код

Private Sub Form_Load()
Me.Caption = Form1.Text1.Text                   'устанавливаем заголовок текущей форме
Form2.Label1.Caption = Form1.Text1.Text
End Sub

и у меня всё заработало...

Автор: mb78 28.7.2008, 22:51
Форма 2 добавляется к проекту через AddForm в меню Visual Basic . 
Затем в форме 1 пишется Form2.Show . После этого появляется вторая форма  
и начинает выполняться написанный в ней код.

Автор: mb78 28.7.2008, 23:10
Цитата(JusTalionis @ 13.7.2008,  13:22)
mb78,  посмотрел твой исходник. А где внем присвоение имени САМОЙ форме? Там только присвоение имени Labelю!
Добавл присвоение имени форме: 
Код

Private Sub Form_Load()
Me.Caption = Form1.Text1.Text                   'устанавливаем заголовок текущей форме
Form2.Label1.Caption = Form1.Text1.Text
End Sub

и у меня всё заработало...

Посмотрел начало форума и не нашел в условии задачи давать имя форме  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)