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


Автор: Веди 24.11.2016, 19:33
привет, друзья!

есть основная форма virm, есть пункт меню "Размеры", после нажатия на который открывается диалоговое окно (форма inGrid).
на нём два горизонтальных скролла, с их помощью выбираем 2 нужных значения х и у. После подтверждения кнопки ОК:
Код

Private Sub inOK_Click(Index As Integer)
  inGrid.Hide 'убираем окно диалога
  X = HScrolX.Value
  Y = HScrolY.Value
  virm.Cls 'очищаем экран
  virm.pGrid X, Y 'выполняем функцию из основной формы
End Sub


всё замечательно работает, но теперь для дальнейшей работы программы надо объявить в основной форме virm, массив А(х,у) с теми самыми данными от диалогового окна inGrid. При этом после повторного использования меню "Размеры", и выбора других данных в диалоговом окне, массив А(х,у) должен соответственно измениться.
как это сделать, и где?

Автор: Akina 24.11.2016, 20:58
Цитата(Веди @  24.11.2016,  20:33 Найти цитируемый пост)
где? 

В паблик-функции основной формы, например.

Цитата(Веди @  24.11.2016,  20:33 Найти цитируемый пост)
как это сделать

Вызвать её на исполнение, и передать значения как параметры.

Автор: Милениум 24.11.2016, 22:57
Тоже начал изучать VB . Ток книги какие-то поверхностные либо сложные. что посоветуете?

Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/peredacha-dannykh-mezhdu-formami-i-obyavleniye-massiva-id583716f1b4c92c517e12e5b2#findElement_E7045_583746420ef42f455f7ae9ee_0

Автор: Веди 25.11.2016, 00:42
Спасибо огромное. удалось передать данные х и у:
Код

Public Sub PublMet(xp As Integer, yp As Integer)
x = xp
y = yp
Dim dimGrid(x, y)
End Sub


однако когда пробую задать массив то ошибка, в каком месте его определять-то?

Автор: Akina 25.11.2016, 07:49
Цитата(Веди @  25.11.2016,  01:42 Найти цитируемый пост)
когда пробую задать массив то ошибка, в каком месте его определять-то?

Тебе его надо ПЕРЕопределять. Поэтому его надо определить на уровне модуля как динамический (т.е. без указания размеров, голые скобки), а в своей процедуре изменять его размер оператором ReDim. 
Рекомендую очень внимательно прочитать справку по оператору, особенно если необходимо при переопределении сохранять уже имеющиеся в массиве значения (PRESERVE).

Автор: Веди 25.11.2016, 10:36
пере-сохранять данные не надо как раз, после нового создания массива он будет обнуляться. ибо данные надо будет сохранять в файле или БД ещё не решил.

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