Имя переменной сделать её значением.

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

Имя переменной сделать её значением.

Сообщение Memfivosfey » 22.09.2006 (Пт) 4:00

Люди, Доброй НОЧИ всем :) капец, Даже и не знаю, как тольком объяснить, надеюсь, что меня здесь с полу слова поймут :)

Допустим:

Dim A as string

A="text1.enable" нада енто значение программе указать как свойство и присвоить значение, Тобишь text1.text = True, и шоб в программе TextBox действительно включился. Воощем КАПЕЦ, сам не могу толком понять, шо я хочу... :) сорри, в поиск не лез бо голова дубовая, да и искать ненаю чё.
В программировании нет не решаемых проблемм, есть проблеммы на которые
мы не можем найти решение...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.09.2006 (Пт) 4:04

CallByName
Изображение

Memfivosfey
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 212
Зарегистрирован: 17.02.2005 (Чт) 14:55

Сообщение Memfivosfey » 22.09.2006 (Пт) 4:56

Так, немнога разобрался, спасибо Огромное :) Но вот теперь возник вопрос:

А если я хочу работать не с ТекстБоксом, а непосредственно со всей формой и не одной, например в переменную A забивать значения:

A="Form1"
A="Form2"
A="Form3"

и подставляя под значение переменной A ".show" отдавать комманды разным объектам(формам)?

пока, как я понял, я могу делать это только так, есть другие варианты?

CallByName Form1, show , VbMethod
CallByName Form2, show , VbMethod
CallByName Form3, show , VbMethod


Пасиба огоромное :)
В программировании нет не решаемых проблемм, есть проблеммы на которые
мы не можем найти решение...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 22.09.2006 (Пт) 5:42

См. коллекцию Forms
Изображение

Memfivosfey
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 212
Зарегистрирован: 17.02.2005 (Чт) 14:55

Сообщение Memfivosfey » 22.09.2006 (Пт) 13:19

Не сорьки, не разобрался :( подскажите плиз...
В программировании нет не решаемых проблемм, есть проблеммы на которые
мы не можем найти решение...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 22.09.2006 (Пт) 13:59

Forms("Form1")

Memfivosfey
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 212
Зарегистрирован: 17.02.2005 (Чт) 14:55

Сообщение Memfivosfey » 22.09.2006 (Пт) 17:18

Ребя вы меня простите, но я не могу разобратся, можно чуток кода в пример? Я просто не могу понять сам синтаксис :( использования CallByName, Forms("Form1") и её свойств :(


З.Ы.
Сорри, я думал и разбирался... Чесно старался. :)
В программировании нет не решаемых проблемм, есть проблеммы на которые
мы не можем найти решение...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 22.09.2006 (Пт) 17:45

Запутали человека :) Тут CallByName не нужен. Если у тебя значение переменной A = "Form1" и есть форма с таким именем, то достаточно написать

Forms(A).Show
Быть... или не быть. Вот. В чём вопрос?

Memfivosfey
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 212
Зарегистрирован: 17.02.2005 (Чт) 14:55

Сообщение Memfivosfey » 22.09.2006 (Пт) 17:52

Forms("Form1").Show

А он мне на это пишет Type MisMath :(
В программировании нет не решаемых проблемм, есть проблеммы на которые
мы не можем найти решение...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 22.09.2006 (Пт) 18:44

Все совсем не так :)

Сначала, перебрав всю коллекцию Forms, найди индекс нужной формы по ее имени, затем обращайся к ней через Forms(Index).

Memfivosfey
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 212
Зарегистрирован: 17.02.2005 (Чт) 14:55

Сообщение Memfivosfey » 22.09.2006 (Пт) 21:02

Короче, так мне никто ничего и не пояснил по конкретней... Хоть бы кто реально примерчик какой-нить... Я прост с этими весчами никада не сталкивался :( Сам пытался разобратся не могу, а тут такое дело, столкнулся... нада..

И ещё, мож кто подскажет такие ещё весчи:
Как можно мой "Exe" убрать из Апликаций в Диспетчере. Он у меня как утилитка висит, пусть бы в процессах отражался, а в Приложениях нет.

И ещё одно, нашёл функцию, при помощи которой выносятся ярлыки на рабочий стол, в автозагрузку и т.п. Дык когда её подключаю к проекту, стартую, ещё даже не создавая ярлыков проект вылетает с ошибкой VB совершил не допустимую операци и т.п. Вот кусок кода, который я сую в Модуль.

Код: Выделить всё
Private Declare Function fCreateShellLink Lib "VB6STKIT.DLL" _
(ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, _
ByVal lpstrLinkPath As String, ByVal lpstrLinkArgs As String) As Long
---------------------------------------------------------------------------------
Function LnkToWorkTable(Path As String, Title As String) As Long
    LnkToWorkTable = fCreateShellLink("..\..\Desktop", Title, Path, "")
End Function
---------------------------------------------------------------------------------
Function LnkToMenuPrograms(Path As String, Title As String) As Long
    LnkToMenuPrograms = fCreateShellLink("..\..\Start Menu\Programs", Path, Title, "")
End Function
---------------------------------------------------------------------------------
Function LnkWindowStartUp(Path As String, Title As String) As Long
    LnkWindowStartUp = fCreateShellLink("\Startup", Title, Path, "")
End Function


Буду оч. благодарен, за любые подсказки, которые могут привести меня к результату :)
В программировании нет не решаемых проблемм, есть проблеммы на которые
мы не можем найти решение...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 22.09.2006 (Пт) 21:34

Код: Выделить всё
Private Sub Form_Load()
Load Form2
Call CallFormByName("Form2", "Show", VbMethod, vbModal)
End Sub

Private Sub CallFormByName(Name As String, ProcName As String, CallType As VbCallType, Args As Variant)
Dim frm As Form

For Each frm In Forms
    If frm.Name = Name Then
        CallByName frm, ProcName, CallType, Args
        Exit For
    End If
Next
End Sub


Тут есть косяк - я не помню, как передать ParamArray (Args) функции CallByName.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 22.09.2006 (Пт) 21:47

Memfivosfey писал(а):И ещё, мож кто подскажет такие ещё весчи:
Как можно мой "Exe" убрать из Апликаций в Диспетчере. Он у меня как утилитка висит, пусть бы в процессах отражался, а в Приложениях нет.


App.TaskVisible = False.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.


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

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

Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 138

    TopList