Переменные, типы, процедуы, функции....

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Переменные, типы, процедуы, функции....

Сообщение Gigahard » 12.04.2003 (Сб) 0:07

Вопросов сразу много!

1. Как работать с кодом

Код: Выделить всё
Dim Example as TextBox
?

В каких случаях такие выражения используются? Можно ли таким способом вводить в программу контролы, не размещая их предварительно на форме?

2. Может ли функция возвращать ответ в виде пользовательского типа? Вот набросок, не знаю как работает, скорее нет чем да, но проконсультируйте пожалуйста!

Код: Выделить всё
Public Type Example
FrstParam as String
ScndParam as Integer
End Type

Public Function TestFunc() As Example
a as Example

a.FrstParam = "Тра ля ля"
a.ScndParam = "5"

TestFunc = a

End Function

Private Sub Command1_Click()
Dim result As Example
Result=TestFunc()

MsgBox Result.FrstParam & Result.ScndParam

End Sub



Идея в целом такая. А будет ли это работать? И если да то как?

3. У меня на форме несколько TextBox'ов. Для каждого из них есть последовательность действий (одинаковых). Хочется все это оформить в отдельную функцию или процедуру. Так чтобы функции/процедуре передавалась инфа о том с каким контролом работать. Как такое сделать? Массив контролов не предлагать!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.04.2003 (Сб) 8:44

1. Этим кодом новый контрол не создаётся. Создаётся ранняя привязка переменный к объектной можели текстбокса, благодаря чему при написании имени Example. будет сразу выпадать список свойств текстбокса. Однако, чтобы наполнить эту переменную смыслом её существования, нужно присвоить ссылку на реальный текстбокс: Set Example = Text1
2. Конечно может. Единственное замечание: если делаешь эту в модуле класса формы, то и типы, и функции этого типа должны быть Private, а не Public. Ну и замени a as Example на Dim a as Example
3. Массив контролов рулит! Но если, по непонятным причинам, он не нравится... Можно предложить написать функцию, одним из параметров которой будет TB as TextBox, а для каждого текстбокса определить нужное событие (например, Change), и в рамках оного вызывать эту функцию с передачей ей в качестве параметра TB имени этого самого текстбокса.

ЗЫ: Массив контролов рулит!
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 12.04.2003 (Сб) 11:41

Насчет третьего:

Я написал нечто вот такое,
Код: Выделить всё
Private Sub Form_Load()
TbChange (Text1)
End Sub

Private Sub TbChange(TB As TextBox)
TB.BorderStyle = 1
TB.Width = 3000
TB.SetFocus
End Sub

но чего то компилятор ругается.

Наведите на мысль, как это довести до ума :)

Tauron
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 187
Зарегистрирован: 14.07.2002 (Вс) 17:43
Откуда: Kazakhstan

Сообщение Tauron » 12.04.2003 (Сб) 13:35

Скобки при вызове процедуры убери.
P.S. А SetFocus все равно не работает.
Трезвая голова, холодный ум и ледяное сердце.

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 12.04.2003 (Сб) 14:32

А как сделать чтоб работало?

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 13.04.2003 (Вс) 13:36

Люди!!! Почему в вышеприведенном коде не работает SetFocus? Как сделать чтоб работал??? Очень нужно :)

Tauron
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 187
Зарегистрирован: 14.07.2002 (Вс) 17:43
Откуда: Kazakhstan

Сообщение Tauron » 13.04.2003 (Вс) 17:25

Я тебе один умный вещь скажу, только ты не обижайся: ты пытаешься установить фокус на контрол, который в дыннай момент не отображается. SetFocus вообще нельзя вызывать во время загрузки формы. :roll:
Трезвая голова, холодный ум и ледяное сердце.

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 13.04.2003 (Вс) 20:43

2Tauron: Ну бывает, :) Что поделаешь...

ЗЫ А я и нэ абыжаюс!

FaKk2
El rebelde gurú
El rebelde gurú
Аватара пользователя
 
Сообщения: 2031
Зарегистрирован: 09.03.2003 (Вс) 22:10
Откуда: Los Angeles

Сообщение FaKk2 » 13.04.2003 (Вс) 21:05

Gigahard писал(а):2Tauron: Ну бывает, :) Что поделаешь...

ЗЫ А я и нэ абыжаюс!


Перед setfocus пиши me.show и все будет окей.
Для получения ответа надо продемонстрировать качества, позволяющие стать компетентным — внимательность, вдумчивость, наблюдательность, желание активно участвовать в выработке решения.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList