Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 11.


VB Студия VB Line
Голосование:

Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты.

С какой периодичностью Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."?
Каждый день
2 раза в неделю
Раз в неделю
Раз в две недели
Раз в месяц
Реже


Результаты голосования
Рассылки Subscribe.Ru
Новости сайта VBline и советы программистам
Мир программирования на Visual BASIC 5.0 и HTML.

Доска почёта:

Sergey Y. Tkachev
Sergey Sapozhnikov
Sobic
Несколько слов от автора:

   Этот выпуск вышел вовремя.
Читайте!


Содержание выпуска




Новости сайта VB Студия

  • 10 октября 2001 года - Добавлены хитрости.
    Вышел десятый юбилейный выпуск рассылки. Все выпуски рассылки можно посмотреть здесь
    Сайт полностью избавлен от графических баннеров. Остался только блок из трёх текстовых ссылок. Грузиться будет быстрее!
    Добавлена одна замечательная программа в раздел Утилиты. Это русскоязычная программа русского же разработчика для создания файлов справки. Встраивается в Microsoft Word. Работать с неё предельно легко! Обязательно посмотрите. Размер около двух мегобайт.
    Старые новости ущли в архив.

    наверх


    Новости сайта VB Line

    08 октября 2001 г. Новые поступления на сайт! В Internet появился новый сайт по VB, он называется Использование VB, сходите, посмотрите, сайт только начал работу и информации там немного, но поддержать автора стоит. В Примерах ну очень полезный и забавный пример на тему анимации с использованием BitBlt, рекомендую всем посмотреть (смешной мужичек работает отбойным молотком!), там же новый пример на тему изменения атрибутов файла. Кто-нибудь знает как считать данные из BIOS? Внимание! "смертельный номер" пример читает из BIOS данные. В то же разделе интересный пример OCX, который эмулирует кнопки в стиле Pascal, и напоследок, пример реализации неограниченного Undo-Redo в текстовом редакторе.

    наверх


    Определение IP адреса и хоста

    Прислал
    Sergey Y. Tkachev

       В последнем выпуске Вашей рассылки прочитал очень интересный пример по определению хоста и IP.
       Сделано все до ужаса красиво и правильно. Но для начинающего программиста достаточно сложно, тем более, что реализация связана с применением API. В данном случае, как говорится в рекламе, "есть выход проще". Но не Рондо, а Microsoft Winsock Control

       Есть у него два прекрасных свойства: LocalHostName и LocalIP. Ниже привожу маленький пример, как их можно использовать:

       Поместите на форму Winsock Control и CommandButton, а потом добавьте следующий код

    Private Sub Command1_Click()
    MsgBox "Local Host Name: " & Winsock1.LocalHostName & vbCrLf & "Local IP: "
    & Winsock1.LocalIP
    End Sub

       Запустите проект и нажмите на кнопочку.
       Вот и всё

    наверх


    Как узнать расположение панели задач?

    Declare Function waveOutGetNumDevs Lib "winmm.dll" () As Long

    Private Sub Check_Click()
    Dim rtn As Integer 'declare the needed variables
    rtn = waveOutGetNumDevs() 'check for a sound card
    If rtn = 1 Then 'Когда больше, чем 1- карта работает :-)
        MsgBox "Your system supports a sound card."
    Else 'А иначе карты нету :-(
        MsgBox "Your system cannot play Sound Files."
    End If
    End Sub

    наверх


    Пауза между двумя кусками кода

    Автор:
    Алексей Вишневский

    Как лучше всего переждать паузу между двумя кусками кода. При использовании Sleep отбирается всё управление у процесса. В течение паузы не будет ни каких реакций программы на кнопочки, меню и т.п.

    Function Delay(Pause as single)
    dim Start as Single
    start = Timer
    Do While Timer start + pause
    DoEvents
    Loop
    End Function
    ' Разрешающая способность зависит от версии Windows
    ' В 9х - 55 мсек
    ' В NT - 10 мсек
    'Вызов
    Delay 1 'задержка на секунду
    'Можно и так
    Delay 0.3 'задержка на 300 мсек

    наверх


    Доска объявлений

       Объявляется конкурс на лучщий баннер для сайта VB Студия. Приз за лучший баннер - 5000 баннеров баннерообменной сети TLE. Вопросы и предложения по этому адресу

       Требуется человек, знающий HTML для работы с сайтом группы СооБчаVB. Вопросы и предложения по этому адресу

    наверх



    Мои программы

    BalloonMessage for MS Agent

       BalloonMessage for Microsoft Agent реализует диалог программы с пользователем, используя при этом технологию Microsoft Agent. OCX реализует три типа диалоговых окон: InputBox, MsgBox и MsgLabels.



    наверх


    Вопрос/Ответ

    Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.

    Вопросы:


    Автор вопроса:
    Артем

    Ответ ожидается по этому адресу

       Надо преобразовать прогу с VBDOS в VB6. Проблема в том что там идет непрерывный вывод диаграммы псевдографикой со скроллингом экрана, а метод print для формы уводит вывод за ее предел. Как сделать аналог досовского print (вывод со скроллингом)?


    Автор вопроса: Владимир

    Ответ ожидается по этому адресу

       Нужна функция округления чисел.


    Автор вопроса: Виталий

    Ответ ожидается по этому адресу

       Знаю что можно, но как? Суть в следующем: есть программа написанная на FoxPro2.6 Знаю, что в VBA можно испольяовать коды написанные в FoxProподключив библиотеку. Какую? Не янаю.
    Кто вкурсе, подскажите


    Автор вопроса: Pavel Dobrokhotov

    Ответ ожидается по этому адресу

       Я делаю прогу, которая работает с MTS (Microsoft Transaction Server)
    У меня NT4.0 + Service Pack 6.a + SQL2000
    Когда я устанавливал Option pack 4.0 (куда входит IIS и MTS)что- то некорректно установилось и MTS (mtxas.dll) не работет корректно.
    Кто-то сталкивался с подобным?
    Я думаю, что Option pack 4.0 надо устанавливать на версию не позже Service Pack 4.0. Я прав?



    Автор вопроса: Кононенко Роман

    Ответ ожидается по этому адресу

       Подскажите плз, как програмно поменять ориентацию бумаги в принтере по умолчанию, а то у мена DataReport не хочет отображать отчёты в ориентации Ландшафт?



    Автор вопроса: Владимир

    Ответ ожидается по этому адресу

       Кто мне поможет программно отключить нажатие клавиши Start на клавиатуре или хотя бы скажет ее код.


    Автор вопроса: Дмитрий

    Ответ ожидается по этому адресу

       При выполнении фрагмента программы, который есть в любом учебнике, а также входит в справку Offica выскакивает ошибка "Ошибка компиляции: Недопустимая внешняя процедура."
    Фрагмент программ:
    Dim A As Variant
    A = Array(10, 20, 30)
    B = A(2)
    Подскажите в чем причина данной ошибки.



    Автор вопроса: Жариков Дмитрий

    Ответ ожидается по этому адресу

       Как получить список IP адресов или имен компьютеров, находящихся в локальной сети?


    Автор вопроса: YURI

    Ответ ожидается по этому адресу

       Как просто реализовать грид подобно тому который в VB студии в пропертях с кнопками, развертывающимеся строками и тд, а главное чтобы все это хозяйство нормально отрабатывало скролбар?


    Автор вопроса: Карпова Елена

    Ответ ожидается по этому адресу

       Не могу включить CapsLock из программы (VB6):
    SendKeys "{CAPSLOCK}", True
    хотя SendKeys "%{F4}", True - отрабатывает нормально.
    Не может это быть из-за использования программы "Опечатка", меняющей раскладку клавиатуры? Но я ее выключала, а строка не отрабатывала.


    Автор вопроса: Чемерис В.Д.

    Ответ ожидается по этому адресу

       Как сгруппировать данные в DstsReport (например выводить список товаров, сгруппированный по видам и над каждой группой выводить название вида товара)


    Автор вопроса: Vasiliy

    Ответ ожидается по этому адресу

          Люди!!! Есть предложение создать ocx контрол для просмотра массивов от одномерного 1*n до матрици n*m на подобии msflexgrid контрола (с заголовками и всякими опциями) тока он будет изначально отображать лишь столько строк(s) на экране ,сколько входит в рабочую область , а затем при прокрутке будет выбираться из данного массива по s записей и отображаться с первой строки в контроле, а строки в контроле меняются тока при изменении размеров контрола . Это будет занимать гораздо меньше времени , чем копирование всего массива в мсфлексгрид . Или достать исходнини мсфлексгрида и чуть-чуть его переделать (тока где их достать). Я начал делать такой контрол, но ничего не получилось из этого хорошего



    Автор вопроса: Vasiliy

    Ответ ожидается по этому адресу

       1) Как быстро упорядочить(отсортировать) массив(Long) данных?
    2) Как быстро удалить несколько(n) элементов этого массива?


    Автор вопроса: Сергей

    Ответ ожидается по этому адресу

       Как сделать на VB элемент управления ActiveX типа TreeView в такой иерархической системе, которая используется в Win98. Если можно покажите код.


    Автор вопроса: Сергей

    Ответ ожидается по этому адресу

       Прошу помочь в написании кода для работы с LPT портом, необходимо: переслать байт в порт, управлять линией STROBE.


    Автор вопроса: Vasiliy

    Ответ ожидается по этому адресу

       Вот еще один вопросик: как сохранять иконку из picture на диск через API(по типу SavePicture)?


    Автор вопроса: Богдан

    Ответ ожидается по этому адресу

       Как внедрить Word2000 на форму Access2000? Вместо поля Edit я хотел бы поместить Ворд для редактирования текста на форму Access'а.


    Автор вопроса: Артём

    Ответ ожидается по этому адресу

       Можно ли прочитать указанный мной сектор диска, если да то как?


    Автор вопроса: Сергей

    Ответ ожидается по этому адресу

       Как_ сделать так, чтобы .wav файл играл как фоновая музыка и была слышен клик мыши_ на фоне музыки.


    Автор вопроса: Алексей

    Ответ ожидается по этому адресу

       Как из-под Basic for MS Excel выдать через динамик звук определенной частоты и длительности ( например, нота ЛЯ: 440 Гц, 1 секунда ) ? А как это сделать через колонки ( наушники ) ?


    Автор вопроса: Sobic

    Ответ ожидается по этому адресу

       Нужно вывести картинку запиханную в массив pic(width,height) as byte на экран, используя палитру Pal(255,2). Причем с максимальной скоростью. Пробовал преобразовывать в RGB картинку и выводить с помощью SetDIBitsToDevice, но получается медленно. Преобразования тормозят вывод. Может кто поможет?


    Автор вопроса: Vasiliy

    Ответ ожидается по этому адресу

       Кто знает как сделать графическое сопровождение музыкального файла как в Win. Media Player.


    Автор вопроса: Тимур

    Ответ ожидается по этому адресу

       Вояможно ли с Помощью VB соядать программу доявона по ppp-протоколу? Хотелось видеть исходный код, если это вояможно.




    Ответы:


    Вопрос:

       Надо нажимая на кнопку, запускать привязанный как то к ней вордовский документ в ворде.

    Ответ:

    Автор ответа: Sergey Y. Tkachev

    Dim FilePathName as String
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    Const SW_SHOWNORMAL = 1

    FilePathName = "C:\MY_FOLDER\DOCUMENT1.DOC"
    ShellExecute Me.hwnd, vbNullString, FilePathName, vbNullString, "C:\", SW_SHOWNORMAL


    Вопрос:

       Как создавать WinHelp файлы. И как сделать справку "Что это?"

    Ответ:

    Автор ответа: Sergey Y. Tkachev

    Есть такая мелко-мягковская приблуда, называется Microsoft Help Workshop. Она идет в комплекте с Visual Studio 5 (прим.редактора: и 6 тоже). Создаешь файлики с текстом в формате rtf, при этом все линки и заголовки помечаешь особым образом, который достаточно хорошо описан в хелпах, а затем компилишь всё это. Пробовал - работает. Чтобы сделать справку "Что это?" для контрола, нужно прописать ему свойство HelpContextID, в котором указать идентификатор раздела в справочной системе.
    Тот компилятор, о котором я говорил выше - нормальное виндовое окошечное приложение. С Visual Studio 4 поставлялся немного другой, работающий в командной строке. Я долго пытался с ним научится, но терпение мое скоро лопнуло.
    Сейчас есть нечто более модно-современное - Microsoft HTML Help Workshop. Из названия понятно, что тут rtf заменили на HTML, а сама справка будет иметь вид, очень приближенный к MSDN, а следовательно, требует Internet Explorer. Однако работать с ним ещё проще. Разобраться модно максимум за полдня. Да и скачать его с Майкрософтовского сайта можно в любой момет (по-моему, около 3 МБ) Поставляется также с Service Pack 3 и выше.



    Вопрос:

       Есть БД Access. Ия таблицы Tabl необходимо вытащить внешним модулем на VB5 проиявольную яапись с некоторым номером, для дальнейшей обработки. Помогите, кто янает.

    Ответ:

    Автор ответа: Sergey Y. Tkachev

    Попробуй открывать рекордсет в ВБ, а потом воспользоваться свойством AbsolutePosition (речь идет про ADODB.Recordset). Можешь перемещаться на запись с конкретным номером, ну а сам "конкрутный номер" можешь генерировать случайным образом.


    Вопрос:

       Как можно определить номер страницы в Верде (проблема яаключается в том, что иногда нумерация начинается с нуля, например, а номер страницы в верхний/нижний колонтитул не вставлен - обращаться некуда)?

    Ответ:

    Автор ответа: Kirill

    В Word VBA есть такое propperty как Information. Применяется к объекту Selection или Range с нужным параметром, например:

    Определение номера страницы, на которой находится курсор (или оканчивается выделение текста), если нумерация страниц в документе не с первого номера:

    Dim pNum As Integer
    ...
    pNum = Selection.Information(wdActiveEndAdjustedPageNumber)

    или вот определение порядкового номера страницы с начала документа для какого-то отрывка текста:

    Dim myRange As Range
    Dim pNum As Integer
    ...
    Set myRange = ...
    pNum = myRange.Information(wdActiveEndPageNumber)

    А вообще лучше посмотреть help Word VBA, там все параметры Information дадены и расписаны.


    Вопрос:

       Внедряю .xls в Access (использую OLE). Сразу открывается этот файл. Каким образом заставить минимизироваться приложение Excel и как мне закрыть файл .xls или Excel. Перепробовала все команды из help'а, но они игнорируются.

    Ответ:

    Автор ответа: Анатолий Лящук

      Set appExcel = CreateObject("Excel.Application")
      appExcel.Visible = False


    Вопрос:

       Внедряю .xls в Access (использую OLE). Сразу открывается этот файл. Каким образом заставить минимизироваться приложение Excel и как мне закрыть файл .xls или Excel. Перепробовала все команды из help'а, но они игнорируются.

    Ответ:

    Автор ответа: Kirill

    Честно сказать, с Access'ом я не работал, но лично я сделал бы примерно так: надо создать переменную типа Excel.Application, схватить в нее открывшийся Excel (Set xlApp = GetObject("Excel.Application")), а потом уже с Excel'ем можно делать что хочешь: можно окно спрятать (xlApp.Visible = False , главное потом про него не забыть, а то окна не видно, а приложение висит, место в памяти жрет), можно минимизировать (наизусть не помню :)), можно закрыть (xlApp.Quit).
    Опять же главное потом освободить переменную (Set xlApp = Nothing). Кстати можно для этих целей использовать переменную типа Object, а не Excel.Application, если есть такая переменная, которую можно на некоторое время отвлечь (конечно в том случае, когда не требуется держать Excel открытым от начала до конца процедуры - в этом случае лучше пользоваться конкретным типом приложения чтоб использовать т.н. "раннее связывание": вроде как считается, что при этом программа, или по крайней мере инициализация переменной будет выполнятся быстрее).



    Можете заполнить эту форму, либо отослать вопрос СЮДА

    Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


  • Выпуск подготовили:

    Сурменок Павел и Шатрыкин Иван