Закрытие формы Автоматически

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Закрытие формы Автоматически

Сообщение DKbelRoma » 22.11.2007 (Чт) 12:07

Уважаемые программисты - помогите!
Есть форма1 и форма2 , есть кнопка command1(расположена на форме1) которая вызывает форму2
Мне нужно с помощью таймера или ещё чегото зделать так ,что-бы после открытия формы2 срабатывал как-бы таймер и (например) через 4 мин. закрывал форму2!
Может вопрос немного непонятен, но очень срочен!Помогите кто знает! :shock:
Заранее спасибо!
«Не важно, откуда ты. Важно - где ты.»

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 22.11.2007 (Чт) 12:20

где-то в области объявлений формы:

Код: Выделить всё
Private frm2 As Form2


В обработчике Command1
Private Sub Command1_Click()
Код: Выделить всё
Set frm2 = New Form2
frm2.Show
Timer1.Enabled = True
End Sub

В обработчике таймера:
Код: Выделить всё
Private Sub Timer1_Timer()
Unload frm2
Timer1.Enabled = False
End Sub
Весь мир матрица, а мы в нем потоки байтов!

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 22.11.2007 (Чт) 12:29

Спасибо конечно ,но я здесь невижу через сколько минут или секунд форма закроется? Извени но код пока проверить немогу (возможности нет) Но всёравно спасибо! 8)
«Не важно, откуда ты. Важно - где ты.»

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 22.11.2007 (Чт) 12:36

Дык поставить соответствующий интервал (свойство Interval) таймера.
З.Ы. Тут есть нюанс - максимальное значение интервала 65535, а поскольку оно измеряется в миллисекундах, то максимальный интервал примерно равен одной минуте. Впрочем сие обходится элементарно.
Весь мир матрица, а мы в нем потоки байтов!

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 22.11.2007 (Чт) 12:38

Вот теперь понял! Спасибо! ;)
«Не важно, откуда ты. Важно - где ты.»

Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Сообщение Saturn.65 » 23.11.2007 (Пт) 9:01

Возможно это и не совсем правильный подход, но многие процессы с N задержкой времени я пишу на прогрессбаре. :D Наверное это от не совершенного знания языка. Может это не так и плохо, такое не стереотипное мышление. Зато задержку можно давать совершенно любую, от секунд и кончая минутами. А если еще нагородить, то и часами. Такой принцип я применил в своей программе WinTurn.
Код: Выделить всё
Dim time1 As Integer
Private Sub Form_Load()
    Timer1.Interval = 100
    ProgressBar1.Min = 1
    ProgressBar1.Max = 100

End Sub

Private Sub Timer1_Timer()
    time1 = time1 + 1
    If time1 < 101 Then
    ProgressBar1.Value = time1
    Label1.Caption = time1 & " %"
    Else
    time1 = 0
    Label1.Caption = "0 %"
    End If
End Sub

Вот пример прогрессбара, который работает сам по себе.
Как взять от него необходимую задержку?
If Label1.Caption = "50%" Then
'Что-то происходит
End If
При необходимости скорость работы прогрессбара можно замедлить.
Прогрессбар сделать не видимым, так как он к делу не относится.
Можете улыбнуться.

ALev
Новичок
Новичок
 
Сообщения: 37
Зарегистрирован: 17.08.2007 (Пт) 8:05

Сообщение ALev » 23.11.2007 (Пт) 10:28

Viper писал(а):... максимальное значение интервала 65535... Впрочем сие обходится элементарно.


Подскажите, пожалуйста, как?

DKbelRoma
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 282
Зарегистрирован: 13.09.2007 (Чт) 23:32
Откуда: Из Кривого Рога

Сообщение DKbelRoma » 23.11.2007 (Пт) 12:07

Saturn.65 - спасибо! Твой пример мне тоже подходит!
Ты попрежнему крут! 8)
Слушай... Есть ли у тебя какието справочники или там статьи какието о работе с прогрес баром!??
ALev - что именно тебе подсказать??? :?
«Не важно, откуда ты. Важно - где ты.»

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 23.11.2007 (Пт) 13:18

ALev
Используй АПИ функции SetTimer и KillTimer
Подпись проходит рефакторинг

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 23.11.2007 (Пт) 13:20

Все делается элементарно. Допустим необходим таймер, срабатывающий один раз в пять минут. Выставляем таймеру интервал 60000 (т.е. ровно одну минуту) и пишем в обработчике таймера следующий код:

Код: Выделить всё
Private Sub Timer1_Timer()
Static count As Integer
    count = count + 1
    If count = 5 Then
        count = 0
        Timer1.Enabled = False ' при необходимости однократного действия
        ' тут делаем то что нам нужно           
    End If
End Sub


Такой таймер, будет срабатывать один раз в минуту, но нужное действие совершит один раз в пять минут.

З.Ы. Если выйти за пределы VB, то можно задавать практически любой необходимый интервал. Но это несколько сложнее. Можно тем не менее посмотреть API-функцию SetTimer.
Весь мир матрица, а мы в нем потоки байтов!


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

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

Сейчас этот форум просматривают: YaCy [Bot] и гости: 22

    TopList