Не показывать окно

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Saturn.65
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 543
Зарегистрирован: 13.10.2006 (Пт) 18:46

Не показывать окно

Сообщение Saturn.65 » 01.12.2007 (Сб) 13:01

При первом запуске программы, после ее установки, показывается окно.
Там написано: программа успешно установлена и все в таком роде.
При этом в реестре происходит запись.
При последующем запуске программа проверяет реестр, читает эту запись (запись появляется в Text1.Text) и если там записан 0, то окно приветстваия уже не выводит. Как бы лучше написать код? Вроде этот работает, но окно приветствия все равно кратковременно моргает на экране. Как-то это не очень хорошо.
Как бы лучше написать, чтоб оно вообще не появлялось?
Код: Выделить всё
Form Load
If Text1.Text = 0 Then
Form2.Show
End If
If Text1.Text = " " Then
Form2.Hide
End If

Может команда проверки Text1.Text должна быть первей, чем Form2.Show ?

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

Сообщение Хакер » 01.12.2007 (Сб) 14:10

Нафига считывать значение из реестра в TextBox? Почему бы сразу не проверить его в If-блоке?

Зачем делать проверку в коде формы? Почему бы не сделать проверку ещё до создания экземпляра формы?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Re: Не показывать окно

Сообщение Arcady_XQST » 01.12.2007 (Сб) 14:41

Saturn.65 писал(а):При первом запуске программы, после ее установки, показывается окно.
Там написано: программа успешно установлена и все в таком роде.
При этом в реестре происходит запись.
При последующем запуске программа проверяет реестр, читает эту запись (запись появляется в Text1.Text) и если там записан 0, то окно приветстваия уже не выводит. Как бы лучше написать код? Вроде этот работает, но окно приветствия все равно кратковременно моргает на экране. Как-то это не очень хорошо.
Как бы лучше написать, чтоб оно вообще не появлялось?
Код: Выделить всё
Form Load
If Text1.Text = 0 Then
Form2.Show
End If
If Text1.Text = " " Then
Form2.Hide
End If


:shock: О-хо-хо! Тогда уж в Properties формы сделай Visible = False :)
---
Короче, делай как Хакер сказал.
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 01.12.2007 (Сб) 15:07

Чтобы было вообще красиво, добавь стандартный модуль, а в него процедуру Main, установи, чтобы она обрабатывалась первой в свойствах проекта. Вот в ней и читай реестр и в зависимости от результата загружай первую или вторую форму. И да, как уже сказали, не надо ничего писать в текстовое поле -- переменные тебе на что?
Salus populi suprema lex

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

Сообщение Saturn.65 » 01.12.2007 (Сб) 16:02

Хакер писал(а):Нафига считывать значение из реестра в TextBox? Почему бы сразу не проверить его в If-блоке?

Зачем делать проверку в коде формы? Почему бы не сделать проверку ещё до создания экземпляра формы?

Код: Выделить всё
Text1.Text = Reg1.GetValue(HKEY_CURRENT_USER, "Software\Proga", "Licensia")

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

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 01.12.2007 (Сб) 16:20

В модуль:
Код: Выделить всё
Sub Main()
  If (Reg1.GetValue(HKEY_CURRENT_USER, "Software\Proga", "Licensia") = 0) Then
    Form2.Show
  End If
End Sub
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

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

Сообщение Хакер » 01.12.2007 (Сб) 16:42

Угу. Reg1 это что?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 01.12.2007 (Сб) 16:58

Наверняка модуль по работе с реестром, а там - хрен его знает... :D
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

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

Сообщение Saturn.65 » 01.12.2007 (Сб) 17:09

Контрол Reg.ocx. И две строчки кода: записать и считать. Очень удобно. Ничего лишнего. Пиши хоть цифры, хоть слова. Для слов надо только REG_SZ поменять. Работа с любой веткой реестра.
А то вроде VB не может со всем реестром работать.
Код: Выделить всё
Private Sub Command1_Click()
Reg1.SetValue HKEY_CURRENT_USER, "Software\Proga", _
"Ключ", Val(Text1.Text), REG_DWORD 'запись
End Sub

Private Sub Command2_Click()
Text2.Text = Reg1.GetValue(HKEY_CURRENT_USER, "Software\onClickTweak", "Ключ") 'чтение
End Sub

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 01.12.2007 (Сб) 17:18

Saturn.65 писал(а):Контрол Reg.ocx
Уже удобно... :) Скачай лучше модуль по работе с реестром, и не надо будеть все время таскать (а в последствии еще и регистрировать) Reg.ocx.
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

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

Сообщение Saturn.65 » 01.12.2007 (Сб) 19:34

Arcady_XQST писал(а):
Saturn.65 писал(а):Контрол Reg.ocx
Уже удобно... :) Скачай лучше модуль по работе с реестром

Наверное удобней. А как потом записывать и считывать? Модуль то модулем, а в форме как писать? Вдруг до меня не дойдет? Тут то я привык. :D Хотя все и через задницу пишу.

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 02.12.2007 (Вс) 22:01

Saturn.65 писал(а):
Arcady_XQST писал(а):
Saturn.65 писал(а):Контрол Reg.ocx
Уже удобно... :) Скачай лучше модуль по работе с реестром

Наверное удобней. А как потом записывать и считывать? Модуль то модулем, а в форме как писать? Вдруг до меня не дойдет? Тут то я привык. :D Хотя все и через задницу пишу.
Вот, модуль с примером использования. Изучай :wink:
Вложения
RegEx.rar
Автор: Андрей 'd1' Перминов (d1pro@mail.ru)
(6.46 Кб) Скачиваний: 47
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

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

Сообщение Хакер » 02.12.2007 (Вс) 23:05

Контрол Reg.ocx

Фтопку. Используй модуль от GSerg-а.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение Saturn.65 » 03.12.2007 (Пн) 8:30

Спасибо всем за заботу. Буду изучать. Небольшой вопрос для всех: чем ocx хуже модуля? То, что лишний контрол и место занимает? Или же по функциональности не совсем полноценен, нежели модуль?
Зато коду -две строчки. :D И еще думаю, стоит ли реестр использовать как базу данных для программ? Я имею ввиду не хранение текстовых документов или еще, что-то в этом роде. А для сохранения настроек программы. Просто если поставил галочку в CheckBox, то при загрузке окна она и будет стоять. C одной стороны удобно, нет лишних файлов, записал-считал. С другой стороны, при откате системы все теряется.

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

Сообщение Viper » 03.12.2007 (Пн) 8:53

В данной ситуации ocx просто избыточен. По поводу хранения настроек программы, то собственно это и есть одно из предназначений реестра. Можешь почитеть мой перевод соответствующего раздела MSDN на www.vbstreets.ru.
Весь мир матрица, а мы в нем потоки байтов!


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

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

Сейчас этот форум просматривают: Google-бот и гости: 2

    TopList  
cron