Передача параметров

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kolonok
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 15.05.2008 (Чт) 6:36

Передача параметров

Сообщение kolonok » 15.05.2008 (Чт) 8:49

Доброго всем!..

Можно ли открываемой форме передавать параметры?
и если да - то как? =)
Не стреляйте в белых лошадей

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 15.05.2008 (Чт) 9:29

О, способов куча! Если ты говоришь о передаче внутри одного приложения, то Просто обращаешься к контролам на форме для чтения или записи значений (естественно, пока она загружена).

Ну, например:
Код: Выделить всё
Form2.Caption = "Справочник"
Form2.Button1.Caption = "Готово"
Form2.List1.Visible = True


Ну а в целом, поиск по форуму тебе поможет.. в каждом конкретном случае.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

kolonok
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 15.05.2008 (Чт) 6:36

Сообщение kolonok » 15.05.2008 (Чт) 10:00

Денис, спасибо вопрос ясен.

про такой способ - это понятно. хотелось "поизящней" =).

к тому же передавать планировал рекордсет, или, скажем, массив
Не стреляйте в белых лошадей

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 15.05.2008 (Чт) 12:10

Ну давайте подождем способов поизящней.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

JohnK
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 874
Зарегистрирован: 03.08.2002 (Сб) 0:35
Откуда: 48.02` 37.58`

Сообщение JohnK » 15.05.2008 (Чт) 22:28

kolonok
Уточни вопрос. Когда и откуда открывается форма?
Если при запуске проги, то можно передавать параметры как из файла, реестра так и из командной строки.
Если же ты просто динамически создаешь еще одно окно внутри проекта, то глобальная переменная тебе в помощь!
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 16.05.2008 (Пт) 6:55

Можно ли открываемой форме передавать параметры?
Тут недавно спрашивали про передачу параметров в запускаемый ЕХЕшник. Народ жгет по полной. Ни ЕХЕшник, ни форма, ни окно - это НЕ ФУНКЦИЯ, о какой передачи параметров может идти речь? :?

Просто обращаешься к контролам на форме для чтения или записи значений

хотелось "поизящней" =).

Ну давайте подождем способов поизящней.

И долгожданный, изящный способ:
можно передавать параметры как из файла, реестра так и из командной строки.
Параметры чему? ЕХЕшнику, форме? Я в шоке.

Вообще, изначально вопрос должен был звучать либо так:

Как можно совместно использовать некоторые (любые) данные в разных формах?

Или так:

Как мне обратиться к переменным одной формы из другой?

Предлагаю выполнить несколько шагов:
1. Создать в проекте модуль.
2. Объявить в нем нужные переменные как Public.
3. Юзать их наздоровье из любой точки программы.
4. Все же, задавать вопросы более корректно и не путаться в терминах и определениях.
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.05.2008 (Пт) 8:21

Я обычно использую такую конструкцию:
Код: Выделить всё
'Form

Option Explicit

Private varResult As Long
Private varArgument1 As Long

...

Public Function DoInput(Parent As Form, ByRef Param1 As Long) As Boolean
varArgument1 = Param1
Me.Show vbModal, Parent
If varResult = 1 Then
  Param1 = varArgument1
  DoInput = True
End If
Unload Me
End Sub

...

Private Sub cmdOK_Click()
varResult = 1
Me.Hide
End Sub



'parent
Dim frm As Form1, V As Long
Set frm = New Form1
Load frm
If frm.DoInput(V) Then
  MsgBox V
End If
Set frm = Nothing


Если форма немодальная, то тогда просто публичные переменные на уровне формы и публичный метод FormInit (вызываемый из родительской формы), в котором инициализируется интерфейс.
Lasciate ogni speranza, voi ch'entrate.

kolonok
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 15.05.2008 (Чт) 6:36

Сообщение kolonok » 16.05.2008 (Пт) 10:47

идея была открывать модальную форму и натравливать ее на рекордсет (вариант - массив).
Просто не хотелось юзать Public .

Огромное всем спасибо!
Twister,
п.4. - постараюсь воспользоваться =)
Не стреляйте в белых лошадей

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.05.2008 (Пт) 11:36

Можно сделать Public переменную уровня формы и передать ей.
Можно в форме сделать Public процедуру/функцию, передавать ей параметры

Код: Выделить всё
' В вызывающей форме:
'-----------
Dim f As New MyModalForm
...
If f.ShowForm(r, ...) Then
...
'-----------
' В модальной форме:
'-----------
Pubic Function ShowForm(r As ADODB.Recordset, ... ) As Boolean
    ....
    Show Screen.ActiveForm, vbModal
    Par7 = ...
    ShowForm = ...
End Function
'-----------
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Сообщение Денис » 16.05.2008 (Пт) 12:21

В принципе, все зависит от того, что должно дальше происходить с передаваемым параметром, должно ли окно просто отображать необходимые значения или должно работать с полученными массивами или объектами, а потом возвращать их. В случае работы с БД, ИМХО удобнее работать с заранее объявленными в отдельном модуле Public-объектами.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 16.05.2008 (Пт) 15:03

Ну так можно и рекордсет так передать..

В родителе (frmMain) -
public objRec as Recordset

В модальной форме -
Dim oMyRec as Recordset

При открытии модальной формы -
Set oMyRec = frmMain.objRec

И далее работаем с oMyRec.. Это как вариант )
label:
cli
jmp label


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 73

    TopList  
cron