Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Помогите с CheckBox


Автор: Craf 19.8.2005, 15:03
Всем доброго времени суток! у меня проблемка вот такая: мне нужно чтобы при нажатии на галочку (B CheckBox) Менялся ключ реестра на 1 и обратно, подскажите пожалуйста что для этого вписать в CheckBox надо ?!

Заранее большое спасибо. smile
Я только начинающий smile не судите строго.

Автор: Akina 19.8.2005, 15:38
Копай хелп по GetSetting/GetAllSettings/SaveSetting - или тебе в WinAPI, смотря какие ключи менять.

Есссно все это по CheckBox_Change

Автор: kulibin 19.8.2005, 17:42
private sub CheckBox_change
if CheckBox.Value then
savesetting "section", "key", 1
else
savesetting "section", "key", 0
end if
end sub

- как чайник чайнику smile

Автор: Craf 19.8.2005, 17:46
Цитата(kulibin @ 19.8.2005, 17:42)
private sub CheckBox_change
if CheckBox.Value then
    savesetting "section", "key", 1
else
    savesetting "section", "key", 0
end if
end sub

- как чайник чайнику smile

Хм... а где путь до ветки реестра, ну типа HKEY_CURRENT_USER и т.д.?!

Автор: cardinal 19.8.2005, 18:50
Цитата(Craf @ 19.8.2005, 15:46)
Хм... а где путь до ветки реестра

MSDN:
Цитата
Visual Basic provides a standard registry location for storing program information for applications created in Visual Basic:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\appname\section\key

Автор: Craf 20.8.2005, 00:56
Цитата(cardinal @ 19.8.2005, 18:50)
Цитата(Craf @ 19.8.2005, 15:46)
Хм... а где путь до ветки реестра

MSDN:
Цитата
Visual Basic provides a standard registry location for storing program information for applications created in Visual Basic:
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\appname\section\key

а между какими строками не подскажите это вставить ?! smile Извините за глупый вопрос, но всё-таки я только начинающий smile


Автор: cardinal 20.8.2005, 02:38
Никуда это вставить нельзя. Это просто standard registry location, то есть место куда SaveSetting записывает данные. Но тебе в принципе толку то от того, где это записано? Записал и ладно.
Также можно записывать инфу в .ini файлы или любые свои собственные файлы, а также в ресурсы.

Автор: Craf 20.8.2005, 09:57
Спасибо большое.

Автор: Craf 20.8.2005, 15:34
Цитата(cardinal @ 20.8.2005, 02:38)
Никуда это вставить нельзя. Это просто standard registry location, то есть место куда SaveSetting записывает данные. Но тебе в принципе толку то от того, где это записано? Записал и ладно.
Также можно записывать инфу в .ini файлы или любые свои собственные файлы, а также в ресурсы.

Вот только мне нужно НЕ записать, а изменить! допустим я хочу сделать прогу которая бы отключала Автозапуск компакт-дисков и мне нужно программно поменять адресок в реестре.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom
SetValue "AutoRun"=dword:00000001 (1)
- Вот и мне нужно поменять обратно - т.е на 0.

Автор: cardinal 20.8.2005, 16:11
Ковыряться в реестре - это очень опасная штука! Можешь обрести много головной боли делая это вручную.

А вообще вот:
http://vingrad.ru/VB-VB-002867
И нафига спрашивается FAQ делали...

Автор: Kergan 25.8.2005, 08:10
Craf, кинул тебе на мыло модуль для работы с реестром. Та только если надо добавь константы
HKEY_ (api viewr'ом)
Функция SaveString или изменяет параметр, или создает его, если его нет.
вызывать так: SaveString(HKEY_который_тебе_нужен,"razdel1\razdel2\razdel3\parametr", "Znachenie parametra", Len("Znachenie parametra")) ;
len - находит длину.
Своих (встроенных) функций для работы с реестром кроме одной-единственной ветки в VB НЕТ.
Только API.
Будут вопросы пиши на мыло.

Автор: Gannibal 29.8.2005, 08:41
я бы для чек бокса поставил проверку если нажата или нет вот так вот

Код

blnZap = iif(chkBoxing.Value, 1, 0)


будет при нажатии устанавливать один в переменную blnZap и ноль когда ненажато.. а потом запись в реестром smile

а вот так вот работать с реестром

Запись данных в реестр:
SaveSetting AppName, Section, Key, Setting
'// AppName - название вашей программы, Section - ключ, Key - имя параметра, Setting - строковое значение параметра

Чтение данных из реестра:
GetSetting AppName, Section, Key, Default '// AppName - название вашей программы,
Section - ключ, Key - имя параметра, Default - значение, которое будет возвращено функцией, если параметра не существует

Удаление данных из реестра:
DeleteSetting AppName, Section, Key '// AppName - название вашей программы,
Section - ключ, Key - имя параметра

Примечание: если вы хотите удалить подраздел целиком, то имя ключа указывать не нужно.

Получение всех имён и значений параметров заданного ключа:
GetAllSetting AppName, Section '// AppName - название вашей программы,
Section - ключ

Пример:

Код

Dim intKeys As Integer, strKeys As Variant '// Объявляем переменные
strKeys = GetAllSettings("MyApp", "MySection") '// Используем функцию GetAllSettings
For intKeys = LBound(strKeys, 1) To UBound(strKeys, 1) '// Получаем границы массива ключей и выполняем цикл
Debug.Print strKeys(intKeys, 0), strKeys(intKeys, 1) '// Выводим результат
Next intKeys


Реестр имеет иерархическую структуру, и делится на шесть ветвей:

HKEY_CLASSES_ROOT. Здесь содержится информация о зарегистрированных типах файлов, а также информация для OLE и операций drag-and-drop.

HKEY_CURRENT_USER. В этом разделе хранятся настройки цветов, заставок, рабочего стола и т.д.

HKEY_LOCAL_MACHINE. Здесь содержится информация о аппаратных и программных настройках.

HKEY_CURRENT_CONFIG. В этом разделе содержится информация, относящаяся к компьютеру: драйверы, установленное программное обеспечение и его настройки

HKEY_DYN_DATA. Здесь хранятся динамические данные о состоянии различных устройств, установленных на компьютере пользователя.

Каждый, из перечисленных выше ветвей, содержит ключи (подразделы). А конечными элементами реестра являются параметры, в которых и хранится вся информация. Параметры реестра делятся на три типа:

1. строковые (напр. «Мой компьютер»)
2. двоичные (напр. 10 82 A0 8F). Максимальная длина такого ключа 16Кб
3. DWORD. Этот тип ключа занимает 4 байта и отображается в шестнадцатеричном и в десятичном виде (напр. 0x00000020 (32) - в скобках указано десятичное значение ключа).

вот пример в запись для реестра и чтения из него smile
на форме поместить чекбокс и две кнопки

Код

Option Explicit
Dim blnCheck As Byte

Private Sub Command1_Click()
blnCheck = IIf(Check1.Value, 1, 0) ' если чекбокс отмечен будет один, если нет то ноль
SaveSetting "MoyaProgra", "VB6Programy", "ChekBox", blnCheck
End Sub

Private Sub Command2_Click()
Dim a As Byte
a = GetSetting("MoyaProgra", "VB6Programy", "ChekBox", blnCheck)
MsgBox a
End Sub

работает с стондартной веткой HKEY_CURRENT_USER\Software\VB and VBA Program Setting
в нашем случае запишет в реестр вот так вот HKEY_CURRENT_USER\Software\VB and VBA Program Setting\MoyaProga\VB6Programy\
ключь ChekBox с параметром smile

Автор: Exception 29.8.2005, 12:54
[оффтоп]мегус как всегда - пишет нечасто, но точно[/оффтоп иссяк]
Добавлено @ 12:54
[оффтоп]мегус как всегда - пишет нечасто, но точно[/оффтоп иссяк]

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)