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


VBNet VBMania
Голосование:

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

Нет тем.

Рассылки Subscribe.Ru
Мир программирования на Visual BASIC 5.0 и HTML.


Рассылки Subscribe.Ru
Старые игры

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

Sergey Y. Tkachev
Кононенко Роман
Kirill
Sergey Sapozhnikov
Sobic

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • VB на русском
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • Snoozex Design
  • IgorykSoft
  • Господа!!! читайте MSDN!!!

    Несколько слов от автора:

       Скоро праздники!!!
    Читайте!


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




    Книги

    ADO и Visual Basic. Руководство разработчика

    В книге описано использование технологии доступа к данным (ADO) с помощью основного инструмента разработки приложений Microsoft - Visual Basic 6.0. Из книги вы узнаете, как можно исследовать источники данных при помощи окна Data View, как создавать формы для ввода и запроса данных, используя связанные элементы управления, и подсоединяться к источникам данных со сложной иерархической структурой средствами Data Environment. Далее вы изучите, как можно, используя Data Report, представлять информацию в форме, подходящей для печати, или как следует исполнять некоторые, наиболее широко распространенные задачи, связанные с обработкой данных, используя ADO внутри кода Visual Basic. В последних главах книги рассмотрены дополнительные операции, используемые в коде, в том числе формирование данных, для создания иерархических наборов записей, применение ADO в сети Internet и даже создание собственных источников данных. Чтобы более полно использовать средства ADO для извлечения информации из различных источников, в приложении к книге вы найдете справочник по языку SQL, в котором обсуждаются основы работы с оператором SQL SELECT.


    Автор: Гандерлой М.
    Издательсвто: Энтроп, Век
    Год издания: 2001
    Кол-во страниц: 336
    Стоимость: 177 р.
    Формат: 70х100/16
    Переплёт: мягкий

    Excel, VBA, Internet в экономике и финансах

    Книга является руководством по использованию Microsoft Excel, разработке офисных бизнес-приложений средствами VBA и конструированию Web-страниц на базе DHTML и VBScript. Рассматриваются приемы создания отчетной финансовой и экономической документации средствами MS Excel, способы анализа и обработки собранной информации для принятия на ее основе оптимального решения; даются ответы на вопросы, которые возникают у программиста при разработке автоматизированных и интегрированных систем с помощью VBA; описываются особенности конструирования пользовательских элементов управления ActiveX, а также написания Windows-сценариев. Большое внимание уделено принципам создания интерактивных Web-страниц, виртуальных каталогов и магазинов. Книга содержит уникальную коллекцию типичных примеров. Почти каждая глава заканчивается списком упражнений, способствующих закреплению материала


    Автор: Гарнаев А
    Издательсвто: BHV - Санкт - Петербург
    Год издания: 2001
    Кол-во страниц: 816
    Стоимость: 230 р.
    Формат: 70х100/16
    Переплёт: мягкий

    MCSD. Сертификационный экзамен 70-175. Разработка распределенных приложений на Visual Basic 6.0. Учебный курс (+ CD-ROM)

    Настоящий учебный курс рекомендован корпорацией Microsoft как официальное пособие для подготовки к экзамену 70-175 «Designing and Implementing Distributed Applications with Microsoft Visual Basic 6.0» по программе сертификации разработчиков программных решений на основе продуктов Microsoft (Microsoft Certified Solutions Developer, MCSD). Эта книга познакомит Вас с основными понятиями, концепциями и методами, необходимыми для разработок распределенных программных решений на базе Visual Basic 6.0.


    Автор: MCSD Training Kit
    Издательсвто: Русская Редакция
    Год издания: 2000
    Кол-во страниц: 400
    Стоимость: 272 р.
    Формат: 70х100/1670х100/16
    Переплёт: мягкий

    Microsoft Visual Basic 5.0

    В книге рассматривается новая пятая версия Microsoft Visual Basic - языка программирования, являющегося фактическим стандартом визуального проектирования приложений. Описываются общие черты Visual Basic, реализованные в нем концепции объектно-ориентированного программирования, среда разработки (IDE). Далее рассматривается объектно-ориентированная модель Visual Basic и доступные разработчику объектные компоненты. Подробно описываются технологии программирования на языке Visual Basic и SQL, отладка и оптимизация кода приложения, вопросы компиляции исполняемых модулей. В последующих главах освещаются практические вопросы построения приложений - работа с текстом и графикой, механизмы доступа и управления данными, работа с внешними базами данных и создание приложений клиент/сервер. Книга предназначена для широкого круга программистов, работающих в области обработки данных и информационных систем.


    Автор: Шмидт В
    Издательсвто: ABF
    Год издания: 1997
    Кол-во страниц: 688
    Стоимость: 85 р.
    Формат: 84x108/16
    Переплёт: мягкий

    Microsoft Visual Basic 6.0

    Нет описания


    Автор: Лабор В, Макарчук Д
    Издательсвто: нет данных
    Год издания: 2001
    Кол-во страниц: 160
    Стоимость: 60 р.
    Формат: 70х100/16
    Переплёт: мягкий

    Microsoft Visual Basic 6.0. Мастерская разработчика (+ CD-ROM)

    Книга состоит из 3 частей (34 главы) и предметного указателя. Написанная живо и доходчиво, она позволит освоить множество полезных приемов программирования, в том числе объектно-ориентированного, и научит, как создавать 32-разрядные приложения для Windows 95/98 и Windows NT — от экранных заставок до программ, ориентированных на Интернет. Кроме того, Вы узнаете, как расширить возможности языка за счет функций Win32 API и воспользоваться преимуществами технологии ActiveX.


    Автор: Джон Кларк Крейг, Джефф Уэбб
    Издательсвто: Русская Редакция
    Год издания: 2001
    Кол-во страниц: 720
    Стоимость: 272 р.
    Формат: 70х100/16
    Переплёт: твёрдый

    VB Script и ActiveX

    Книга предназначена для разработчиков Web - приложений на языке VBScript, желающих повысить свой профессиональный уровень и стать экспертами в этой области. В ней подробно рассказывается о новых возможностях VBScript, включая использование именованных констант, функций, переменных и коллекций, приводится вся необходимая информация о технологии ActiveX, принципах взаимодействия VBScript и Visual Basic при создании приложений, работающих на сервере. Прочитав эту книгу, вы научитесь использовать звуковые эффекты, создавать анимированную графику, строить формы для ввода данных, узнаете, как с помощью VBScript создать в Web электронный магазин и отслеживать число посетителей и деланные ими покупки. Вы даже сумеете написать увлекательную мультимедийную игру для Web.


    Автор: Скотт Палмер
    Издательсвто: Питер
    Год издания: 1999
    Кол-во страниц: 368
    Стоимость: 94 р.
    Формат: 70х100/16
    Переплёт: мягкий

    VBA 2000. Самоучитель

    В книге содержится краткий курс по использованию языка и системы VBA для Word и Excel 2000. Книга предназначена для начинающих программировать в среде Windows 95/98 с использованием в качестве базовых таких объектов Word и Excel, как документы, рабочие книги, листы и так далее. Материала книги достаточно для создания как простых макросов, помогающих автоматизировать рутинную повторяющуюся работу над документами и электронными таблицами, так и для разработки достаточно сложных приложений, обрабатывающих данные в диалоговых окнах, обеспечивающих пользователя самыми современными интерфейсными средствами.


    Автор: Кузьменко В
    Издательсвто: Бином
    Год издания: 2000
    Кол-во страниц: 416
    Стоимость: 116 р.
    Формат: 70х100/16
    Переплёт: мягкий

    Visual Basic 6 Desktop. Экзамен 70-176

    Книги серии `Экзамен – экстерном` представляют собой удобные, сжатые, хорошо структурированные конспекты для подготовки к сдаче сертификационных экзаменов на звание Microsoft Certified Solution Developer. Книга `Visual Basic 6.0 Desktop. Экзамен 70-176` содержит только действительно необходимый материал, типовые вопросы с ответами и пример экзамена. Возможно, некоторые подходы, применяемые автором, покажутся вам не совсем привычными - не удивляйтесь: это не учебник по Visual Basic; организация материала в этой книге призвана максимально облегчить задачу экзаменуемого. Учтите, что в ряде случаев экзаменационные вопросы выходят за рамки тем, отраженных в документации по Visual Basic, а иной раз правильные ответы на них даже входят в противоречие с `официальной` информацией.


    Автор: Майкл Макдоналд
    Издательсвто: Питер
    Год издания: 2001
    Кол-во страниц: 608
    Стоимость: 123 р.
    Формат: 60x90/16
    Переплёт: мягкий

    Visual Basic 6. Руководство разработчика (+ CD-ROM)

    Эта книга, написанная известным специалистом и неутомимым пропагандистом Visual Basic, представляет собой прекрасный путеводитель по одному из наиболее популярных визуальных средств разработки Windows-приложений. Подробно освещаются такие ключевые темы программирования на Visual Basic, как проектирование и использование элементов ActiveX, программирование баз данных и разработка Web-приложений. Несомненный интерес представляют главы, посвященные работе с графикой. Большое количество тщательно продуманных примеров облегчает восприятие материала. Подбор материала и стиль изложения делают издание интересным и полезным для программистов разных уровней.


    Автор: Евангелос Петрусос
    Издательсвто: BHV, Ирина, SYBEX Inc
    Год издания: 2000
    Кол-во страниц: 1072
    Стоимость: 267 р.
    Формат: 70x100/32
    Переплёт: твёрдый


    Остальные книги о VB можно найти
    здесь.

    наверх


    Различный вид формы

    Данный пример добавляет почти по границе формы небольшую кайму, определяющую внешний вид формы.

    Такой вид, как если бы на форме присутствовал элемент Frame, CommandButton или нажатый CommandButton.

    Private Const BDR_SUNKENOUTER = &H2
    Private Const BDR_RAISEDINNER = &H4
    Private Const BF_BOTTOM = &H8
    Private Const BF_LEFT = &H1
    Private Const BF_RIGHT = &H4
    Private Const BF_TOP = &H2
    Private Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
    Private Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)

    Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
    End Type

    Private Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
    Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long

    Private Sub Form_Paint()
    Dim TRect As RECT
    Me.ScaleMode = vbPixels
    SetRect TRect, 10, 10, Me.ScaleWidth - 10, Me.ScaleHeight - 10
    'вы можете использовать одну из трех строчек ниже
    'DrawEdge Me.hdc, TRect, EDGE_ETCHED, BF_RECT
    DrawEdge Me.hdc, TRect, BDR_SUNKENOUTER, BF_RECT
    'DrawEdge Me.hdc, TRect, BDR_RAISEDINNER, BF_RECT
    End Sub

    наверх


    Где в реестре хранятся все интернет-соединения

    ключ HKEY_CURRENT_USER\RemoteAccess\Addresses

    наверх


    Получить IP адрес

    Как вы знаете (или не знаете), при вашем подключении к Интернету, вашему компьютеру назначается адрес, по которому вас можно идентифицировать в сети: что-то типа 201.194.10.12. Так вот этот пример и покажет вам ваш текущий адрес.

    '1 ВАРИАНТ
    'Расположите на форме компонент Winsock(Winsock1) через меню Project|Components - Microsoft Winsock Control 6.0

    Private Sub Form_Load()
    MsgBox Winsock1.LocalIP
    End Sub

    '2 ВАРИАНТ

    'Вставьте следующий код в событие формы
    Private Sub Form_Load()
    MsgBox "IP Host Name: " & GetIPHostName()
    MsgBox "IP Address: " & GetIPAddress()
    End Sub

    'Добавьте модуль в проект. Вставьте следующий код в модуль
    Public Const MAX_WSADescription = 256
    Public Const MAX_WSASYSStatus = 128
    Public Const ERROR_SUCCESS As Long = 0
    Public Const WS_VERSION_REQD As Long = &H101
    Public Const WS_VERSION_MAJOR As Long = WS_VERSION_REQD \ &H100 And &HFF&
    Public Const WS_VERSION_MINOR As Long = WS_VERSION_REQD And &HFF&
    Public Const MIN_SOCKETS_REQD As Long = 1
    Public Const SOCKET_ERROR As Long = -1
    Public Type HOSTENT
    hName As Long
    hAliases As Long
    hAddrType As Integer
    hLen As Integer
    hAddrList As Long
    End Type
    Public 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
    Public Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
    Public Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVersionRequired As Long, lpWSADATA As WSADATA) As Long
    Public Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
    Public Declare Function gethostname Lib "WSOCK32.DLL" (ByVal szHost As String, ByVal dwHostLen As Long) As Long
    Public Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal szHost As String) As Long
    Public 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
    Public Function HiByte(ByVal wParam As Integer)
    HiByte = wParam \ &H100 And &HFF&
    End Function
    Public Function LoByte(ByVal wParam As Integer)
    LoByte = wParam And &HFF&
    End Function
    Public Sub SocketsCleanup()
    If WSACleanup() <> ERROR_SUCCESS Then
    MsgBox "Socket error occurred in Cleanup."
    End If
    End Sub
    Public 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

    наверх


    Как программно отсоединиться от Интернета

    Добавьте на форму элемент CommandButton. При нажатии на кнопку происходит вызов функции HangUp, которая закрывает соединение с Интернетом.

    Const RAS_MAXENTRYNAME As Integer = 256
    Const RAS_MAXDEVICETYPE As Integer = 16
    Const RAS_MAXDEVICENAME As Integer = 128
    Const RAS_RASCONNSIZE As Integer = 412
    Const ERROR_SUCCESS = 0&
    Private Type RasEntryName
    dwSize As Long
    szEntryName(RAS_MAXENTRYNAME) As Byte
    End Type
    Private Type RasConn
    dwSize As Long
    hRasConn As Long
    szEntryName(RAS_MAXENTRYNAME) As Byte
    szDeviceType(RAS_MAXDEVICETYPE) As Byte
    szDeviceName(RAS_MAXDEVICENAME) As Byte
    End Type
    Private Declare Function RasEnumConnections Lib "rasapi32.dll" Alias "RasEnumConnectionsA" (lpRasConn As Any, lpcb As Long, lpcConnections As Long) As Long
    Private Declare Function RasHangUp Lib "rasapi32.dll" Alias "RasHangUpA" (ByVal hRasConn As Long) As Long
    Private gstrISPName As String
    Public ReturnCode As Long

    Public Sub HangUp()
    Dim i As Long
    Dim lpRasConn(255) As RasConn
    Dim lpcb As Long
    Dim lpcConnections As Long
    Dim hRasConn As Long
    lpRasConn(0).dwSize = RAS_RASCONNSIZE
    lpcb = RAS_MAXENTRYNAME * lpRasConn(0).dwSize
    lpcConnections = 0
    ReturnCode = RasEnumConnections(lpRasConn(0), lpcb, lpcConnections)
    If ReturnCode = ERROR_SUCCESS Then
    For i = 0 To lpcConnections - 1
    If Trim(ByteToString(lpRasConn(i).szEntryName)) = Trim(gstrISPName) Then
    hRasConn = lpRasConn(i).hRasConn
    ReturnCode = RasHangUp(ByVal hRasConn)
    End If
    Next i
    End If
    End Sub

    Public Function ByteToString(bytString() As Byte) As String
    Dim i As Integer
    ByteToString = ""
    i = 0
    While bytString(i) = 0&
    ByteToString = ByteToString & Chr(bytString(i))
    i = i + 1
    Wend
    End Function

    Private Sub Command1_Click()
    Call HangUp
    End Sub

    наверх


    Напечатать Web-страницу

    Требуется Интернет Эксплорер версии 4 и выше. Перед началом печати будет показан диалог печати.

    Добавьте элемент CommandButton.

    Private Const MAX_PATH = 255
    Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
    Public Function PrintWebPage(ByVal URL As String) As Boolean
    Dim sFile As String
    sFile = SystemDir & "\MSHTML.DLL"
    If Dir(sFile) = "" Then Exit Function
    On Error Resume Next
    Shell "rundll32.exe " & sFile & ",PrintHTML " & URL, vbNormalFocus
    PrintWebPage = Err.Number = 0
    End Function
    Private Function SystemDir() As String
    Dim sRet As String, lngRet As Long
    sRet = String$(MAX_PATH, 0)
    lngRet = GetSystemDirectory(sRet, MAX_PATH)
    SystemDir = Left(sRet, lngRet)
    End Function

    Private Sub Command1_Click()
    PrintWebPage "http://vbnet.ru"
    End Sub

    наверх


    Вызвать окно "Установка связи с Интернетом"

    Данный код вызывает окно "Установка связи" из "Удаленный доступ к сети". Естественно, вы должны знать имя текущего соединения с интернетом.

    Private Sub Form_Load()
    Result = Shell("rundll32.exe rnaui.DLL,RnaDial " & "connection_name", 1)
    End Sub

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


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

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

       Скажите пожалуйста, могу ли я через VB - узнать: дату и время создания файла COMMAND.COM, если да- то как?


    Автор вопроса: Вано

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

       Даны два двумерных массива. После ввода первого массива, должен отображаться другой, но с условием что строки и столбцы этого массива будут перевернуты, т.е. первый элемент массива один должен стать последним элементом второго массива. И так со всеми элементами.


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

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

       Какие функции VB(встроенные или API) можно использовать для работы с памятью?


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

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

       У кого имеется туторы и справки по VB и 3D MAX можете закидать мой почтовый ящик


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

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

       Пример:
    Private Sub cmdSave_KeyPress(KeyAscii As Integer)
        If ((KeyAscii = vbKeyReturn) Or (KeyAscii = vbKeyTab)) Then
           Saving
        End If
    End Sub
    Вопрос: почему-то такой код нормально реагирует на , но никак не реагирует на . Может, кто янает?


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

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

       Как программно перетащить ярлык файла в RichTextBox ? Обращаюсь к янатокам Visual Basic. Элементарная на первый вягляд яадача. Требуется программно сформировать в RichTextBox текст, содержащий таблицу в смысле MS Word.
    Делаю так.
    sFileRTF=App.Path & "\tmp.rtf"
    Set wrd = New Word.Application
    Set objDoc = New Word.Document
    With objDoc.ActiveWindow.Selection
    .TypeText rsI.Fields("titul")
    .TypeText rsI.Fields("adres")
    .TypeText ""
    ' и т.д.
    Set objTable = ActiveDocument.Tables.Add(Range:=Selection.Range, _
    NumRows:=1, NumColumns:=4)
    End With
    objDoc.SaveAs sFileRTF, FileFormat:=wdFormatRTF
    Me.RichTextBox1.LoadFile sFileRTF, rtfRTF

    А табличек на экране нету, только голый текст. Хотя, если открыть в MS Word файл tmp.rtf, то там все в порядке, таблички на месте.

    Теперь делаем такой фокус.
    Открываем Проводник. Хватаем "мышкой" ярлык файла "tmp.rtf" и тащим его на RichTextBox.
    Все садится прекрасно.
    Вопрос: как это перетаскивание сделать программно вместо LoadFile ?
    Скорее всего должна быть API-функция такая.
    Поиски методом тыка не увенчались успехом.
    Кто-нибудь сталкивался с этой яадачей ?


    Автор вопроса: Белоусов Артем

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

       Подскажите пожалуйста как в CommonDialog настроить фильтр на расширение tst.


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

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

       Подскажите пожалуйсто как в проекте вместо стандартной бейсиковской иконки поставить свою.


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

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

       Подскажите как в VBA прописать winsock !


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

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

       Как в Visual Basic открывается форма для выбора каталогов, можно ли при помощи Win_API?


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

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

       Подскажите, пожалуйста, как можно узнать:
    1) Объем заданного диска;
    2) Сколько места свободно;
    3) Сколько места занято.


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

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

       Народ, вы случаем не в курсе, нет ли в Excel-ном VB встроенной функции, для конвертания адреса ячйки из формата R1C1 (R26C27) в A1 (AA26)???


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

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

       Необходимо подключить БД Paradox, стандартными способами не могу подключить,говорит что БД не того формата.Может кто-то подскажет как это сделать.




    Ответы:


    Вопрос:

       У меня у формы BorderStyle=0, как мне программно поменять его на 1 или 2, если написать просто form1.borderstyle=1, то ничего не происходит.

    Ответ:

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

    Этот небольшой пример показывает как можно на лету менять структуру окна (внешний вид и не только).

    Создайте форму (Form1), поместите на неё пять кнопок (Command1, Command2, Command3, Command4, Command5) и данный код.

    Вся информация взята из книги "Win32 и Visual BASIC. Для профессионалов(+CD)". Автор Dan Appleman's. Большая благодарность автору!!! Цена книге соответствует.

    В коде есть только одна проблема. После использования функции SetWindowLong окно меняет свои свойства, но не перерисовывается. Для этого я использовал изменения размеров окна. Наверное можно использовать что-нибудь попроще с использованием SendMessage или как нибудь еще.

    Option Explicit
    Dim tmplong As Long
    Dim tmplong1 As Long

    ' Основные параметры окна
    Const WS_OVERLAPPED& = &H0& ' при создании - окно с рамкой и заголовком, в работе - ошибка защиты Windows
    Const WS_MAXIMIZEBOX& = &H10000 ' для окна - наличие кнопки минимизировать
    Const WS_TABSTOP& = &H10000 ' для других элементов - закрепление позиции табуляции
    Const WS_MINIMIZEBOX& = &H20000 ' для окна - наличие кнопки свернуть
    Const WS_GROUP& = &H20000 ' для остального - является началом группы элементов
    Const WS_THICKFRAME& = &H40000 ' для окна - размеры окна меняются за толстую рамку
    Const WS_SYSMENU& = &H80000 ' в левой части окна есть кнопка системного меню
    Const WS_HSCROLL& = &H100000 ' в окне есть горизонтальная полоса прокрутки
    Const WS_VSCROLL& = &H200000 ' в окне есть вертикальная полоса прокрутки
    Const WS_DLGFRAME& = &H400000 ' окно с двойной рамкой но нет заголовка
    Const WS_BORDER& = &H800000 ' окно с рамкой
    Const WS_CAPTION& = &HC00000 ' окно с рамкой и заголовком
    Const WS_MAXIMIZE& = &H1000000 ' окно развернуто
    Const WS_CLIPCHILDREN& = &H2000000 ' в окне нельзя рисовать поверх других элементов (аналог свойства ClipControls)
    Const WS_CLIPSIBLINGS& = &H4000000 ' запрещает дочернему окну рисовать поверх другого дочернего окна
    Const WS_DISABLED& = &H8000000 ' окно заблокировано (аналог Enable = False)
    Const WS_VISIBLE& = &H10000000 ' окно является видимым (аналог Visible = True)
    Const WS_MINIMIZE& = &H20000000 ' окно свернуто
    Const WS_CHILD& = &H40000000 ' окно является дочерним (надо установить после SetPatent)
    Const WS_CHILDWINDOW& = (WS_CHILD) '
    Const WS_POPUP& = &H80000000 ' окно является всплывающим
    Const WS_OVERLAPPEDWINDOW& = (WS_OVERLAPPED Or WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX)
    Const WS_POPUPWINDOW& = (WS_POPUP Or WS_BORDER Or WS_SYSMENU)
    Const WS_TILED& = WS_OVERLAPPED '
    Const WS_TILEDWINDOW& = WS_OVERLAPPEDWINDOW '

    ' Расширенные параметры окна
    Const WS_EX_LEFT& = &H0& ' значение по умолчанию
    Const WS_EX_LTRREADING& = &H0& ' значение по умолчанию
    Const WS_EX_RIGHTSCROLLBAR& = &H0& ' значение по умолчанию
    Const WS_EX_DLGMODALFRAME& = &H1& ' окно имеет двойную рамку
    Const WS_EX_NOPARENTNOTIFY& = &H4& ' Windows не будет уничтожать это окно
    Const WS_EX_TOPMOST& = &H8& ' окно находится поверх остальных у которых бит не установлен
    Const WS_EX_ACCEPTFILES& = &H10& ' окно принимает файлы при перетаскивании из диспетчера файлов (?)
    Const WS_EX_TRANSPARENT& = &H20& ' окно является прозрачным и не скрывает окна под собой
    Const WS_EX_MDICHILD& = &H40& ' окно имеет уменьшенный заголовок и не отображается в панели задач
    Const WS_EX_TOOLWINDOW& = &H80& ' окно представляет собой кнопку, содержащую растр вместо текста
    Const WS_EX_WINDOWEDGE& = &H100& ' окно имеет приподнятую рамку
    Const WS_EX_CLIENTEDGE& = &H200& ' окно имеет утопленную рамку
    Const WS_EX_CONTEXTHELP& = &H400& ' в заголовке есть кнопка с вопросом.
    Const WS_EX_RIGHT& = &H1000& ' если WS_EX_RTLREADING установлен текст выравнивается по правому краю
    Const WS_EX_RTLREADING& = &H2000& ' в иврите и арабском языке текст вывлдится справа налево
    Const WS_EX_LEFTSCROLLBAR& = &H4000& ' если WS_EX_RTLREADING установлен полоса прокрутки перемещается налево
    Const WS_EX_CONTROLPARENT& = &H10000 ' клавиша Tab вызывает переключение между дочерними окнами данного окна
    Const WS_EX_STATICEDGE& = &H20000 ' объемное оформление
    Const WS_EX_APPWINDOW& = &H40000 ' свернутое приложение помещается в панель задач

    ' Разновидность параметра
    Const GWL_WNDPROC& = (-4) ' адрес функции окна
    Const GWL_HINSTANCE& = (-6) ' манипулятор экземпляра, владеющего заданным окном
    Const GWL_HWNDPARENT& = (-8) ' манипулятор родителя для заданного окна (лучше только читать, для записи SetParent)
    Const GWL_ID& = (-12) ' идентификатор дочернего окна в диалоговой панели
    Const GWL_STYLE& = (-16) ' СТИЛЬ ОКНА
    Const GWL_EXSTYLE& = (-20) ' РАСШИРЕННЫЙ СТИЛЬ ОКНА
    Const GWL_USERDATA& = (-21) ' параметры определяются приложением (что то навроде Tag)

    ' функции для чтения и записи информации о структуре окна
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    'Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

    ' приведение окна к нормальному виду (можно его нормально закрыть)
    Private Sub Command1_Click()
    SetWindowLong Me.hwnd, -16, tmplong 'GetWindowLong(Me.hwnd, -16) Or WS_CAPTION& Or WS_THICKFRAME&
    Me.Height = Me.Height - 10
    Me.Height = Me.Height + 10
    End Sub

    ' кнопка убирает заголовок окна режим BorderStyle=2
    Private Sub Command2_Click()
    SetWindowLong Me.hwnd, -16, tmplong And (Not WS_CAPTION&)
    Me.Height = Me.Height - 10
    Me.Height = Me.Height + 10
    End Sub

    ' кнопка убирает толстую рамку. режим BorderStyle=1
    Private Sub Command3_Click()
    SetWindowLong Me.hwnd, -16, tmplong And (Not WS_THICKFRAME&)
    Me.Height = Me.Height - 10
    Me.Height = Me.Height + 10

    End Sub

    ' кнопка убирает толстую рамку. режим BorderStyle=0
    Private Sub Command4_Click()
    SetWindowLong Me.hwnd, -16, tmplong And (Not (WS_THICKFRAME& Or WS_CAPTION&))
    Me.Height = Me.Height - 10
    Me.Height = Me.Height + 10
    End Sub

    'кнопка утопляет поверхность формы
    Private Sub Command5_Click()
    SetWindowLong Me.hwnd, -20, tmplong1 Or WS_EX_CLIENTEDGE&
    Me.Height = Me.Height - 10
    Me.Height = Me.Height + 10
    End Sub

    ' при загрузке формы желательно сохранить ее параметры в переменных
    ' и восстановить их при ее удалении,
    ' а то можно получить ошибку защиты
    Private Sub Form_Load()
    tmplong = GetWindowLong(Me.hwnd, -16) Or WS_VISIBLE&
    tmplong1 = GetWindowLong(Me.hwnd, -20)
    End Sub

    Private Sub Form_Unload(Cancel As Integer)
    SetWindowLong Me.hwnd, -16, tmplong And Not WS_VISIBLE&
    SetWindowLong Me.hwnd, -20, tmplong1
    End Sub

    ' Т.е. вид окна определяется набором флагов.
    ' Для установки SetWindowLong Me.hwnd, GWL_ ... , GetWindowLong(Me.hwnd, GWL_ ....) Or (сбрасываемое значение WS_ или WS_EX)
    ' Для сброса SetWindowLong Me.hwnd, GWL_ ... , GetWindowLong(Me.hwnd, GWL_ ....) And Not (сбрасываемое значение WS_ или WS_EX)


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

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

    наверх


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

    Сурменок Павел