VBNet
VBMania
Голосование: Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Свежий выпуск.
Читайте! Содержание выпуска
Citycat by Email Программа Citycat by Email позволяет работать с сервером Subscribe.ru с помощью электронной почты. Теперь Вам не нужно тратить деньги на работу в online и просматривать мегабайты рекламы для того, чтобы подписаться на нужную рассылку! Вам просто необходимо скачать небольшую базу данных по всем рассылкам каталога с нашего сайта, после чего Вы сможете подписываться и отписываться от рассылок, заказывать архивы прошлых выпусков, выполнять поиск по каталогу рассылок и многое другое. Программу Citycat by Email можно бесплатно загрузить с сайта http://sapisoft.h1.ru. наверх
Новый компакт-диск! VBNet.RU представляет новый компакт диск "VBNet CD 11 2003". На диск помещены новые материалы:
Кроме того, на диске расположена свежая копия сайта VBNet.Ru. Со времени выхода предыдущей версии диска на сайт было добавлено 12 статей, 80 примеров, 10 ActiveX компонентов, 3 полезные программы, около 8000 сообщений в форуме! Появилось 2 новых раздела: VBA и мастерская разработчика. Полное содержание диска Вы можете скачать здесь. Диск распространяется по почте наложенным платежом. Цена: 60 рублей + 40 рублей (за почтовые расходы) = 100 рублей. Действует система скидок для постоянных клиентов. Заказать диск можно здесь. наверх Новости сайта VBNet
Последние 20 тем форума на VBNet.Ru: 15:23 / 17 ноя. возможно соединение с БД без разрыва? | Хитов: 1 | Ответов: 0 15:02 / 17 ноя. ADODC??? | Хитов: 1 | Ответов: 0 13:30 / 17 ноя. СРОЧНО (задача) | Хитов: 10 | Ответов: 1 11:45 / 17 ноя. процессы Windows | Хитов: 1 | Ответов: 1 11:36 / 17 ноя. Процессы Windows98-2000 (vb6) | Хитов: 8 | Ответов: 1 08:16 / 17 ноя. Помогите Чайнику с Outlook-ом | Хитов: 13 | Ответов: 7 06:49 / 17 ноя. ADMINAM!!! | Хитов: 9 | Ответов: 1 05:07 / 17 ноя. WinSock | Хитов: 11 | Ответов: 1 05:00 / 17 ноя. Рисование линии из панели рисования | Хитов: 4 | Ответов: 1 03:28 / 17 ноя. Притягивание плавающей формы к курсору | Хитов: 8 | Ответов: 1 02:32 / 17 ноя. Полупрозрачность | Хитов: 9 | Ответов: 0 02:11 / 17 ноя. ??? | Хитов: 19 | Ответов: 2 01:01 / 17 ноя. управление печатью | Хитов: 4 | Ответов: 0 00:17 / 17 ноя. Как запускать... | Хитов: 12 | Ответов: 1 21:11 / 16 ноя. Нарисовать поверх всех окон. | Хитов: 7 | Ответов: 0 19:40 / 16 ноя. Печать файлов | Хитов: 7 | Ответов: 0 19:37 / 16 ноя. Ишу идеи... | Хитов: 25 | Ответов: 2 19:27 / 16 ноя. Помогите с контролом!!!! | Хитов: 21 | Ответов: 2 18:44 / 16 ноя. Интернет траффик | Хитов: 13 | Ответов: 0 18:20 / 16 ноя. Вертушка | Хитов: 24 | Ответов: 3 Последние поступления в Библиотеку кодов: наверх Новости сайта MSDN наверх Новости сайта GotdotNet
Новые статьи:
наверх Новости сайта dotSite Новые статьи: Новые примеры: наверх Один момент из жизни форума: Математика Вопрос: Автор вопроса: cresta Есть набор чисел. Числа двенадцатизначные, расположены в произвольном порядке. Число элементов в наборе может достигать нескольких десятков тысяч.Как можно быстро определить минимальное свободное значение, не встречающееся в наборе? Например: 311928374667 029384756473 798765432765 . . . 319283700919 чтобы получить 029384756474 ( второе значение +1) Последовательный перебор всех значений набора с последующим сравнением с каждым значением набора на предмет а=а+1 в самом неблагоприятном случае потребует при количестве элементов в наборе 50000 пройти весь набор 2500000000 раз. Может кто знает какой-нибудь алгоритм получения минимального неиспользуемого в наборе значения? Ответы: Автор: Pashenko Попробуй сначала отсортировать список. Существует метод быстрой сортировки, т. н. Quiсk Sort. Сам не реализовывал, но принцип такой: 1. Выбираем число в центре массива. 2. Последовательно сравниваем с ним все числа массива, если число, стоящее выше, больше среднего, меняем их местами (для второй половины, соответственно, наоборот). Таким образом получаем в первой половине массива все числа меньше среднего, во второй половине - больше среднего. 3. Повторяем пп. 1, 2 для каждой половины массива (среднее число можно исключить из рассмотрения), потом для каждой четверти и т. д. до упора. Весь алгоритм, как правило, выполняют в виде рекурсивной процедуры. P. S. Насколько я знаю, более быстрого способа сортировки пока не придумали. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Swift Ответ ожидается по этому адресу В VB6 создаю объект EXCEL, добавляю лист, вношу данные, выставляю эти данные жирным шрифтом но у меня не получается выставить центровкуэтих данных в ячейке по горизонтале. При попытке выставить свойство myExcelObject.Sheets("Лист1").Range("A1:E1").HorizontalAlignment = xlCenter, или myExcelObject.Sheets("Лист1").Cells(1, 1).HorizontalAlignment = xlCenter выдается сообщение об ошибке Run-time error '1004': Нельзя установить свойство HorizontalAlignment класса Range Что не так? Помогите, пожалуйста. Автор вопроса: SHARP Ответ ожидается по этому адресу Я только начинаю программировать на VB и VBA. В основном работаю в Excel, для удобства создал свою панель меню. Как в Excel в своей панели меню сделать "Popup menu"? Автор вопроса: Александр Ответ ожидается по этому адресу Как реализовать выполнение команд DOS (dir, rename и др.)? Автор вопроса: DenCh Ответ ожидается по этому адресу Есть необходимость получать из БД каждые два часа какие-то данные. Програма будет крутиться на сервере, таких программ N-ое кол-во. Хотелось бы сделать ее как системный сервис. Программировать только начинаю. Ответ по возможности вышлите на e-mail. Автор вопроса: Anatoliy Ответ ожидается по этому адресу Скажите пожалуйста, как загрузить рисунок (из Picture Box-a) в память (не Винчестер), и наоборот из памяти загрузить рисунок в Picture Box? Автор вопроса: Мелёшин А.А. Ответ ожидается по этому адресу Как сделать так чтобы при загрузки формы проигрывался звук? Если можно намыльте исходничек по проще. Автор вопроса: Andr Ответ ожидается по этому адресу Я уже задавал вопрос :-( см. от Andr: В подпрограмме есть N-подпрограмм (для GOSUB). ... :-) Но то ли не понятно написал, то ли это не реально для возможностей VB. Хотя, вроде-бы-как и WinAPI и VarPtr() и коллекции объектов можно использовать. Есть даже слух, что в VB есть функция вставки кода на ASM ;-) Попытаюсь прояснить свой вопрос на примере двух приблизительных подпрограмм на VB. На Vijual Kod выглядит просто: Kod=>eBx -eBx=Kod =>[ebx] -переход по адресу в eBx ------- два примерных варианта на VB (нереальных) ---- Public Function kod_ObrabotkaKoda(Kod0_255&)as long Dim S$ Const cS$="Metka" S=cS+Ttrim$(Str$(Kod0_255))'Создать имя метки GoSub к имени метки находящейся в строковой переменной S exit Function '==== Metka1: код подрограммы return Metka2: код подрограммы return Metka3: код подрограммы return ..... Metka255: код подрограммы return End function ---- или типа этого (по адресу метки) ----- Public Function kod_ObrabotkaKoda(Kod0_255&)as long Dim i& Static masAdr$(255),F& if F=0 then F=1 For i=0 to 255 'естественно, что функции adress() не существует 'а VarPtr() здесь "выходной" masAdr(i)=adress("Metka"+Ttrim$(Str$(i)))'получить адрес метки next i endif GoSub к метке по адресу в masAdr(Kod0_255) ' exit Function '==== Metka0: код подрограммы return Metka1: код подрограммы return Metka2: код подрограммы return Metka3: код подрограммы return ...................... Metka255: код подрограммы return End function Может кто из профессионалов подскажет, как решить эту проблемму. P.S. А может использовать отдельные подпрограммы - для них можно получить адрес... Думаю, интересно будет не мне одному... Автор вопроса: Иван Ответ ожидается по этому адресу Как в Visual Basic .Net получить e-mail и список писем с pop3 сервера? Автор вопроса: Владимир Ответ ожидается по этому адресу Как определить размер любой папки и диска? Автор вопроса: Владимир Ответ ожидается по этому адресу Как разрешить использование .mdb Файла из программы VB и запретить доступ в него другими способами? Автор вопроса: Мария Ответ ожидается по этому адресу Требуется вставить большого размера карту города (больше чем экран) в image который на весь экран, чтобы появлялись скролы для прокручивания карты влево-вправо и вверх-вниз. Какой контрол взять для этого, скажите пожалуйста! Есть контролы , в которых или только вверх-вниз можно прокручивать карту или влево-вправо! Ответы: Вопрос: Как в VBA создать DLL? Ответ: Автор ответа: Sergey VBA - язык, встроенный в MSOffice (Word, Excel) для написания макросов. О каких DLL идет речь? Вопрос: Как запретить пользователю изменять размеры стандартной MDI формы (640*480) и разворачивать ее на весь экран? Изменять размеры после "ресайза" не предлагать. Ответ: Автор ответа: Sergey Странный вопрос - есть же специальное свойство BorderStyle. Поставь его в 'Fixed Dialog'. Ответ: Автор ответа: Максим Private Sub MDIForm_Resize() If Me.Width > 640 * 15 Then Me.Enabled = False Me.Width = 640 * 15 Me.Enabled = True End If If Me.Height > 480 * 15 Then Me.Enabled = False Me.Height = 480 * 15 Me.Enabled = True End If End Sub Вроде не моргает... Вопрос: А как программно сделать моё окно активным? Me.SetFocus - не помогает... Пробовал АПИ GetFocus, SetFocus, SetActiveWindow - тоже самое... Может кто подскажет? Ответ: Автор ответа: Sergey Попробуй WinAPI фунцкию SetForegroundWindow. А Me.SetFocus - активирует окно в рамках текущего приложения. Вопрос: Как мне сделать отмену изменений в textbox`e? Ответ: Автор ответа: Sergey Достаточно легко. Просто послать ему определенное сообщение: Private Const WM_UNDO = &H304 SendMessage Text1.Hwnd,WM_UNDO,0,0 Ответ: Автор ответа: Сан Саныч Послать ему WM_UNDO: SendMessage Text1.hwnd, WM_UNDO, 0, 0 Ответ: Автор ответа: Vladimir [PRC] Если только для последнего изменения, то все просто: Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Const WM_UNDO = &H304 И для отмены вызываешь: SendMessage Text1.hwnd, WM_UNDO, 0, 0 Вопрос: Как пользоваться api-шной функцикй waveoutgetvolume? Ответ: Автор ответа: Роман 'Пример от Danjel Nyberg 'API-Guide 3.7 'Нужен текстбокс и две кнопки Private Declare Function waveOutSetVolume Lib "Winmm" (ByVal wDeviceID As Integer, ByVal dwVolume As Long) As Integer Private Declare Function waveOutGetVolume Lib "Winmm" (ByVal wDeviceID As Integer, dwVolume As Long) As Integer Private Sub Command1_Click() Dim a, i As Long Dim tmp As String a = waveOutGetVolume(0, i) tmp = "&h" & Right(Hex$(i), 4) Text1 = CLng(tmp) End Sub Private Sub Command2_Click() Dim a, i As Long Dim tmp, vol As String vol = Text1 tmp = Right((Hex$(vol + 65536)), 4) vol = CLng("&H" & tmp & tmp) a = waveOutSetVolume(0, vol) End Sub Вопрос: Как программно создать в реестре параметр DROWD? Ответ: Автор ответа: Роман Пример мне когда-то прислали. Он вообще-то про автозагрузку, но если разобраться... Чтобы добавить программу в автозагрузку, необходимо создать в разделе реестра 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 Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
||
Выпуск подготовили: |
Сурменок Павел |