VBNet
VBMania
Голосование: Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Свежий выпуск.
Читайте! Содержание выпуска
Aslof рекомендует Ищешь фильм? http://subscribe.ru/catalog/rest.cinema.filmforyou Citycat by Email Программа Citycat by Email позволяет работать с сервером Subscribe.ru с помощью электронной почты. Теперь Вам не нужно тратить деньги на работу в online и просматривать мегабайты рекламы для того, чтобы подписаться на нужную рассылку! Вам просто необходимо скачать небольшую базу данных по всем рассылкам каталога с нашего сайта, после чего Вы сможете подписываться и отписываться от рассылок, заказывать архивы прошлых выпусков, выполнять поиск по каталогу рассылок и многое другое. Программу Citycat by Email можно бесплатно загрузить с сайта http://sapisoft.h1.ru. наверх Новости сайта VBNet
Последние 20 тем форума на VBNet.Ru: 12:28 / 30 ноя. Вопрос дня! | Хитов: 4 | Ответов: 4 10:19 / 30 ноя. Компиляция, линковка(поправка!) | Хитов: 3 | Ответов: 2 22:20 / 29 ноя. Pomogite!!!Plz! | Хитов: 14 | Ответов: 4 22:08 / 29 ноя. Компиляция, линковка | Хитов: 13 | Ответов: 2 21:52 / 29 ноя. как?? | Хитов: 18 | Ответов: 2 21:45 / 29 ноя. Apache & ASP | Хитов: 4 | Ответов: 0 21:25 / 29 ноя. Инсталл не работает в Windows 2000/XP (VB6) | Хитов: 6 | Ответов: 0 20:02 / 29 ноя. Date | Хитов: 11 | Ответов: 2 19:36 / 29 ноя. MSComm & Internet | Хитов: 3 | Ответов: 1 18:44 / 29 ноя. Интернет, однако. | Хитов: 7 | Ответов: 0 15:58 / 29 ноя. PBDLL + VB | Хитов: 23 | Ответов: 10 15:05 / 29 ноя. Запустить программу | Хитов: 10 | Ответов: 0 14:36 / 29 ноя. Защита CD от копирования | Хитов: 12 | Ответов: 0 11:03 / 29 ноя. FSO HelpMe и не только | Хитов: 12 | Ответов: 2 09:54 / 29 ноя. HTTP & WinSock | Хитов: 10 | Ответов: 5 09:15 / 29 ноя. Новое сообщение без темы | Хитов: 9 | Ответов: 0 22:32 / 28 ноя. Нужно найти один контрол | Хитов: 32 | Ответов: 2 22:16 / 28 ноя. addRow | Хитов: 12 | Ответов: 0 20:39 / 28 ноя. Рекурсирвный перебор по сайту | Хитов: 16 | Ответов: 1 20:26 / 28 ноя. Разница между VBA в EXCELL 2000 и EXCELL XP | Хитов: 10 | Ответов: 0 Последние поступления в Библиотеку кодов: наверх Новости сайта MSDN наверх Новости сайта GotdotNet
Новые статьи: наверх Новости сайта dotSite Новые статьи: Новые примеры: наверх Один момент из жизни форума: Отмена удаления строки в DataGrid Адерес темы: http://vbnet.ru/forum/show.asp?id=28432 Вопрос: Автор вопроса: Alexander Bondarenko В VB.NET не могу решить вроде банальную задачку со стандартным DataGrid. При поытке пользоватоля удалить запись я хочу вывести сообщение "Уверен?" и если пользователь ответит "Нет" то отменить удаление. Ответы: Автор: Павел Путём курения MSDN у класса DataTable было найдено событие RowDeleting. Подписывайся на него и, если строку удалять не надо, в обработчике события ставь аргумент Action равным DataRowAction.Rollback. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: XaNDer Ответ ожидается по этому адресу В ообщем мне нужно сканировать процессы (из под Win2_k). И у определенного процеса изнать путь исполняемого файла (приложения). Вопрос: Как узнать расположение (полный путь к ) файла, через его процесы Автор вопроса: Swift Ответ ожидается по этому адресу Подскажите, пожалуйста, какой самый быстрый (по производительности) способ склеить два,три,.... файла средствами VB. Автор вопроса: Andrey Ответ ожидается по этому адресу Помогите, как в DataReport динамически добавить Label, ну и вообще какие либо объекты, или если такое не возможно, то где это возможно? Автор вопроса: Данила Ответ ожидается по этому адресу Пожалуйста, помогите сделать синхронизацию. Имеется база и её реплики (ADO3.51). В базе хранится дерево, т.е. в таблице "люди" хранятся их ИД и описание, а в таблице "связи" хранятся их ИД и ИД родителя. Проблема в том, что обе базы заполняются на разных машинах и ИД людей не совпадают, следовательно при синхронизации в базах получается по два одинаковых человека с разными ИД. Т.е. вся структура напоминает дерево, файловую систему. Как такое можно сделать? Прошу учесть, что: 1. ФИО не является уникальным (вообще ничего уникального нет, всё может повторяться). Кстати, это меня смущает. Возможно ли создание подобных систем с таким условием? 2. База будет огромной, следовательно идентификаторы должны быть небольшими. Автор вопроса: Мелёшин А.А. Ответ ожидается по этому адресу Я сделал БД на Visual Basic, но она не работает на других компьютерах. Т.е. БД присоедена у меня по одному адресу, а на другом компьютере по другому. Автор вопроса: Учебный центр Ответ ожидается по этому адресу Вышлите пример какой-нибудь маленькой БД (желательно с комментариями). Например, содержащую информацию о студентах, их адреса, телефоны. Автор вопроса: Данила Ответ ожидается по этому адресу Как можно сделать опрос? Т.е. как во многих программах есть такая система, которая реагирует на какие-либо изменения (проводник на перемещение файлов, фотошоп на изменение рисунка другой программой и т.п.). У меня есть форма, которая заполняется данными из базы. Нужно, чтоб если в базу что-то добавилось, она на это среагировала и обновила своё содержимое. Автор вопроса: Swift Ответ ожидается по этому адресу Есть хороший код: Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long Private Declare Function DefWindowProc Lib "user32" Alias "DefWindowProcA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Const WM_SETHOTKEY = &H32 Private Const WM_SHOWWINDOW = &H18 Private Const HK_SHIFTA = &H141 'Shift + A Private Const HK_SHIFTB = &H142 'Shift + B Private Const HK_CONTROLA = &H241 'Control + A Private Const HK_ALTZ = &H45A Private Sub Form_Load() 'Позволить узнать windows какая горячая клавиша в вашем приложении erg& = SendMessage(Me.hwnd, WM_SETHOTKEY, HK_ALTZ, 0) If erg& <> 1 Then MsgBox "You need another hotkey", vbOKOnly, "Error" 'Сказать windows что делать при нажатии на hotkey 'в данном случае - показать окно программы erg& = DefWindowProc(Me.hwnd, WM_SHOWWINDOW, 0, 0) End Sub Как Вы поняли, он позволяет активировать Ваше приложение при нажатии HOTKEY. Но, если я, допустим, хочу не активировать приложение, а выпонить другую процедуру, то где мне эту код этой самой процедуры писать?. И второй вопрос: Какая константа Ctrl+8? (Или по-возможности список всех констант). Автор вопроса: Лунный Кот Ответ ожидается по этому адресу Дано: MS Outlook 2000. Создаем список рассылки с именем, например «Приятели». Добавляем в него контакты, например «Вася», «Петя» и «Ваня». Создаем правило для папки «Входящие»: Мастер правил -> Создать -> Применить это правило, когда получены сообщения -> От [отправители или список рассылки] -> Добавляем вместо [отправители или список рассылки] наш список с именем «Приятели», и получаем следующее сообщение: «Приятели» является личным списком рассылки и не может использоваться для данной операции. Использовать отдельные записи из «Приятели»? Цель: Использовать не отдельные записи, а все-таки сам список, причем он должен автоматически обновляться в правиле. Второй вариант – можно создать подпапку для элементов типа «Контакт», поместить туда контакты «Вася», «Петя» и «Ваня», и при помещении контакта в эту подпапку он должен автоматически помещаться в список этих самых «отдельных записей». Может быть, кто-нибудь посоветует, как это сделать? Если не слишком побеспокою, то, нет ли у кого-нибудь из уважаемых экспертов исходника SUB или FUNCTION, которая могла бы организовать подобную обработку? PS Просьба не предлагать перейти на БАТ или еще что-нибудь… Программа, которую использую, меня вполне устраивает во всех отношениях. Автор вопроса: Сергей Ответ ожидается по этому адресу Хотел узнать как добавлять музыку или звуки в VB? Автор вопроса: Сергей Ответ ожидается по этому адресу Как добавлять в *.txt строки из VB? Автор вопроса: Сергей Ответ ожидается по этому адресу Как загружать файлы из .txt в VB? Ответы: Вопрос: В VB6 создаю объект EXCEL, добавляю лист, вношу данные, выставляю эти данные жирным шрифтом но у меня не получается выставить центровкуэтих данных в ячейке по горизонтале. При попытке выставить свойство myExcelObject.Sheets("Лист1").Range("A1:E1").HorizontalAlignment = xlCenter, или myExcelObject.Sheets("Лист1").Cells(1, 1).HorizontalAlignment = xlCenter выдается сообщение об ошибке Run-time error '1004': Нельзя установить свойство HorizontalAlignment класса Range Что не так? Помогите, пожалуйста. Ответ: Автор ответа: monolit В вашем случае для Excel вам надо указать следующие параметры: myExcelObject.Sheets("Лист1").Range("A1:E1").HorizontalAlignment = 3 То-есть получается это выбор третьего пункта меню "Формат ячейки" (центрирование). Вопрос: Как произвести конвертирование текста из DOS в Win (or UniCode)? Ответ: Автор ответа: Memphis Есть две API-функции, предназначенные для преобразования кодировок. Когда-то в рассылке был следующий код, который я использовал в нескольких своих программах. В принципе, работает... Option Explicit Private Declare Function CharToOemBuff _ Lib "user32" _ Alias "CharToOemBuffA" (ByVal lpszSrc As String, _ ByVal lpszDst As String, _ ByVal cchDstLength As Long _ ) As Long Private Declare Function OemToCharBuff _ Lib "user32" _ Alias "OemToCharBuffA" (ByVal lpszSrc As String, _ ByVal lpszDst As String, _ ByVal cchDstLength As Long _ ) As Long ' from DOS into WIN Public Function ToAnsi(s As String) As String Dim Buffer As String Buffer = Space(Len(s) + 1) OemToCharBuff s, Buffer, Len(s) ToAnsi = Left(Buffer, Len(s)) End Function ' from WIN into DOS Public Function ToOEM(s As String) As String Dim Buffer As String Buffer = Space(Len(s) + 1) CharToOemBuff s, Buffer, Len(s) ToOEM = Left(Buffer, Len(s)) End Function Ответ: Автор ответа: Никитин Андрей Dim strString as string Private Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long 'Переводим строку в ANSI формат Call OemToChar(strString, strString) Ответ: Автор ответа: Куприянов Дмитрий Попробуйте такую штуку: Public Sub MyDecodeProcedure() Dim LenS&, i&, OneChar&, OneByte&, j& Dim ResultString$, txtBuffer As String, Ostatok&, LastStep& txtBuffer = "" 'SourceFile = "c:\test.txt" Open SourceFile$ For Random Access Read As #1 Len = RecordLen LenS = LOF(1) If LenS = 0 Then Close #1: Kill SourceFile$ Exit Sub End If Ostatok = LenS Mod RecordLen j = 1 Do While j < ((LenS \ RecordLen) + 2) Get #1, j, SourceArray If j < ((LenS \ RecordLen) + 1) Then LastStep = RecordLen _ Else LastStep = Ostatok ResultString = Space$(LastStep) '(RecordLen) For i = 1 To LastStep OneByte = SourceArray(i) Select Case OneByte Case Is < 128 OneChar = OneByte Case 128 To 175 OneChar = OneByte + 64 + 848 Case 224 To 239 OneChar = OneByte + 16 + 848 Case Else OneChar = AscW(Chr$(OneByte)) End Select ' получили преобразованное значение символа ' здесь необходимо сохранить преобразованное значение OneChar ' в строку или в файл Next j = j + 1 Loop Close #1 End Sub Ответ: Автор ответа: Куприянов Дмитрий Public Sub MyDecodeProcedure() Dim LenS&, i&, OneChar&, OneByte&, j& Dim ResultString$, txtBuffer As String, Ostatok&, LastStep& txtBuffer = "" 'SourceFile = "c:\test.txt" Open SourceFile$ For Random Access Read As #1 Len = RecordLen LenS = LOF(1) If LenS = 0 Then Close #1: Kill SourceFile$ Exit Sub End If Ostatok = LenS Mod RecordLen j = 1 Do While j < ((LenS \ RecordLen) + 2) Get #1, j, SourceArray If j < ((LenS \ RecordLen) + 1) Then LastStep = RecordLen _ Else LastStep = Ostatok ResultString = Space$(LastStep) '(RecordLen) For i = 1 To LastStep OneByte = SourceArray(i) Select Case OneByte Case Is < 128 OneChar = OneByte Case 128 To 175 OneChar = OneByte + 64 + 848 Case 224 To 239 OneChar = OneByte + 16 + 848 Case Else OneChar = AscW(Chr$(OneByte)) End Select ' получили преобразованное значение символа ' здесь необходимо сохранить преобразованное значение OneChar ' в строку или в файл Next j = j + 1 Loop Close #1 End Sub Ответ: Автор ответа: Cooller 'в модули Public Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long 'на форме ' Конвертируем строку "Cooller_Проект" ' в dos-кодировку Dim sourcestring As String ' нужная строка Dim deststring As String ' получаемая строка Dim code As Long sourcestring = "Cooller Проект" ' строка для перекодировки deststring = Space$(Len(sourcestring)) ' получаем перекодированную строку code = CharToOem(sourcestring, deststring) Debug.Print deststring А вооще эта тема была (дай бог памяти...) в 1 эл. выпуске на мыле... Давно это было...:) Вопрос: Пишу макрос на VB для word. У меня стоит такая задача: внутри документа должна при определенных условиях появлятся или не появлятся определенная форма (страница). Вопрос: Как с помощью VB в word выделять часть текста, а также его удалять, копировать и вставлять в другое место или в другой файл. В том числе и как удалить из текста таблицу. Подскажите пожалуйста. Ответ: Автор ответа: C...R...a...S...H Выделять текст можно так Selection.MoveLeft Unit:=wdCharacter, Count:=25 Selection.MoveLeft Unit:=wdCharacter, Count:=32, Extend:=wdExtend Selection.Copy А самый реальный способ Начинаешь запись макроса делаешь что твоей душе угодно Стопаеш макрос и открываешь его для редактирования И о чудо там все что ты деле написано на VBA коде юзать не переюзать Ответ: Автор ответа: Никитин Андрей Начинаешь в Word-е запись макроса. Выполняешь все действия, которые тебя интересуют. Завершаешь запись макроса. Смотришь его исходник, анализируешь, делаешь у себя аналогично. Вопрос: Как через хэндл окна добраться до контролов, которые находятся в этом окне? Ответ: Автор ответа: Александр Юрьевич Можно через API FindFindowEx или EnumChildWindow (для перечисления всех дочерних контролов окна). Вопрос: Какой наиболее эфективный способ передать кучу параметров в функцию? Задача: на форме куча информации (тексты, списки), которые нужно передать в функцию, которая добавит их в базу. Ответ: Автор ответа: C...R...a...S...H Создаеш массивы и заносиш в них однотипную информацию и передаешь функции Не забуть про фишку ByRef, ByVal. Ответ: Автор ответа: Куприянов Дмитрий Попробуйте пересмотреть структуру программы. Передавать в функцию кучу параметров не очень хороший подход, тем более, если это тексты, списки и т.п. Вопрос: Как в Word и Excel перехватить вывод диалога печати документа? То есть пользователь нажимает кнопку "Печать", а вместо вывода диалога печати документа - выскакивает MessageBox. Ответ: Автор ответа: Дмитрий Куприянов Попробуйте такую конструкцию: Private WithEvents WordApp As Word.Application Private Sub WordApp_DocumentBeforePrint(ByVal Doc As Word.Document, Cancel As Boolean) 'Эта процедура получает управление при попытке вывода на печать 'Чтобы запретить печать достаточно написать Cancel=True или еще какие-нибудь действия ... End Sub Вопрос: Как в VB работать с реестром (создавать каталоги и присваевать значения параметрам)? Ответ: Автор ответа: XaNder Dim MySettings As Variant ## Init variable SaveSetting "MyApp", "Startup", "Left", "Good" ## Save reg MySettings = GetSetting("MyApp", "Startup", "Left", "") ## Load reg MsgBox MySettings ## alert reg DeleteSetting "MyApp", "Startup" ## delete reg It's standart command. Recomended Api-Function. Ответ: Автор ответа: Данила У меня есть и контролы и примеры. Пиши, если нужно отправить. Ответ: Автор ответа: Куприянов Дмитрий Самый простой способ использовать функции SaveSetting и GetSetting. Только эти функции работают в ветке реестра HKEY_CURRENT_USER\Software\VB and VBA Program Setting Другой способ - использовать API Ответ: Автор ответа: Cooller Пример мне когда-то прислали. Он вообще-то про автозагрузку, но если разобраться... Чтобы добавить программу в автозагрузку, необходимо создать в разделе реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run строковый параметр. В значении параметра установить путь программы. В модуле пишешь: Option Explicit Public Const REG_SZ As Long = 1 Public Const REG_DWORD As Long = 4 Public Const HKEY_LOCAL_MACHINE = &H80000002 Public Const HKEY_CLASSES_ROOT = &H80000000 Public Const HKEY_CURRENT_USER = &H80000001 Public Const HKEY_USERS = &H80000003 Public Const ERROR_NONE = 0 Public Const ERROR_BADDB = 1 Public Const ERROR_BADKEY = 2 Public Const ERROR_CANTOPEN = 3 Public Const ERROR_CANTREAD = 4 Public Const ERROR_CANTWRITE = 5 Public Const ERROR_OUTOFMEMORY = 6 Public Const ERROR_INVALID_PARAMETER = 7 Public Const ERROR_ACCESS_DENIED = 8 Public Const ERROR_INVALID_PARAMETERS = 87 Public Const ERROR_NO_MORE_ITEMS = 259 Public Const KEY_ALL_ACCESS = &H3F Public Const REG_OPTION_NON_VOLATILE = 0 Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long 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, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long 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 Declare Function RegQueryValueExString Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Long, lpcbData As Long) As Long Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As Long, lpcbData As Long) As Long Declare Function RegSetValueExString Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, ByVal lpValue As String, ByVal cbData As Long) As Long Declare Function RegSetValueExLong Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpValue As Long, ByVal cbData As Long) As Long Declare Function RegDeleteKey& Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) Declare Function RegDeleteValue& Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) 'Создание нового ключа (подключа) Public Function CreateNewKey(lPredefinedKey As Long, sNewKeyName As String) Dim hNewKey As Long Dim lRetVal As Long lRetVal = RegCreateKeyEx(lPredefinedKey, sNewKeyName, 0&, vbNullString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hNewKey, lRetVal) RegCloseKey (hNewKey) End Function 'Запись данных в ключ Public Function SetKeyValue(lPredefinedKey As Long, sKeyName As String, sValueName As String, vValueSetting As Variant, lValueType As Long) Dim lRetVal As Long Dim hKey As Long lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS, hKey) lRetVal = SetValueEx(hKey, sValueName, lValueType, vValueSetting) RegCloseKey (hKey) End Function Public Function SetValueEx(ByVal hKey As Long, sValueName As String, lType As Long, vValue As Variant) As Long Dim lValue As Long Dim sValue As String Select Case lType Case REG_SZ sValue = vValue SetValueEx = RegSetValueExString(hKey, sValueName, 0&, lType, sValue, Len(sValue)) Case REG_DWORD lValue = vValue SetValueEx = RegSetValueExLong(hKey, sValueName, 0&, lType, lValue, 4) End Select End Function 'Возвращает значения записанные в ключе Public Function QueryValue(lPredefinedKey As Long, sKeyName As String, sValueName As String) Dim lRetVal As Long Dim hKey As Long Dim vValue As Variant lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS, hKey) lRetVal = QueryValueEx(hKey, sValueName, vValue) QueryValue = vValue RegCloseKey (hKey) End Function Function QueryValueEx(ByVal lhKey As Long, ByVal szValueName As String, vValue As Variant) As Long Dim a As Integer Dim cch As Long Dim lrc As Long Dim lType As Long Dim lValue As Long Dim sValue As String On Error GoTo QueryValueExError 'Определение размера и типа считываемых данных lrc = RegQueryValueExNULL(lhKey, szValueName, 0&, lType, 0&, cch) If lrc <> ERROR_NONE Then a = 0 Select Case lType 'Для символьных Case REG_SZ: sValue = String(cch, 0) lrc = RegQueryValueExString(lhKey, szValueName, 0&, lType, sValue, cch) If lrc = ERROR_NONE Then vValue = Left$(sValue, cch) Else vValue = Empty End If 'Для числовых Case REG_DWORD: lrc = RegQueryValueExLong(lhKey, szValueName, 0&, lType, lValue, cch) If lrc = ERROR_NONE Then vValue = lValue 'Для остальных не поддержанных типов данных Case Else lrc = -1 End Select QueryValueExExit: QueryValueEx = lrc Exit Function QueryValueExError: Resume QueryValueExExit End Function 'Удаление значений ключа Public Function DeleteValue(lPredefinedKey As Long, sKeyName As String, sValueName As String) Dim lRetVal As Long Dim hKey As Long lRetVal = RegOpenKeyEx(lPredefinedKey, sKeyName, 0, KEY_ALL_ACCESS, hKey) lRetVal = RegDeleteValue(hKey, sValueName) RegCloseKey (hKey) End Function 'Удаление ключа Public Function DeleteKey(lPredefinedKey As Long, sKeyName As String) Dim lRetVal As Long lRetVal = RegDeleteKey(lPredefinedKey, sKeyName) End Function В примере написан полный код работы с реестром, если необходимо только записать данные, то лишнее можно убрать. Применение: Private Sub Command1_Click() Dim path As String path = "Software\Microsoft\Windows\CurrentVersion\Run" CreateNewKey HKEY_LOCAL_MACHINE, path SetKeyValue HKEY_LOCAL_MACHINE, path, "Назавание программы", "здесь пишешь полный путь программы", REG_SZ End Sub Вопрос: Дан одномерный массив А, сост. из 10 элементов. Как написать программу нахождения максимального отрицательного элемента массива А и определения его индекса? Ответ: Автор ответа: Данила Индекс я не догнал. Это что, порядковый номер чтоль? А остальное так: Public Function минимальное(массив, вернуть_индекс As Boolean) Max = массив(0) Index = 0 For j = 0 To 9 If массив(j) < Max Then Max = массив(j) Index = j End If Next Loop If вернуть_индекс = True Then минимальное = Index 'возвращаем индекс Else минимальное = Max 'возвращаем число End If End Function Ответ: Автор ответа: C...R...a...S...H dim a(9) as integer dim MinEl as integer dim indexMin as integer for i=0 to 9 a(i)=inputbox("XXXX","XXX") 'ввод данных next i minEl=a(0) 'пусть наименьшим будет первый элимент indexMin=0 for i=1 to 9 if a(i)< 0 then 'Только отрицательные элименты if minEl>a(i) then indexMin=i:minEl=a(i) 'Если найден отрицательный элимент больше предыдушего end if next i if indexMin=0 and minEL>=0 then Msgbox "Нет отрицательных элиментов" else Msgbox "максим. отриц. эл. = " & minEl &" его индекс= " & indexMin Ответ: Автор ответа: VMJ Элементарно Ватсон! Dim A() As Variant Dim i As Integer Dim d As Double Dim n As Integer A = Array(-0.5, -1, -6, -9, 12, 24, 50) d = -(1 ^ 999) 'Ну очень мало For i = 0 To UBound(A) If A(i) < 0 Then If A(i) > d Then d = A(i) n = i End If End If Next i Debug.Print n; "|"; d А вообще-то уроки нужно делать самому... Ответ: Автор ответа: Memphis Я, честно говоря, не совсем понял, что означает "максимальный отрицательный элемент". Поэтому для себя решил, что пусть это будет наибольшее по модулю значение (т.е. самое маленькое значение, ведь числа идут от минус бесконечности - самые маленькие - до плюс бесконечности - самые большие). Dim A(9) As Integer ' например. Можно объявить массив любого типа Dim Amin As Integer ' сюда будет записываться минимальное значение отрицательных элементов Dim i As Integer ' для счётчка цикла Dim iMin As Integer ' сюда будет записываться индекс максимального отрицательного значения Amin = 1 ' взял от фонаря любое положительное число. Любое отрицательное число будет гарантировано меньше него For i = 0 to 9 If (A(i) < 0) Then If (A(i) < Amin) Then Amin = A(i) iMin = i End If End If Next i А после этого можно использовать значения для вывода в текстовых полях: txtAmin.Text = "Минимальный элемент массива равен " & Amin txtImin.Text = "Индекс минимального элемента: " & iMin или в окне Immediate: Debug.Print Amin Debug.Print iMin Ответ: Автор ответа: Cooller Слушай ты в школе то учился :-) Dim a(10) a(1) = -4: a(2) = -20: a(3) = -4: a(4) = -2: a(5) = -4: a(6) = -2: a(7) = -4: a(8) = -2: a(9) = -4: a(10) = -2 cooller = a(i) For i = 1 To 10 If cooller > a(i) Then cooller = a(i): cIndex = i Next i Print cooller, cIndex Вопрос: Как открыть документ Word? Ответ: Автор ответа: Dmitriy Примерно вот так: Private Sub Command1_Click() Dim objWord As Object Dim filedoc As String Set objWord = CreateObject("word.application") objWord.Visible = True filedoc = "c:\test\test.doc" objWord.Documents.Open FileName:=filedoc, ConfirmConversions:=False, ReadOnly:= _ False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _ "", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _ Format:=1 End Sub Ответ: Автор ответа: Куприянов Дмитрий Попробуйте так: Private WithEvents WordApp As Word.Application Private Sub Sub1 ... Set WordApp = CreateObject("Word.Application") WordApp.Documents.Open FileName ... End Sub Вопрос: Как при выходе из программы выключить windows, а если возможно то и компьютер? Ответ: Автор ответа: XaNder ## It's Shuting you system Public Declare Function InitiateSystemShutdown Lib "advapi32.dll" Alias "InitiateSystemShutdownA" (ByVal lpMachineName As String, ByVal lpMessage As String, ByVal dwTimeout As Long, ByVal bForceAppsClosed As Long, ByVal bRebootAfterShutdown As Long) As Long ## It's Aborting shutdown.(if this need...) Public Declare Function AbortSystemShutdown Lib "advapi32.dll" Alias "AbortSystemShutdownA" (ByVal lpMachineName As String) As Long #################################################### * * * @ Samles: InitiateSystemShutdown("192.168.0.46", "And yes leave you in world an ion with word of the god. Into the name of father and and holy ghost. Amen.", 60, False, False) AbortSystemShutdown("192.168.0.46") Ответ: Автор ответа: Halyna Private Sub Form_Unload() Shell "shell32,SHExitWindowsEx 1" End Sub Ответ: Автор ответа: Cooller Разместите в модуле: Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, _ ByVal dwReserved As Long) As Long Public Const EWX_LOGOFF = 0 Public Const EWX_SHUTDOWN = 1 Public Const EWX_REBOOT = 2 Public Const EWX_FORCE = 4 А это в коде: Dim s As Long 'Так можно сделать Shut down s = ExitWindowsEx(EWX_SHUTDOWN, 0&) 'Так можно сделать Log off s = ExitWindowsEx(EWX_LOGOFF, 0&) 'А так Reboot s = ExitWindowsEx(EWX_REBOOT, 0&) Но самый верный способ это молотком и по монитору и по монитору...:) Вопрос: Как записать текст в файл *.txt через VB? Ответ: Автор ответа: XaNder ##See: Number=FreeFile Open "File.txt" For Output as Number print #Number,"qweqweqweqwe" close #Number Ответ: Автор ответа: Данила Open "c:\temp\fillist.in" For Output As #1 Print #1, путь Reset Ответ: Автор ответа: C...R...a...S...H Open "WriteME.txt" for append as #1 print #1 ,"Текушее системное время" & time Ответ: Автор ответа: Куприянов Дмитрий Попробуйте так Dim strSave as TextStream Dim strFileName as String Sub WText … Set strSave=fso.OpenTextFile(strFileName, ForWriting, True) strSave.Write txtData strSave.Close ... End Sub Где fso - FileSystemObject, а txtData - текст записываемый в файл Ответ: Автор ответа: Cooller open "cooller.txt" for output as #1 print #1,"То что надо" close #1 Вопрос: Нужно чтобы программа просматривала текстовый фаил и при соответствующем значении, выполняла действие Ответ: Автор ответа: Данила Open "c:\temp\fillist.in" For Input As #1 Line Input #1, строка1 if строка1=значение then действие end if Reset Ответ: Автор ответа: Sergey Это как вариант.. Для одной строки в файле. Модифицировать можно как угодно.. :-) Private Sub Form_Load() Dim a As String Open "myfilename.txt" For Input As #1 If Not EOF(1) Then Line Input #1, a Else Close #1: Exit Sub Select Case a Case "Variant1" 'Код подпрограммы Case "Variant2" 'Код подпрограммы Case "Variant3" 'Код подпрограммы '... End Select Close #1 End Sub Ответ: Автор ответа: Куприянов Дмитрий Попробуйте вот такую конструкцию: Public Sub MyProcedure() Dim LenS&, i&, OneByte&, j& Dim ResultString$, txtBuffer As String, Ostatok&, LastStep& txtBuffer = "" SourceFile = "c:\test.txt" Open SourceFile$ For Random Access Read As #1 Len = RecordLen LenS = LOF(1) If LenS = 0 Then Close #1: Kill SourceFile$ Exit Sub End If Ostatok = LenS Mod RecordLen j = 1 Do While j < ((LenS \ RecordLen) + 2) Get #1, j, SourceArray If j < ((LenS \ RecordLen) + 1) Then LastStep = RecordLen _ Else LastStep = Ostatok ResultString = Space$(LastStep) For i = 1 To LastStep OneByte = SourceArray(i) If OneByte = <соответствующее значение> Then <соответствующие действия> End If Next j = j + 1 Loop Close #1 End Sub Ответ: Автор ответа: Куприянов Дмитрий Попробуйте вот такую конструкцию Public Sub MyProcedure() Dim LenS&, i&, OneByte&, j& Dim ResultString$, txtBuffer As String, Ostatok&, LastStep& txtBuffer = "" SourceFile = "c:\test.txt" Open SourceFile$ For Random Access Read As #1 Len = RecordLen LenS = LOF(1) If LenS = 0 Then Close #1: Kill SourceFile$ Exit Sub End If Ostatok = LenS Mod RecordLen j = 1 Do While j < ((LenS \ RecordLen) + 2) Get #1, j, SourceArray If j < ((LenS \ RecordLen) + 1) Then LastStep = RecordLen _ Else LastStep = Ostatok ResultString = Space$(LastStep) For i = 1 To LastStep OneByte = SourceArray(i) If OneByte = <соответствующее значение> Then <соответствующие действия> End If Next j = j + 1 Loop Close #1 End Sub Ответ: Автор ответа: Cooller Open "cooller.txt" For Input As #1 Do Line Input #1, a$ if a$="значение" then ' действие Loop Until EOF(1) Close #1 ' слушай лучше найди таковый учебник Vb для чайников и штудируй на здоровье...Благо inet большой...:-( Вопрос: Есть объект Data, подключенный к FILE.DBF(содержит поля KOD и SUM), есть Text1 и Text2. Как осуществить поиск в поле KOD всех значений Техт1 и вывод в Техт2 суммы соответствующих значений поля SUM. Если использую SEEK в цикле, находит только первую запись с указанным кодом и суммирует, пока не закончится цикл. Ответ: Автор ответа: Sergey Morenets Почему просто не выполнить запрос? Для чего грузить всю таблицу только для того, чтобы найти сумму. SELECT SUM(SUM) FROM FILE.DBF WHERE KOD='Text1' Вопрос: В папке есть куча рисунков с расширением bmp и jpg, а могут быть и не только рисунки. Рисунки не индексированы. С помощью CommonDialog открываю первый рисунок, который заносится в Picture. Подскажите, пожалуйста, как мне передать в CommonDialog1.FileName следующий рисунок, чтобы отобразить его в Picture. Такая штука есть в ACDTree и в XP-шном просмотрщике. Ответ: Автор ответа: Данила На сколько я понял, это будет а-ля АСDSee. Тогда почему бы тебе не поставить скрытый FileView, не передать ему путь и у него спрашивать следующее имя? Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
||
Выпуск подготовили: |
Сурменок Павел |