![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Guest
Сообщений: n/a
|
Кто программирует на Visual Basic
|
|
| Реклама: |
|
|
#2
|
|
Почитай это...
Определение, которое даёт Microsoft: «Системный реестр - база данных операционной системы, в которой хранится информация о конфигурации компьютера. Реестр хранит сведения, к которым система обращается непрерывно во время работы ...» От себя могу добавить следующее: Реестр имеет иерархическую структуру, и делится на шесть ветвей: 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) - в скобках указано десятичное значение ключа). Думаю, вы поняли, что такое реестр и для чего он нужен. Далее, вы научитесь с ним работать... Работаем с реестром Visual Basic умеет работать только с веткой HKEY_CURRENT_USER\ Software\VB and VBA Program Setting и только со строковыми ключами, но этого вполне достаточно, чтобы сохранять и считывать настройки своих программ: Запись данных в реестр: 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 Теперь вы знаете все функции, которые предоставляет VB для работы с реестром. :xe Добавлено через 1 минуту И сравни со следующим: WinAPI или VB? Прочитав первую статью, вы узнали, что такое реестр и какие функции предоставляет Visual Basic для работы с ним. И вы уже знаете, что VB позволяет работать только веткой HKEY_CURRENT_USER\ Software\VB and VBA Program Setting и только со строковыми ключами. Чтобы работать с другими ветвями и типами ключей, можно воспользоваться функциями API. Но помните, если ваша программа хранит и меняет в реестре только собственные настройки, то незачем использовать API, стандартных функций VB вам хватит вполне. Средства WinAPI WinAPI предоставляет очень большое количество функций для работы с реестром, поэтому будут рассмотрены только основные: Константы, которые будут нужны: Const REG_SZ As Long = 1 Const REG_DWORD As Long = 4 Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_USERS = &H80000003 Const HKEY_CURRENT_CONFIG = &H80000005 Const HKEY_DYN_DATA = &H80000006 Const KEY_ALL_ACCESS = &H3F Структуры: Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Boolean End Type При использовании примеров из статьи, все перечисленные выше константы и структуры должны быть объявлены. Операции с ключами: RegOpenKeyEx - Функция открывает существующий ключ реестра, а точнее определяет его манипулятор. Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long Основные параметры: hKey - имя стандартного ключа (например, HKEY_CLASSES_ROOT) lpSubKey - имя открываемого ключа (например, "MyProgram\Options") phkResult - заполняется манипулятором открытого ключа Пример: Dim Result As Long RegOpenKeyEx HKEY_CLASSES_ROOT, "MyProgram\Options", 0, KEY_ALL_ACCESS, Result MsgBox Result '// В этом примере выводится манипулятор ключа HKEY_CLASSES_ROOT\MyProgram\Options RegCloseKey - Функция закрывает ключ системного реестра. Declare Function RegCloseKey Lib "advapi32.dll" Alias "RegCloseKey" (ByVal hKey As Long) As Long Основные параметры: hKey - манипулятор закрываемого ключа Пример: Dim Result As Long RegOpenKeyEx HKEY_CLASSES_ROOT, "MyProgram\Options", 0, KEY_ALL_ACCESS, Result '// Открытие ключа RegCloseKey Result '// Закрытие ключа RegCreateKeyEx - Функция для создания нового ключа. Если ключ существует, функция открывает его. Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long Основные параметры: hKey - имя стандартного ключа (например, HKEY_CLASSES_ROOT) lpSubKey - имя создаваемого подключа (например, "MyProgram\Options") Пример: Dim SA As SECURITY_ATTRIBUTES Dim Result As Long RegCreateKeyEx HKEY_CURRENT_USER, "MyProgram\Options", 0, vbNullString, 0, KEY_ALL_ACCESS, SA, _ Result, &H1 RegDeleteKey - Функция удаляет указанный ключ Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long Основные параметры: hKey - имя стандартного ключа lpSubKey - имя удаляемого подключа. В Win9x/Me все подключи указанного подключа также удаляются. В WinNT подключ не должен содержать других подключей. Пример: RegDeleteKey HKEY_CURRENT_USER, "MyProgram\Options" Операции с параметрами: RegSetValueEx - Функция задаёт значение и тип параметра, находящегося в заданном ключе. Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long Основные параметры: hKey - манипулятор ключа lpValueName - имя параметра dwType - тип ключа lpData - новое значение Пример: Dim Result As Long Dim Retval As Long '// Находим манипулятор нужного ключа Retval = RegOpenKeyEx(HKEY_CURRENT_USER, "MyProgram\Options", 0, KEY_ALL_ACCESS, Result) '// Числовому параметру DWordValue присваивается значение 22 RegSetValueEx Result, "DWordValue", 0, REG_DWORD, 22, 4 '// Строковому параметру StringValue присваивается значение "Реестр" RegSetValueEx Result, "StringValue", 0, REG_SZ, ByVal "Реестр", Len("Реестр") RegCloseKey Result '// Закрытие ключа RegDeleteValue - Функция удаляет заданный параметр Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long Основные параметры: hKey - манипулятор ключа lpValueName - имя удаляемого параметра Пример: Dim Result As Long '// Находим манипулятор нужного ключа RegOpenKeyEx HKEY_CURRENT_USER, "MyProgram\Options", 0, KEY_ALL_ACCESS, Result '// Удаляем параметр с именем StringValue RegDeleteValue Result, "StringValue" RegCloseKey Result '// Закрытие ключа RegQueryValueEx - Функция считывает значения параметра Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long Основные параметры: hKey - манипулятор ключа lpValueName - имя читаемого параметра lpData - заполняется значением заданного параметра Пример: Dim Result As Long Dim DWResult As Long Dim STResult As String STResult = Space(255) '// Находим манипулятор нужного ключа RegOpenKeyEx HKEY_CURRENT_USER, "MyProgram\Options", 0, KEY_ALL_ACCESS, Result '// Считываем значения числового параметра с именем DWordValue RegQueryValueEx Result, "DWordValue", 0, 0, DWResult, 4 '// Считываем значения строкового параметра с именем StringValue RegQueryValueEx Result, "StringValue", 0, 0, ByVal STResult, Len(STResult) RegCloseKey Result '// Закрытие ключа '// Выводим значение параметров MsgBox DWResult '// Числовое MsgBox STResult '// Строковое Делай выводы... ![]()
__________________
Все великие люди мало жили. Вот и мне что-то нездоровится... |
|
|
|
|
| Эти 4 пользователя(ей) сказали cпасибо за это полезное сообщение: |
|
|
#3
|
|
Неактивный пользователь
Пол:
Регистрация: 18.12.2005
Сообщений: 14
Репутация: 4
|
Идея следуящая:
Sub Test1() ' ' Test1 ' 08.02.2006 (GNik527) ' ' Dim i As Integer Dim j As Integer Dim ch As String i = 7 Sheets("Лист1").Select Do While Cells(i, 3).Value <> "" ch = Cells(i, 3).Value j = 7 Sheets("Лист2").Select Do While Cells(j, 3).Value <> "" And Cells(j, 3).Value <> ch j = j + 1 Loop If Cells(j, 3).Value = ch Then ch = Cells(j, 4).Value Sheets("Лист1").Select Cells(i, 4).Value = ch Else Sheets("Лист1").Select End If i = i + 1 Loop End Sub |
|
|
|
|
|
#4
|
|
Новичок
Пол:
Регистрация: 13.02.2006
Сообщений: 10
Репутация: 28
|
Для тех , кто любит практичные примеры , и почти с нуля
Visual Basic. Освой на примерах Культин Н. Б. http://rapidshare.de/files/16519361/...merah.rar.html (7 Mb) Добавлено через 9 минут 54 секунды Еще примеры на Visual Basic: Тема 1. Разработка программы <Dialog> - скачать. http://main.emc.spb.ru/staff/knv/otv...i/tema1_vb.doc Тема 2. Программирование свойств формы - скачать. http://main.emc.spb.ru/staff/knv/otv...i/tema2_vb.doc Тема 3. Программа<Просмотрщик картинок> - скачать. http://main.emc.spb.ru/staff/knv/otv...i/tema3_vb.doc Тема 4. Разработка программы <Угадай число>-скачать http://main.emc.spb.ru/staff/knv/otv...i/tema4_vb.doc Тема 5. Крутой калькулятор - скачать . http://main.emc.spb.ru/staff/knv/otv...i/tema5_vb.doc Последний раз редактировалось kruger; 08.08.2006 в 14:19.. Причина: Добавлено сообщение |
|
|
|
| Эти 5 пользователя(ей) сказали cпасибо за это полезное сообщение: |
|
|
#5
|
|||||||||||||||||||||||
|
Неактивный пользователь
Регистрация: 10.12.2005
Сообщений: 4
Репутация: 2
|
Microsoft Office Web Components (OWC) и MS ChartSpace лучше не бывает! И бесплатно и гибко! |
|||||||||||||||||||||||
|
|
|
|
|
#6
|
|
Неактивный пользователь
Регистрация: 08.01.2007
Сообщений: 7
Репутация: 1
|
у меня такая проблема! я начинающий, можно сказать ноль!)
делов том что мне нужно сделать программку куда можно вбивать данные (короче говоря отчет по анатомическому вскрытию) начинаю с того что делаю MDI форму, дочернюю, траля-ля...на форме должны быть постоянне поля (неизменные к примеру - ФИО, ПОЛ , возраст и т.п.) и поля куда необходимо вписывать данные (например - телосложение -такое-то и т.п.) и потом чтобы все выводлось на печать! и постоянные метки и введеные! помогите плиззз! |
|
|
|
|
|
#7
|
|||||||||||||||||||||||
|
Неактивный пользователь
Регистрация: 08.01.2007
Сообщений: 7
Репутация: 1
|
Спасибо огромное!!!!
а зеленый текст это пояснения как я понял??! Добавлено через 3 минуты
скажите что мне почитать\поглядеть\выучить! для создания такой формочки!!!!!!??????????? Добавлено через 5 минут и еще один вопрос какова команда для того чтобы вывести это все на печать из самой формы! к примеру создать File ---> Print???? возможно ли это!??? заранее спасибо!!!! Последний раз редактировалось LSV; 09.01.2007 в 20:20.. Причина: Добавлено сообщение |
|||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
|
|
#8
|
|||||||||||||||||||||||
1. Зеленый текст — это примечания в коде программы, которые пишет программист (в основном для себя), чтобы по прошествии некоторого времени можно было вспомнить алгоритм программы. 2. "Что мне почитать\поглядеть\выучить?" — начать с учебников по Visual Basic 6 для получения представления об интерфейсе VB, его операторах и элементах языка. Набрать код нескольких примеров из учебников. Во время набора кода чаще пользоваться клавишей F1 (справкой). А дальше пытаться видоизменять учебные примеры, "набивать руку", придумывать свои алгоритмы. 3. Если очень хочется выводить отчет сразу на печать, не просматривая его в "Блокноте", то можно воспользоваться объектом Printer. Хотя, на мой взгляд, лучше отчет сначала просмотреть и, возможно, исправить ошибки, а затем уже печатать из "Блокнота". Как использовать объект Printer, см. в модифицированной программе, которую можно взять здесь. Последний раз редактировалось Sovnik; 09.01.2007 в 23:27.. |
||||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
|
|
#9
|
|
LSV,
споры о том, какой язык лучше, ведутся постоянно. По-моему, каждый хвалит тот язык, на котором когда-то начинал писать работающие программы. Довольно объективно высказываются по этому поводу программисты на форуме "VB Streets": в настоящее время все языки программирования примерно равны с точки зрения эффективности работы программ, написанных на этих языках. Главное, чтобы у программиста не были "кривые руки", а какой язык — не важно. Я начинал писать на TurboBasic'е, который через несколько стадий трансформировался в Visual Basic. Visual Basic удобен для создания интерфейса программы. Создать на нем красивую форму с большим количеством управляющих элементов легче и быстрее, чем на других языках. Существует множество дополнений для Visual Basic (так называемые элементы ActiveX), которые позволяют написать программу для решения серьезной задачи с помощью нескольких строчек кода. В свое время я написал на этом языке программы для организации групповых учебных занятий в вузе, программы для расчета эффективности систем охраны, программы для сбора, обработки и анализа сигналов вибрации и т.д. И необходимости переходить на другой язык не видел. В общем, если Вас не заставляют писать на каком-то конкретном языке, начните программировать на Visual Basic. Рекомендую однозначно ![]() Последний раз редактировалось Sovnik; 11.01.2007 в 03:48.. |
|
|
|
|
|
|
#10
|
|
Неактивный пользователь
Регистрация: 08.01.2007
Сообщений: 7
Репутация: 1
|
вот смотрите проверте пожалуйста:
простенькое задание по теме РАБОТа с фокусом задание создать форму с тремя кнопками 1,2,3 установить фокус в обратном порядке и чтобы выводилось при нажатии надпись я сделал сначала сам вот код Option Explicit ------------------------------- Private Sub cmd1_Click() lbl1 = "Кнопка номер: " & cmd1.Caption End Sub --------------------------- Private Sub cmd2_Click() lbl1 = "Кнопка номер: " & cmd2.Caption End Sub ----------------------------- Private Sub cmd3_Click() lbl1 = "Кнопка номер: " & cmd3.Caption End Sub ----------------------------------------- и вот как в учебнике: Option Explicit Private Sub cmd1_Click() Call WriteCaption(1) End Sub Private Sub cmd2_Click() Call WriteCaption(2) End Sub Private Sub cmd3_Click() Call WriteCaption(3) End Sub Private Sub WriteCaption(index As Byte) lbl1.Caption = "Êíîïà: " & index End Sub скажите плизз в чем преимущества кода с книжки над тем что написал я???? зарание Спасибо! |
|
|
|
|
|
#11
|
|||||||||||||||||||||||
Вообще, одну и ту же задачу можно решить разными способами. И Ваш вариант не хуже кода из книжки. Правда, есть одно отличие: в Вашем коде показывается название кнопки, которое не обязательно должно быть порядковым номером, а в коде из книжки показывается порядковый номер кнопки. |
||||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
|
|
#12
|
|
Неактивный пользователь
Регистрация: 08.01.2007
Сообщений: 7
Репутация: 1
|
спасибо!
я наверно уже вас задолбал своими вопросами!? извините, но мне так проще разобраться, если есть у кого спросить совета!! если вы не против, то у меня еще будет куча вопросов!?!) насущный вопрос на данный момент: я никак не могу разобраться с кодом для кнопки Сохранить\ Save пытаюсь отработать это на таком примере: в текстовое поле вводиться текст, кот в последующем будет сохраняться в файл txt из Вашего наброска так и не могу понять как это делается! поможете? вот мой код: Option Explicit Private Sub cmd1_Click() txt1 = "" End Sub Private Sub cmd2_Click() MakeReport SaveReport ViewReport End Sub Private Sub cmd3_Click() End End Sub Private Sub txt1_Change() Dim txt1 As Long End Sub |
|
|
|
|
|
#13
|
|||||||||||||||||||||||
Ошибки: 1. Вы вызываете процедуры MakeReport, SaveReport и ViewReport, а их в Вашем коде нет. 2. Процедурой Private Sub cmd1_Click() txt1 = "" End Sub Вы очищаете текстовое поле txt1, а его содержимое надо сохранить. 3. Процедура Private Sub txt1_Change() Dim txt1 As Long End Sub вообще не нужна. Советую использовать мой код и, изменяя его немного, смотреть каждый раз, что получается. Так Вы лучше поймете алгоритм. |
||||||||||||||||||||||||
|
|
|
|
|
#14
|
|
Неактивный пользователь
Регистрация: 08.01.2007
Сообщений: 7
Репутация: 1
|
расскажите поподробней плиз об вот этих строчках:
FileName = Replace(CStr(Now), " ", "=") FileName = Replace(CStr(FileName), ":", "-") FileName = Replace(CStr(FileName), ".", "-") FileName = App.Path & "\" & FileName & ".txt" вот мой код: Option Explicit Private FileName As String Private TextReport As String Private Sub cmd1_Click() txt1 = "" End Sub Private Sub cmd2_Click() MakeReport SaveReport ViewReport End Sub Private Sub cmd3_Click() End End Sub Private Sub MakeReport() TextReport = txt1.Text End Sub Private Sub SaveReport() FileName = App.Path & "\" & ".txt" End Sub Private Sub ViewReport() Open FileName For Output Access Write As #1 Print #1, TextReport Shell "notepad " + FileName, vbNormalFocus Close #1 End Sub значит после нажатия клавиши сохранить открывается guestbook.txt текста в нем нет, а в блокноте кот лежит вместе с сохраненным проектом (после того как ты закрыл пустой блокнот и открыл тот что в папке корневой) мой текст который я писал не могу понять где я оступился!?:7: |
|
|
|
|
|
#15
|
|||||||||||||||||||||||
1. Выше я отвечал по поводу зеленого текста. При этом ожидал, что Вы оцените возможность делать примечания в коде программы. Но Ваш код не содержит никаких примечаний, и его трудно понять. Например, зачем нужна кнопка cmd1, очищающая текстовое поле (см. мой пост выше). 2. Какое имя Вы даете сохраняемому текстовому файлу? У Вас получается, что это имя состоит из точки и расширения txt. 3. Верхние строчки, как я писал в коде программы, означают, что именем файла FileName будет текущая дата и время. С помощью функции Replace из даты и времени вместо символов, недопустимых в именах файлов, подставляются допустимые разграничительные символы. Подробнее о функции Replace см. в справке (клавиша F1) или в учебнике. 4. Я советовал изменять код понемногу. Вы изменяете сразу все процедуры. Отсюда Ваши трудности. 5. Мне кажется, что на форуме не следует обсуждать непринципиальные вопросы, которые не представляют интереса для других участников форума. Последний раз редактировалось Sovnik; 11.01.2007 в 21:00.. |
||||||||||||||||||||||||
|
|
|
| Сказали спасибо: |
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Нужна помощь в Visual Basic | Ystinov83 | Программирование | 3 | 28.01.2010 07:57 |
| Visual Basic пару вопросов. | Каханбунда | Скорая помощь | 3 | 03.03.2009 22:48 |
| ComboBox в Visual Basic 6 | AleksAleks | Программирование | 1 | 03.09.2007 00:31 |
|
|