Страницы: 1
RSS
Передача аргументов пользовательской форме.
 
Добрый день.

Пытаюсь сделать универсальную форму для ввода данных.
Идея такая: есть ПЕРВАЯ ФОРМА с текстбоксом, если в нем не хватает места, то можно нажать на кнопку откроется ВТОРАЯ ФОРМА с текстбоксом большого размера. В этот текстбокс мы вводим текст, нажимаем ок, и текст переносится в текстбокс первой формы.
ПЕРВЫХ ФОРМ много и они разные. А ВТОРАЯ ФОРМА должна быть одна универсальная.

То есть, по идее надо по нажатию на кнопку на ПЕРВОЙ ФОРМЕ передать во ВТОРУЮ ФОРМУ имя текстбокса, в который надо вставить текст из второй формы.

Подскажите, можно ли так сделать?
Желательно не использовать при этом глобальные переменные.
 
Добрый день!
Сделать можно, но по-моему вы фигней страдаете. Сделайте первую форму большого размера и не мучайтесь.
 
slepoi_kamin,
Цитата
Андрей_26: Сделайте первую форму большого размера и не мучайтесь
аналогичный вопрос - почему СРАЗУ не сделать форму с большим полем?

По задаче: можно сделать (может быть даже глобальных переменных, но это не точно и непонятно, чем они вам мешают)
Изменено: Jack Famous - 27.05.2020 20:14:56
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
slepoi_kamin, объясните необходимость второй формы? Почему нельзя вводить текст сразу в "первые"?
И про глобальные переменные: если вторая форма не выгружена, разве нельзя из неё взять значение в первую напрямую?
 
Андрей_26, подскажите пожалуйста, как это сделать.

По поводу размера... Изначально делал боксы большего размера, в некоторых уменьшал шрифты, чтобы можно было прочесть все. Но во многих формах боксов, в которые иногда нужно вводить много текста несколько (3 - 5 штук). Если делать каждый бокс большого размера, то формы становятся огромными. Тогда я стал делать отдельные формы для ввода. Но делать отдельную форму для каждого подобного текстбокса как-то не практично. Это как писать отдельную функцию, для разового ее применения.

Jack Famous,  мне они сильно не мешают, но я их стараюсь не использовать. В приложении несколько десятков модулей, где необходимо (т.е. без них не обойтись) использую глобальные переменные. В остальных случаях предпочитаю их не использовать. Тут, казалось бы, можно и без них обойтись - просто передать форме имя текстбокса, в который после нажатия клавиши записать текст.
 
Один из вариантов.
В следующий раз не поленитесь формы накидать.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Цитата
slepoi_kamin написал:
Идея такая: есть ПЕРВАЯ ФОРМА с текстбоксом, если в нем не хватает места, то можно нажать на кнопку откроется ВТОРАЯ ФОРМА с текстбоксом большого размера.
пусть количество танков будет Х, нет, это мало, пусть будет У!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Юрий М, я прикрепил примерный вид форм. Соответственно первая форма - userform1, вторая универсальная форма - userform2.
На первой форме много полей для ввода. Рядом маленькие кнопочки, вызывающая вторую форму. Текст, который вводится может быть очень громоздким, и его нужно видеть весь. Кроме того на второй форме есть библиотека карт(грубо говоря - функций) с форматом их записи. И вторую форму планируется использовать во многих местах. не только с формой один.
После ввода текста во вторую форму и нажатия ок этот текс должен оказаться в соответствующем поле на первой форме.

Надеюсь понятно объяснил.
 
slepoi_kamin,
понимаете в один ТекстБокс вы можете поместить роман Толстого "Война и мир", что вам еще нужно?
зачем вам второй ТекстБокс???
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь, я так понимаю, что автору хотелось бы в процессе ввода видеть ВЕСЬ текст.
 
да, с "Войной и мир" в одном ТекстБоксе будет облом по любому
решение - скроллер в ТекстБоксе и по-барабану сколько в нем текста
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
slepoi_kamin написал:
Надеюсь понятно объяснил.
Вполне.
Но отсутствие сиих форм превращает эту задачу в совершенно не разрешимую.

PS Я пытался писать макросы в картинках, не работают, заразы!
 
Цитата
Alemox написал:
В следующий раз не поленитесь формы накидать.
Неужели на самом деле это так трудно сделать? Ведь помощь нужна ВАМ, а формы должны рисовать помогающие. Экономьте их время.
См. вариант.
 
Цитата
Ігор Гончаренко написал:
скроллер в ТекстБоксе и по-барабану сколько в нем текста
Игорь, надеюсь, автор это знает, но хочет видеть сразу ВЕСЬ ТЕКСТ при наборе. )
 
Господа, дико извеняюсь за отсутствие примера. Я ожидал получить ответ типа такого:
При вызове формы запишите в скобках аргументы, которые вы в нее передаете... получится примерно так:
Код
UserForm(argument,argument).Show

Поэтому пример не приложил.

Юрий М, Alemox, спасибо за примеры. Не совсем то, но они помогли. Проблема в том, что в коде фторой формы вы непосредственно ссылаетесь на первую. но первая форма может быть любой другой. То есть вторая форма должна работать с любой формой проекта.

Я сделал два варианта. Первый работает через Public переменную, второй при помощи Public Sub. Пока не придумал ничего другого. Второй вариант выглядит удобнее. Форму можно использовать в любом модуле проекта.

 
Привет!
Код
Function User_Form( _
  argument1 As String) _
  As String
  UserForm2.TextBox1.Text = argument1
  UserForm2.Show
  User_Form = UserForm2.TextBox1.Text
End Function
Сравнение прайсов, таблиц - без настроек
 
Inexsu, привет. Вы правы, с функцией еще удобнее будет.  
Страницы: 1
Наверх