Visual Basic 6.0 - хранить имя формы в переменной - уточнения
Re: хранить имя формы в переменной - уточнения
Мы где-то виделись, Александр?
06 Nov 03 13:15:26 в RU.VISUAL.BASIC Александр 'SUre' Подкопаев -> мне:
АSП> Private Sub List1_Click()
АSП> Dim frm As Form
АSП> Set frm = forms(List1.ListIndex)
АSП> frm.Show
АSП> End Sub
АSП> Пример работает, если при старте программы я делаю так:
АSП> Form2.Show
АSП> Form2.Hide
Это эквивалентно
Load Form2
АSП> Form1.Show
АSП> Иначе ругается при попытке открыть Form2 - складывается впечатление, что
АSП> forms содержит только один элемент - активную форму(Form1).
Верно. Forms содержит только загруженные формы.
АSП> Толи я что-то не понял, толи предварительно нужно в коллекцию froms
АSП> загнать все формы?
Как вариант. Еще можно сделать так:
Select Case List1.List(List1.ListIndex)
Case "Form1"
Set f = Form1
' и т.д.
End Select
АSП> А почему их там нет?
Потому что при старте программы либо загружается StartUp-форма (прочие же
формы не грузятся), либо управление передается Sub Main, а та уже делает что
ей вздумается.
АSП> Как я хотел сделать - массив с именами форм + массив, описывающий
АSП> последовательность их вызова (типа, закрыли форму ?1 - открыть форму ?8).
Типа, визард? Тогда я тебе посоветую сделать не массив, а список. Т.е. внутри
каждой из форм делаешь две Public-переменных NextForm и PreviousForm, и при
нажатии cmdBack/cmdNext показываешь соответствующую форму. Собственно говоря,
обсуждаемую выше проблему это не решает, но зато представляет собой чуть более
элегантное построение визарда.
Если же формы "похожи как браться", т.е. имеют одинаковые размер и некоторые
контролы (например, кнопки навигации), то имеет смысл для каждого шага делать
не отдельную форму, а лишь PictureBox. Кажися, в FAQе это разбирается.
АSП> Вообще-то, пишется все на Embedded VisualTools 9eVB 3.0),
Это который для CE?
Всего хорошего!
Дмитрий Козырев aka Master
* Origin: Дорогу осилит идущий. (2:5023/11.148)
Re[2]: хранить имя формы в переменной - уточнения
From: "Igor A. Vyatkin" <garry [@] mail.novgorod.ru>
Hi,
Поробуй следующее:
Set objForm = Forms.Add("frmMyForm")
'Предыдущая строка равносильно следующим двум
'Set objForm = new frmMyForm
'Call Load(frmMyForm)
Call objFirm.Show
Set objForm = Nothing
АSП> Спасибо за пример, он работает, но не так, как бы мне хотелось.
АSП> Hашел в тырьнете пример практически того, что мне нужно -
АSП> Form1 содержит список, тыкаешь мышой - открывается форма.
АSП> куски кода:
АSП> Private Sub Form_Load()
АSП> List1.AddItem ("Form1")
АSП> List1.AddItem ("Form2")
АSП> End SUb
АSП> Private Sub List1_Click()
АSП> Dim frm As Form
АSП> Set frm = forms(List1.ListIndex)
АSП> frm.Show
АSП> End Sub
АSП> Пример работает, если при старте программы я делаю так:
АSП> Form2.Show
АSП> Form2.Hide
АSП> Form1.Show
АSП> Иначе ругается при попытке открыть Form2 - складывается впечатление, что
АSП> forms содержит только один элемент - активную форму(Form1).
АSП> Толи я что-то не понял, толи предварительно нужно в коллекцию froms загнать
АSП> все формы?
АSП> А почему их там нет?
АSП> Что мне хотелось бы: есть набор форм, есть последовательность вызова форм,
АSП> меняющаяся от контекста.
АSП> Как я хотел сделать - массив с именами форм + массив, описывающий
АSП> последовательность их вызова (типа, закрыли форму ?1 - открыть форму ?8).
АSП> Пример выше доказывает выполнимость, но нужно каким-то образом
АSП> проинициализировать коллекцию forms.
АSП> Как - непонятно?
АSП> Вообще-то, пишется все на Embedded VisualTools 9eVB 3.0), может быть, это
АSП> его "специфика" ?
АSП> Если здесь офтопик, куда пойти?
АSП> Мне доступна еще ru.embedded, но там, похоже, одни "паяльники".
--
Igor A. Vyatkin
E-Mail: garry [@] mail.novgorod.ru
* Origin: Astrosoft Development (2:5020/400)
Re: VB6: Events & CreateObject()
From: "A. Skrobov" <tyomitch [@] r66.ru>
Hello, Dmitriy!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov" <fido7.ru.visual.basic [@] talk.ru>to A. Skrobov on Wed, 05 Nov 2003
23:20:57 +0300:
AS>> Правда, так и не заработало :-)
Я вот подумал, что если не известен исходящий интерфейс, то евенты уже никак не поймать. Т.е. совсем без раннего связывания не
удастся. Возможен, конечно, случай, что входящий интерфейс объекта неизвестен, а исходящий известен. Hо что-то мне не верится, что у
Тимура такой случай.
2Тимур: Исходник объекта у тебя есть?
With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru
--
* Origin: Talk.Mail.Ru (2:5020/400)
Ошибка программы
Добрейшего времени суток, Victor!
Дело было Четверг Hоябрь 06 2003 аж в 09:53... Victor Tikhomirov сказал(а) All:
VT> Применительно к Access, что необходимо для _появления_ сообщения о
VT> недопустимости операции с дальнейшим выходом из программы?
Из справки А97 "Объект Err":
Для того чтобы создать ошибку выполнения в программе, следует использовать метод Raise.
Т.е. генеришь свою ошибку, выводишь соответсвенно оформленный мессадж и закрываешь ацесс(или чего там у тебя)
Баюшки-Баю, Victor! За сим, снимаю шляпу. Slava Voronin(JD).
* Origin: У семи нянек - четырнадцать сисек! (2:6009/2.15)
двоичное представление числа и сдвиг
Привет, Genrih!
05 Nov 03 21:29, Nick Gorinov wrote to Genrih Rudenok:
GR>> какие есть варианты преобразования десятичного или 16тиричного
GR>> числа в двоичное представление ? туда и обратно
NG> перебирать 1, 10, 100 и т.д. в двоичной и пробовать вычитать от
NG> переводимого числа. если получается вычесть - пишем 1, в противном
NG> случае 0.
небольшая уточнение: перебирать двоичные 10^i надо от максимального числа, не
превосходящего переводимое до 10^0
С уважением, Nick!
np: кулеры, винты, уличный шум, etc.
* Origin: Ловись коннект большой и маленький! (2:5038/15.1)
Re: VB6: Events & CreateObject()
Мы где-то виделись, A.?
06 Nov 03 18:19:28 в RU.VISUAL.BASIC A. Skrobov -> мне:
AS>>> Правда, так и не заработало :-)
AS> Я вот подумал, что если не известен исходящий интерфейс, то евенты уже
AS> никак не поймать.
Почему? Подключение к connection point производится без проблем, методу
IDispatch::Invoke все аргументы передаются в виде вектора вариантов... Что не
так-то? ;) Единственная проблемка - вызов может идти по ID метода, то есть
определить имя генерируемого события не получится.
Всего хорошего!
Дмитрий Козырев aka Master
* Origin: Дорогу осилит идущий. (2:5023/11.148)
двоичное представление числа и сдвиг
Приветствую в нашем подземелье, Nick ?
Эхо подземелий донесло, что в Среда Hоябрь 05 2003 21:29, Nick Gorinov писал Genrih Rudenok:
GR>> какие есть варианты преобразования десятичного или 16тиричного
GR>> числа в двоичное представление ? туда и обратно
NG> перебирать 1, 10, 100 и т.д. в двоичной и пробовать вычитать от
NG> переводимого числа. если получается вычесть - пишем 1, в противном
NG> случае 0.
GR>> и еще есть число десятичное или 16тиричное - как по умному
GR>> сделать сдвиг бинарный - потипу: если смотреть в двоичном то
GR>> выглядит так 01110001 -> 00111000 -> 00011100 -> 00001110 ->
GR>> 00000111 ->
GR>> 00000011 -> 00000001
NG> деление на 2 - сдвиг вправо
NG> умножение на 2 - сдвиг влево
спасибо уже сам допер :)
Я взял бы частями, но мне нужно сразу. Genrih Rudenok.
* Origin: Genrih Cool! (2:452/25.115)
двоичное представление числа и сдвиг
Приветствую в нашем подземелье, Nick ?
Эхо подземелий донесло, что в Четверг Hоябрь 06 2003 08:16, Nick Gorinov писал Genrih Rudenok:
GR>>> какие есть варианты преобразования десятичного или 16тиричного
GR>>> числа в двоичное представление ? туда и обратно
NG>> перебирать 1, 10, 100 и т.д. в двоичной и пробовать вычитать от
NG>> переводимого числа. если получается вычесть - пишем 1, в
NG>> противном случае 0.
NG> небольшая уточнение: перебирать двоичные 10^i надо от максимального
NG> числа, не превосходящего переводимое до 10^0
самое быстрое преобразование что я придумал
основано на булевой функции маскировки разряда
Dim II As Integer
Dim pDat as Byte
Dim pBin as String
pDat = 199 ' разлагаемое число
pBin = "" ' получаемое двоичное число
For II = 0 To 7
If pDat And (2 ^ II) Then
pBin = "1" & pBin
Else
pBin = "0" & pBin
End If
Next II
а если делать перебор и пробовать вычетание то много If выполняются и программа тормознее получается % на 25
Я взял бы частями, но мне нужно сразу. Genrih Rudenok.
* Origin: Genrih Cool! (2:452/25.115)
Basic и Asm
Hi, All !!!
Подскажите, пожалуйста. Как, вызывая ассемблерную процедуру оператором CALL
ABSOLUTE передать в нее, а на выходе получить значения регистров? Пишу
поддержку мыши через INT 33h. Заранее спасибо. Извините,если offtopic.
C уважением, Alex_Chernyshov.
* Origin: Конвой свободен! (2:5036/30.25)
Re: хранить имя формы в переменной
Здоровья тебе, #/Александр/#.
XC: #RU.VISUAL.BASIC, #CC.MY.ECHOMAIL
05 Hоя 03, в 11:15, *Александр 'SUre' Подкопаев* писал я к _All_:
АП> Осваиваю язык, и возник вот такой вопрос - можно ли положить имя формы
АП> в переменную, чтобы потом через эту переменную можно было работать с
АП> формой? Hу, что-то типа ссылочной переменной в С - переменная одна, а
АП> ссылаться может на разные объекты(формы).
А зачем имя? Hе проще ли хранить ссылку на саму форму в переменной типа Form (ну или образованных от нее)?
Удачи, #*/Дмитрий/*#.
[SPBGPU 3083/1]
* Origin: It's all gone. What is left behind on the desert we (2:5030/1450.6)