Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 | 3 | 4 |

 

  Вопрос: Доступность процедур и переменных Добавлено: 21.01.06 20:07  

Автор вопроса:  Wolfrt | ICQ: 225421504 
Как объявив переменную или функцию в одной форме, увидеть в остальных. Читал о типе Friend но не помогает. как быть?

Ответить

  Ответы Всего ответов: 50  

Номер ответа: 1
Автор ответа:
 Xrum



Вопросов: 14
Ответов: 14
 Профиль | | #1 Добавлено: 21.01.06 20:23
Кажется, есть что-то.... создать событие GetParam там, где надо получить, и слать SendMessage оттуда, откуда получаем

Ответить

Номер ответа: 2
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #2
Добавлено: 21.01.06 20:49
ее следует объявлять с использованием ключевого слово Public
такие переменные называются глобальными.

Вот так по понятней:
"Видимость" переменных:

Объявлять переменные можно в самых разных местах:

Внутри процедуры (или функции). В этом случае переменная будет "видна" только в коде этой процедуры (или функции). Если вы попытаетесь обратиться к такой переменной внутри кода другой процедуры, то Visual Basic сгенерирует ошибку.


В самом верху кода формы, т.е. сразу после оператора Option Explicit. Это место называется разделом General Declarations (раздел Глобальных Объявлений). Такие переменные будет "видны" в любом месте кода формы. Т.е. в любой процедуре (или функции) формы. Переменные в данном месте могут быть объявлены с помощью зарезервированных слов Private и Public. Рассмотрим 3 определения:

Dim myLocalVar1 As Byte
Private myLocalVar2 As Integer
Public myGlobalVar1 As Long

Первые 2 определения абсолютно эквивалентны. Переменные объявленные таким образом будут видны в любом месте кода формы. Но только той формы, где они объявлены. В других формах обратиться к таким переменным будет нельзя.

Третья переменная будет видна всему приложению в любом месте. Правда, чтобы добраться к такой переменной из кода другой формы, необходимо перед именем переменной указать ещё и имя формы, где эта переменная объявлена, например:

Form1.myGlobalVar1 = 234


В разделе General Declarations модуля. Здесь действуют те же правила, что и в разделе General Declarations формы. Private (или Dim) будут "видны" только в коде модуля. А Public - везде. Отличие наблюдается только в способе доступа к переменной. Здесь не обязательно указывать имя модуля перед такой переменной. Можно просто указать её имя и всё. Хотя я не рекомендую этого делать, т.к. теряется наглядность. И, к тому же, если у вас 2 модуля, в которых объявлены переменные с одинаковыми именами, то добраться к ним можно только указав имя соответствующего модуля перед именем переменной.


Ответить

Номер ответа: 3
Автор ответа:
 Wolfrt



ICQ: 225421504 

Вопросов: 8
Ответов: 60
 Профиль | | #3 Добавлено: 21.01.06 21:06
to root в том то и дело! Надо просто объявить переменную ка-то хитро! передовать между формами я умею! Темболее как фунпцию вызвать?

Ответить

Номер ответа: 4
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #4
Добавлено: 21.01.06 21:19
Когда переменная объявляется Dim - это означает, что область ее
использования будет только та процедура в которой она была описана,
такие переменные называются локальные, после выполнения процедуры их
значения будут потеряны.
Когда объявляешь Static, переменная тоже будет локальной, но после
выполнения процедуры значение не будет потеряно.
Если нужно чтобы переменная была доступна в нескольких процедурах
одного модуля, следует использовать оператор Private.
Причем объявлять следует в разделе Declarations(в самом верху формы,
где Option Explicit).
Ну а если неоюходима переменная, чтобы она была доступна всем модулям
данного приложения, ее объявляют с использованием Public - глобальная
(открытая), так же описываются в разделе Declarations.

$-) ну вроде все, ух...

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 21.01.06 22:06
А слабо в модуле как Public?

Ответить

Номер ответа: 6
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #6
Добавлено: 21.01.06 22:40
2HACKER:

использованием Public - глобальная
(открытая), так же описываются в разделе Declarations.


дык а я о чем?

Ответить

Номер ответа: 7
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #7 Добавлено: 22.01.06 01:01
чесно говоря я и не читал о чём ты... :)

Ответить

Номер ответа: 8
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #8
Добавлено: 22.01.06 09:10
2HACKER:
        А нада было!

Ответить

Номер ответа: 9
Автор ответа:
 Wolfrt



ICQ: 225421504 

Вопросов: 8
Ответов: 60
 Профиль | | #9 Добавлено: 22.01.06 10:13
Нет Public действует только на одну из форм приложения! Другим формам они не доступны!
Переменные это так к слову! Самое главное массивы с функциями постоянно не дублировать! Если, что речь про ВБ.НЕТ идёт!

Ответить

Номер ответа: 10
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #10
Добавлено: 22.01.06 10:44
Что если так объявляешь в модуле, действует только на одну форму?
хе-хе-хе!

Public ... As ...


Ответить

Номер ответа: 11
Автор ответа:
 Wolfrt



ICQ: 225421504 

Вопросов: 8
Ответов: 60
 Профиль | | #11 Добавлено: 22.01.06 10:52

Что если так объявляешь в модуле, действует только на одну форму?
хе-хе-хе!
Public ... As ...

Да! Сам посмотри!

Ответить

Номер ответа: 12
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #12
Добавлено: 22.01.06 10:56
Вот поиграй таким вот образом:

Форма:
Option Explicit
Private Sub Form_Load()
a = 1 'а здесь все будет рульно
b = 2 'Вот тут будет ошибка
c = 3 'и тут
Label1 = a
Label2 = b
Label3 = c
End Sub


Модуль:
Option Explicit
Public a As Byte
Private b As Byte
Dim c As Byte


Ответить

Номер ответа: 13
Автор ответа:
 Wolfrt



ICQ: 225421504 

Вопросов: 8
Ответов: 60
 Профиль | | #13 Добавлено: 22.01.06 11:23
root спасибо! за Option Explicit
полазил в MSDN подумал, в чачало формы записал Option Explicit Off-и все проблемы решились!
слушай, а ты, что на ВБ6 пишешь?

Ответить

Номер ответа: 14
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #14
Добавлено: 22.01.06 13:01
Да так всего по немного - узнаю возможности.
А что?

Ответить

Номер ответа: 15
Автор ответа:
 [root]



Вопросов: 45
Ответов: 1212
 Web-сайт: bit.pirit.info
 Профиль | | #15
Добавлено: 22.01.06 14:57
Люди говорят:
При работе с API использование Option Explicit уже не просто рекомендовано,
а крайне необходимо и сугубо обязательно!
Во всех модулях и формах


Ответить

Страница: 1 | 2 | 3 | 4 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам