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


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

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

Каким браузером Вы пользуетесь?
IE 4.x
IE 5
IE 5.5
IE 6
Netscape 4.x
Netscape 6
Opera
Другой


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

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

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

   Вот новый девятый номер рассылки. Присылайте информацию. Без Вашей помощи рассылка долго не протянет.


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




О группе СообЧаVB

      Группа VB. Заходите в гости. Здесь вы приобретете практические навыки по программированию на Visual Basic. Как вы этого сможете достигнуть? Путем написания собственной серьезной программы. Чем обычно занимается рядовой чайник-программист? Ну пишет там всякие приколы на VB... Ну ма-а-ленькую полезную программку наваяет. А как получить навыки в создании серьезных программ? Правильно, путем создания серьезных программ. ;) Но в одиночку вам с этим не справиться. Вот для этого в проекте СообЧа существует группа программистов-чайников, которые занимаются разработкой серьезного софта на VB. Суть состоит в том, что вам совсем необязательно знать все в Visual Basicе. Вам достаточно быть рядовым чайником и немного знать операторы VB. Остальному научимся вместе. На данный момент в группе разрабатывается почтовая программа под рабочим названием "Сообчайлер". Она будет уметь все, что умеет популярная программа The Bat и даже намного больше. Есть сборник оригинальных идей, выдвинутых членами нашей группы, которые мы постараемся реализовать все вместе. Проект разбивается на отдельные простые задачи. Такие как: проверка орфографии, форма для написания нового письма, главное окно... и т.п. Каждую часть делает отдельный человек. Затем он высылает сделанный модуль в группу и остальные просто присоединяют его к базовому проекту. Вам совсем не обязательно четко представлять как это сделать. Достаточно просто начать и столкнуться с какой-нибудь проблемой. Пусть это будет даже проблема типа "А как добавить новый модуль к проекту?". Все. Наткнулись... ;) Дальше действуем по одной схеме - пишем письмо с описанием проблемы в группу и мы все вместе разбираемся в проблеме. Таким образом все остальные получат ЗНАНИЯ и некоторые навыки в решении создавшихся проблем. Не забывайте - все мы чайники. Не стоит бояться задать вопрос. Задавайте - а мы вместе попытаемся найти ответ.

Подписаться в группу (пустое письмо)



наверх

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

  • 24 сентября 2001 года - Обновление в разделе Хитрости. Добавлено 8 новых хитростей.
  • 21 сентября 2001 года - Пополнение в разделе Примеры пополнение. Добавлены два примера Аркадия Оловянникова.
    Небольшие изменения в разделах FAQ и Библиотека кодов
  • 11 сентября 2001 года - В раздел Примеры добавлен пример создания Floating Bar - плавающей формы.
    Добавлен раздел Архив рассылки
    Количество подписчиков рассылки перевалило за 2000!

    наверх


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

       17 сентября 2001 г. Раздел Программы пополнился новой версией программы Михаила Эскина для регистрации OCX и DLL.    15 сентября 2001 г. В разделе Советы обновление, кроме того добавлены несколько новых примеров в Примеры, а также интересный OCX для работы со Scin-ами в разделе ActiveX.

    наверх


    По теме UpFolder

    Прислал
    Иван Р.

       Это моё видение функции UpFolder - снижено
    количество операторов для обращений к строкам,
    сохранены все свойства от оригинала (неприкосновен
    ность входной переменной).
     
     
    Public Function UpFolder(Folder As String) as String
       Dim nn As Long
       nn=Len(Folder)
       
       If Right$(Folder, 1) = "\" Then nn=(nn-1)
       
       For nn = nn To 1 Step -1
           If Mid(Folder, nn, 1) = "\" Then Exit For
       Next nn
     
       UpFolder = Left(Folder, nn)
    End Function


    наверх


    Создание линии, подчёркивающей меню

       Если ваша форма содержит меню, введите в событие Form_Load этот код и под
    меню появится маленькая полоска, подчёркивающая меню:

    AutoRedraw = True
    ScaleMode = 3
    Cls
    Line (0, 0)-Step(ScaleWidth, 0), QBColor(8)
    Line (0, 1)-Step(ScaleWidth, 0), QBColor(15)
    AutoRedraw = False


    наверх


    Как минимизировть все открытые окна, или восстановить их обратно

       Поставьте на форму две кнопки и этот код:

    Private Const WM_COMMAND = &H111
    Private Const MIN_ALL = 419
    Private Const MIN_ALL_UNDO = 416

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

    Private Sub Command1_Click()
          Dim lRetVal As Long
          lRetVal = FindWindow("Shell_TrayWnd", vbNullString)
          lRetVal = PostMessage(lRetVal, WM_COMMAND, MIN_ALL, 0&)
    End Sub

    Private Sub Command2_Click()
          Dim lRetVal As Long
          lRetVal = FindWindow("Shell_TrayWnd", vbNullString)
          lRetVal = PostMessage(lRetVal, WM_COMMAND, MIN_ALL_UNDO, 0&)
    End Sub

    наверх


    Как определить HOST и IP-адрес компьютера

       Подготовте проект, добавив в него форму.
    На форму поместите:
    - Кнопку с именем cmdGetHost
    - 2 текстовых поля с именами txtHostName и txtIpAddr
    Добавте в форму:

    ----

    Option Explicit

    Private Const MAX_WSADescription = 256
    Private Const MAX_WSASYSStatus = 128
    Private Const ERROR_SUCCESS As Long = 0
    Private Const WS_VERSION_REQD As Long = &H101
    Private Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
    Private Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
    Private Const MIN_SOCKETS_REQD As Long = 1
    Private Const SOCKET_ERROR As Long = -1

    Private Type HOSTENT
    hName As Long
    hAliases As Long
    hAddrType As Integer
    hLen As Integer
    hAddrList As Long
    End Type

    Private Type WSADATA
    wVersion As Integer
    wHighVersion As Integer
    szDescription(0 To MAX_WSADescription) As Byte
    szSystemStatus(0 To MAX_WSASYSStatus) As Byte
    wMaxSockets As Integer
    wMaxUDPDG As Integer
    dwVendorInfo As Long
    End Type

    Private Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long

    Private Declare Function WSAStartup Lib "WSOCK32.DLL" _
    (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long

    Private Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long

    Private Declare Function gethostname Lib "WSOCK32.DLL" _
    (ByVal szHost As String, ByVal dwHostLen As Long) As Long

    Private Declare Function gethostbyname Lib "WSOCK32.DLL" _
    (ByVal szHost As String) As Long

    Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
    (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)

    Public Function GetIPAddress() As String

    Dim sHostName As String * 256
    Dim lpHost As Long
    Dim HOST As HOSTENT
    Dim dwIPAddr As Long
    Dim tmpIPAddr() As Byte
    Dim i As Integer
    Dim sIPAddr As String

    If Not SocketsInitialize() Then
    GetIPAddress = ""
    Exit Function
    End If

    If gethostname(sHostName, 256) = SOCKET_ERROR Then
    GetIPAddress = ""
    MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & _
    " has occurred. Unable to successfully get Host Name."
    SocketsCleanup
    Exit Function
    End If

    sHostName = Trim$(sHostName)
    lpHost = gethostbyname(sHostName)

    If lpHost = 0 Then
    GetIPAddress = ""
    MsgBox "Windows Sockets are not responding. " & _
    "Unable to successfully get Host Name."
    SocketsCleanup
    Exit Function
    End If

    CopyMemory HOST, lpHost, Len(HOST)
    CopyMemory dwIPAddr, HOST.hAddrList, 4

    ReDim tmpIPAddr(1 To HOST.hLen)
    CopyMemory tmpIPAddr(1), dwIPAddr, HOST.hLen

    For i = 1 To HOST.hLen
    sIPAddr = sIPAddr & tmpIPAddr(i) & "."
    Next

    GetIPAddress = Mid$(sIPAddr, 1, Len(sIPAddr) - 1)

    SocketsCleanup

    End Function

    Public Function GetIPHostName() As String

    Dim sHostName As String * 256

    If Not SocketsInitialize() Then
    GetIPHostName = ""
    Exit Function
    End If

    If gethostname(sHostName, 256) = SOCKET_ERROR Then
    GetIPHostName = ""
    MsgBox "Windows Sockets error " & Str$(WSAGetLastError()) & _
    " has occurred. Unable to successfully get Host Name."
    SocketsCleanup
    Exit Function
    End If

    GetIPHostName = Left$(sHostName, InStr(sHostName, Chr(0)) - 1)
    SocketsCleanup

    End Function

    Private Function HiByte(ByVal wParam As Integer)
    HiByte = wParam \ &H1 And &HFF&
    End Function

    Private Function LoByte(ByVal wParam As Integer)
    LoByte = wParam And &HFF&
    End Function

    Private Sub SocketsCleanup()
    If WSACleanup() <> ERROR_SUCCESS Then
    MsgBox "Socket error occurred in Cleanup."
    End If
    End Sub

    Private Function SocketsInitialize() As Boolean

    Dim WSAD As WSADATA
    Dim sLoByte As String
    Dim sHiByte As String

    If WSAStartup(WS_VERSION_REQD, WSAD) <> ERROR_SUCCESS Then
    MsgBox "The 32-bit Windows Socket is not responding."
    SocketsInitialize = False
    Exit Function
    End If

    If WSAD.wMaxSockets < MIN_SOCKETS_REQD Then
    MsgBox "This application requires a minimum of " & _
    CStr(MIN_SOCKETS_REQD) & " supported sockets."

    SocketsInitialize = False
    Exit Function
    End If

    If LoByte(WSAD.wVersion) < WS_VERSION_MAJOR Or _
    (LoByte(WSAD.wVersion) = WS_VERSION_MAJOR And _
    HiByte(WSAD.wVersion) < WS_VERSION_MINOR) Then

    sHiByte = CStr(HiByte(WSAD.wVersion))
    sLoByte = CStr(LoByte(WSAD.wVersion))

    MsgBox "Sockets version " & sLoByte & "." & sHiByte & _
    " is not supported by 32-bit Windows Sockets."

    SocketsInitialize = False
    Exit Function

    End If

    SocketsInitialize = True

    End Function


    ' Использование

    Private Sub cmdGetHost_Click()

    txtHostName = GetIPHostName()
    txtIpAddr = GetIPAddress()

    End Sub

    наверх

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

    BalloonMessage for MS Agent

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



    наверх


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

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

    Вопросы:


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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




    Ответы:


    Вопрос:

          Можно ли в ACCESS2000 сделать так, чтобы раяличные яаписи (строки)в форме отображались раяным цветом,например,для выделения красным просроченных платежей. Пробовала помечать bmp-ияображением, но это так долго_груяится. Записей много.

    Ответ:

    Автор ответа Руленков Александр

    Да можно. Это делается при помощи условного форматирования. Открывай в меню формат >условное форматирование. Для поля в ленточной форме можно задать до 3 условий и соответсвенно разные цвета, начертание текста ,а также доступность или нет поля при соответсвия разным значениям. Это можно делать и в режиме конструктора формы и программно через семейство FormatConditions


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

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

    наверх

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

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

    наверх



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

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