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


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
  • Господа!!! читайте MSDN!!!

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

       Выпуск номер 41.
    Читайте!


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




    Книги

    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 можно найти
    здесь.

    наверх


    Изменение атрибутов файла (SetFileAttributes)

    Изменение атрибутов файла с помощью API-функции SetFileAttributes

    Const READONLY = &H1
    Const HIDDEN = &H2
    Const SYSTEM = &H4
    Const ARCHIVE = &H20
    Const NORMAL = &H80
    Private Declare Function SetFileAttributes Lib "kernel32.dll" Alias "SetFileAttributesA" (ByVal lpFileName As String, ByVal dwFileAttributes As Long) As Long

    Private Sub Command1_Click()
    Dim attr As Long
    Dim rval As Long
    attr = READONLY + SYSTEM + HIDDEN
    rval = SetFileAttributes("D:\garbage\top_spylog.Txt", attr)
    End
    End Sub

    наверх


    Получение сведений о файле

    В данном примере вы можете узнать о том, как можно получить сведения о файле с использованием FileSystemObject. Для использования этого примера установите ссылку на Microsoft Scripting Runtime через меню Project | References.

    И не забудьте расположить на форме элемент ListBox!

    В этом примере вы можете узнать: Имя файла, Полный путь, Дата создания, Дата модификации, Дата последнего доступа, Размер файла

    Dim FSys As New FileSystemObject
    Private Sub Form_Load()
    Set qn = FSys.GetFile("D:\2\attributes\FileAtribs2.vbp")
    List1.AddItem "Имя файла " & qn.Name
    List1.AddItem "Полный путь " & qn.Path
    List1.AddItem "Дата создания " & qn.DateCreated
    List1.AddItem "Дата модификации " & qn.DateLastModified
    List1.AddItem "Дата последнего доступа " & qn.DateLastAccessed
    List1.AddItem "Размер файла " & qn.Size
    End Sub

    наверх


    Удаление файла в корзину

    Если у вас в опциях корзины Windows не стоит галочка "Уничтожать файлы сразу после удаления", то данный пример удалит созданные вами файлы в корзину.

    Private Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As Long
    End Type
    Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
    Private Const FO_DELETE = &H3
    Private Const FOF_ALLOWUNDO = &H40
    Private Const FOF_NOCONFIRMATION = &H10
    Private Const FOF_SILENT = &H4

    Sub SendFileToRecycleBin(FileName As String, Optional Confirm As Boolean = True, Optional Silent As Boolean = False)
    Dim FileOp As SHFILEOPSTRUCT
    With FileOp
    .wFunc = FO_DELETE
    .pFrom = FileName
    .fFlags = FOF_ALLOWUNDO
    If Not Confirm Then .fFlags = .fFlags + FOF_NOCONFIRMATION
    If Silent Then .fFlags = .fFlags + FOF_SILENT
    End With
    SHFileOperation FileOp
    End Sub

    Private Sub Command1_Click()
    SendFileToRecycleBin "C:\1.txt", False
    SendFileToRecycleBin "C:\11.txt", True
    End Sub

    Private Sub Form_Load()
    Dim FN As Integer
    FN = FreeFile
    Dim FName As String
    FName = "C:\1.txt"
    Open FName For Output As #FN
    Print #FN, ""
    Close #FN
    FName = "C:\11.txt"
    Open FName For Output As #FN
    Print #FN, ""
    Close #FN
    End Sub

    наверх


    Использование функции SHGetFileInfo

    Данный пример позволяет из пути к файлу узнать имя файла, а также описание типа зарегистрированного файла, и еще 3 параметра, смысл которых я не уловил. Вам и карты в руки, если вы узанаете смысл получаемых параметров, напишите.

    Const MAX_PATH = 260
    Private Type SHFILEINFO
    hIcon As Long ' out: icon
    iIcon As Long ' out: icon index
    dwAttributes As Long ' out: SFGAO_ flags
    szDisplayName As String * MAX_PATH ' out: display name (or path)
    szTypeName As String * 80 ' out: type name
    End Type
    Private Enum SHGFI_FLAGS
    SHGFI_LARGEICON = &H0 ' sfi.hIcon is large icon
    SHGFI_SMALLICON = &H1 ' sfi.hIcon is small icon
    SHGFI_OPENICON = &H2 ' sfi.hIcon is open icon
    SHGFI_SHELLICONSIZE = &H4 ' sfi.hIcon is shell size (not system size), rtns BOOL
    SHGFI_PIDL = &H8 ' pszPath is pidl, rtns BOOL
    SHGFI_USEFILEATTRIBUTES = &H10 ' pretend pszPath exists, rtns BOOL
    SHGFI_ICON = &H100 ' fills sfi.hIcon, rtns BOOL, use DestroyIcon
    SHGFI_DISPLAYNAME = &H200 ' isf.szDisplayName is filled, rtns BOOL
    SHGFI_TYPENAME = &H400 ' isf.szTypeName is filled, rtns BOOL
    SHGFI_ATTRIBUTES = &H800 ' rtns IShellFolder::GetAttributesOf SFGAO_* flags
    SHGFI_ICONLOCATION = &H1000 ' fills sfi.szDisplayName with filename containing the icon, rtns BOOL
    SHGFI_EXETYPE = &H2000 ' rtns two ASCII chars of exe type
    SHGFI_SYSICONINDEX = &H4000 ' sfi.iIcon is sys il icon index, rtns hImagelist
    SHGFI_LINKOVERLAY = &H8000 ' add shortcut overlay to sfi.hIcon
    SHGFI_SELECTED = &H10000 ' sfi.hIcon is selected icon
    End Enum
    Private Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long
    Private Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME Or SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX Or SHGFI_DISPLAYNAME Or SHGFI_EXETYPE Or SHGFI_ICON

    Private Sub Command1_Click()
    Dim hFile As Long, nRet As Long
    Dim nSize As Long, cCount As Long
    Dim sTmp As String
    Dim shfi As SHFILEINFO
    sPath = "C:\AUTOEXEC.BAT"
    nRet = SHGetFileInfo(sPath, 0&, shfi, Len(shfi), BASIC_SHGFI_FLAGS)
    MsgBox shfi.dwAttributes
    MsgBox shfi.hIcon
    MsgBox shfi.iIcon
    MsgBox shfi.szDisplayName
    MsgBox shfi.szTypeName
    End Sub

    наверх


    Найти TEMP-директорию и создать новый .tmp-файл

    Как найти временную папку Windows используя (1) функцию ENVIRON или (2) используя Win32 API GetTempPath. Эта программа покажет, как сгенерировать новое временное имя, используя GetTempFileName. Добавьте на форму CommandButton и Label

    Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
    Private Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long

    Private Sub Command1_Click()
    Dim ls_TempPath As String
    Dim ll_Buffer As Long
    Dim ls_TempFileName As String
    ll_Buffer = 255
    ls_TempPath = Space(255)
    If GetTempPath(ll_Buffer, ls_TempPath) = 0 Then
    MsgBox "API Failed!"
    Else
    ls_TempPath = Left(ls_TempPath, ll_Buffer)
    End If
    ls_TempFileName = Space(255)
    ll_Buffer = GetTempFileName(ls_TempPath, "xxx", 0, ls_TempFileName)
    'xxx is a three letter prefix - can be anything you want.
    '3rd parameter (0 above) is uUnique...If uUnique is nonzero, the function appends the hexadecimal string to lpPrefixString to form the temporary filename. In this case, the function does not create the specified file, and does not test whether the filename is unique.
    'If uUnique is zero, the function uses a hexadecimal string derived from the current system time. In this case, the function uses different values until it finds a unique filename, and then it creates the file in the lpPathName directory.
    If ll_Buffer = 0 Then
    MsgBox "API Failed!"
    Else
    ls_TempFileName = Left(ls_TempFileName, ll_Buffer)
    MsgBox "Created temporary file :" & ls_TempFileName
    End If
    End Sub

    Private Sub Form_Load()
    Dim ls_TempPath As String
    Dim ll_Buffer As Long
    Dim li_Length As Integer
    ll_Buffer = 255
    ls_TempPath = Space(255)
    li_Length = GetTempPath(ll_Buffer, ls_TempPath)
    If li_Length = 0 Then
    MsgBox "API Failed!"
    Else
    ls_TempPath = Left(ls_TempPath, li_Length)
    Label1 = "Temporary Directory is " & ls_TempPath
    End If
    'Or Using environment variables.
    'To see your environment variables go to the system icon in control panel and click on the environment tab. You can get the value of these variables from VB using the command ENVIRON. e.g.
    'Label1 = Environ("TEMP")
    'Label1 = Environ("TMP")

    End Sub

    наверх


    Рекурсивный перебор все подпапок в указанной папке

    Данный пример позволяет "перебрать" все подпапки одной определенной директории. К примеру, вам необходимо в каждой подпапке подсчитать количество файлов, или выполнить стандартную процедуру над каждым файлом, да мало ли какое применение. Данный код я использую в своей программе FPkiller. Разместите на форме элементы FileListBox, DirListBox, DriveListBox а также элемент CommandButton.

    Затем вставьте следующий код, и ваша программа заработает. Все необходимые, на мой взгляд, пояснения даны в примере. Как вы понимаете, в данном примере основной процедурой является процедура ScanFolders(). Ваш код для обработки каждой папки должен помещаться между /// и \\\.

    Dim InitialFolder
    Dim OldDrive As String
    Dim TotalDir 'переменная для обозначение общего количества папок

    Private Sub Command1_Click()
    ChDrive Drive1.Drive
    ChDir Dir1.Path
    InitialFolder = CurDir
    ScanFolders
    End Sub

    Sub ScanFolders()
    Dim SubFolders As Integer
    '///начало обращения к внешней процедуре
    'в данный блок вы можете вставить любую процедуру обработки текущей папки
    'MsgBox CurrentFolder(Dir1.Path) 'просмотр текущей папки
    'снимите маркер, если хотите получить общее количество папок, включая начальную
    'TotalDir = TotalDir + 1

    '\\\конец обращения к внешней процедуре
    SubFolders = Dir1.ListCount
    If SubFolders > 0 Then
    For i = 0 To SubFolders - 1
    ChDir Dir1.List(i)
    Dir1.Path = Dir1.List(i)
    File1.Path = Dir1.List(i)
    Form1.Refresh
    ScanFolders
    Next
    End If
    File1.Path = Dir1.Path
    MoveUp
    End Sub

    Sub MoveUp()
    If Dir1.List(-1) <> InitialFolder Then
    ChDir Dir1.List(-2)
    Dir1.Path = Dir1.List(-2)
    End If
    End Sub
    Private Sub Dir1_Change()
    ChDir Dir1.Path
    File1.Path = Dir1.Path
    End Sub
    Private Sub Dir1_Click()
    With Dir1
    .Path = .List(.ListIndex)
    End With
    End Sub
    Private Sub Drive1_Change()
    On Error GoTo ErrHan
    ChDrive Dir1.Path
    Dir1.Path = Drive1.Drive
    Dir1.Refresh
    'присвоение этой переменной значение Drive1.Drive для исключения ошибки
    OldDrive = Drive1.Drive
    Exit Sub
    ErrHan:
    Drive1.Drive = OldDrive
    End Sub
    Private Sub Form_Load()
    ChDrive App.Path
    ChDir App.Path
    End Sub
    Private Function CurrentFolder(sFolderPath)
    Dim str1() As String
    str1 = Split(sFolderPath, "\")
    CurrentFolder = str1(UBound(str1))
    End Function

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


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

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

       В VB пытаюсь сделать текстовый редактор. Посоветуйте, как сделать, чтобы по нажатии на кнопку BOLD(жирный), жирным становился не весь текст, а только выделенный. Я написал так:

    Case "Bold"
      With txtBox
       If .FontBold = True Then
        .FontBold = False
       Else
        .FontBold = True
       End If
      End With


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

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

       В Excel написал программу, реагирующую на ияменение данных на странице. Но эта программа сама меняет данные на той же станице и тоже на это реагирует. В реяультате программа выяывает сама себя и яацикливается. Знает ли кто-нибудь как отключить реакцию на событие WorkSheet_Change на время выполнения процедуры. Сейчас я выкручиваюсь так: в начале прогаммы ставлю флажок, что программа в стадии выполнения и по нему делаю Exit.


    Автор вопроса: Саша

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

       Как проиграть телефонный раяговор черея явуковую карту?


    Автор вопроса: Саша

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

       Как при помощи VB и API переделать BMP в GIF (Раяумеется не просто поменять раширение)?


    Автор вопроса: Саша

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

       На каких платформах работают программы написанные на VB6?


    Автор вопроса: Саша

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

       Как перекодировать ия какой либо кодировки в другую при помощи VB. (Только не Win в Дос)


    Автор вопроса: Саша

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

       Как исправить текст находящийся вне формы ?


    Автор вопроса: Саша

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

       Можно ли удалить файл так что бы его нельяя было востановить даже unerase или undelete.


    Автор вопроса: Саша

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

       Можно ли востановить удаленные файлы при помощи VB (удаленные не яначит в коряине).


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

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

       Люди! Каким образом средствами VBA for EXEL97 получить список файлов в указанной папке, причем с определенный символом в начале имени и указанным расширением? И как после этого оргпнизовать последовательное открытие каждого из них? (все файлы .xls)


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

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

       Как мне «воткнуть» файл в программу (музыкальный) чтобы от туда же его использовать…или воспроизводить его в нужный момент, но путь целиком не указывать (на случай если папку с прогой переместят)… + как заставить объект типа Picture по нажатии кнопки влево, двигаться влево, и т.д…прошу написать поподробнее…+как при определенном условии создавать объект (Picture), а при ненадобности его удалять (советы с visible не присылать, таких объектов за раз может быть много, а код компактен должен быть)…+как откомпилять EXEшник, чтоб он потом не требовал библиотек (VB6)


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

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

       Народ, отзовитесь, кто работал гокда-нибудь с диаграммой Excel. Мне нужно внести в нее исходные данные для построения графика, но не вручную, а программно. Но какие свойства и методы надо использовать я не знаю.


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

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

       Работа с базой данных.
      
    Расклад такой:
    Таблица - "А"
    Поля - "Дата Продажи"
                     "Наименование Товара"
                     "Стоимость"
    Как должен выглядеть SQL запрос чтобы вывести данные о количестве записей из поля"Наименование Товара",общей суммы из поля"Стоимость" на конкретную дату"Дата Продажи" из таблицы"А". Причём должна быть возможность делать выборку на дату задаваемую пользователем,в отдельном Text.Box. Пример: 17.03.02 было проданно 15 наименований товара на сумму 1500 рублей.
      
    "VB 6.0" ,база данных "ACCESS" , контрол "DATA"


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

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

       Кто знает, как програмно создать кнопку али др. элемент упраления ?


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

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

       Как добавить свою кнопку в любом окне windows, рядом с кнопками: Свернуть, Развернуть, Закрыть?




    Ответы:


    Вопрос:

       как сделать что бы в text1.text происходил поиск слов которые ты написал и изменялся, например цвет, размер итд в нём же самом для создания HTML редактора

    Ответ:

    Автор ответа: Roman 'Devil' Yuakovlev

    Можно... только нужно юзать richtextbox


    Вопрос:

       Когда яапускаешь программу под Dos. Открывается окно Dos и пишутся раяличные надписи (у большенства программ) Как сделать так что бы эти яаписи были на TextBox.

    Ответ:

    Автор ответа: P@Ssword

    Пример взял из API-Guide, инструкция прилагается. Пользуйся!

    'Redirects output from console program to textbox.
    'Requires two textboxes and one command button.
    'Set MultiLine property of Text2 to true.
    '
    'Original bcx version of this program was made by
    ' dl
    'VB port was made by Jernej Simoncic
    'Visit Jernejs site at http://www2.arnes.si/~sopjsimo/
    '
    'Note: don't run plain DOS programs with this example
    'under Windows 95,98 and ME, as the program freezes when
    'execution of program is finnished.

    Option Explicit
    Private Declare Function CreatePipe Lib "kernel32" (phReadPipe As Long, phWritePipe As Long, lpPipeAttributes As SECURITY_ATTRIBUTES, ByVal nSize As Long) As Long
    Private Declare Sub GetStartupInfo Lib "kernel32" Alias "GetStartupInfoA" (lpStartupInfo As STARTUPINFO)
    Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String, ByVal lpCommandLine As String, lpProcessAttributes As Any, lpThreadAttributes As Any, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long
    Private Declare Function SetWindowText Lib "user32" Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
    Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
    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 Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

    Private Type SECURITY_ATTRIBUTES
       nLength As Long
       lpSecurityDescriptor As Long
       bInheritHandle As Long
    End Type

    Private Type PROCESS_INFORMATION
       hProcess As Long
       hThread As Long
       dwProcessId As Long
       dwThreadId As Long
    End Type

    Private Type STARTUPINFO
       cb As Long
       lpReserved As Long
       lpDesktop As Long
       lpTitle As Long
       dwX As Long
       dwY As Long
       dwXSize As Long
       dwYSize As Long
       dwXCountChars As Long
       dwYCountChars As Long
       dwFillAttribute As Long
       dwFlags As Long
       wShowWindow As Integer
       cbReserved2 As Integer
       lpReserved2 As Byte
       hStdInput As Long
       hStdOutput As Long
       hStdError As Long
    End Type

    Private Type OVERLAPPED
         ternal As Long
         ternalHigh As Long
         offset As Long
         OffsetHigh As Long
         hEvent As Long
    End Type

    Private Const STARTF_USESHOWWINDOW = &H1
    Private Const STARTF_USESTDHANDLES = &H100
    Private Const SW_HIDE = 0
    Private Const EM_SETSEL = &HB1
    Private Const EM_REPLACESEL = &HC2

    Private Sub Command1_Click()
       Command1.Enabled = False
       Redirect Text1.Text, Text2
       Command1.Enabled = True
    End Sub
    Private Sub Form_Load()
         Text1.Text = "ping"
    End Sub
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
       If Command1.Enabled = False Then Cancel = True
    End Sub

    Sub Redirect(cmdLine As String, objTarget As Object)
       Dim i%, t$
       Dim pa As SECURITY_ATTRIBUTES
       Dim pra As SECURITY_ATTRIBUTES
       Dim tra As SECURITY_ATTRIBUTES
       Dim pi As PROCESS_INFORMATION
       Dim sui As STARTUPINFO
       Dim hRead As Long
       Dim hWrite As Long
       Dim bRead As Long
       Dim lpBuffer(1024) As Byte
       pa.nLength = Len(pa)
       pa.lpSecurityDescriptor = 0
       pa.bInheritHandle = True

       pra.nLength = Len(pra)
       tra.nLength = Len(tra)

       If CreatePipe(hRead, hWrite, pa, 0) <> 0 Then
         sui.cb = Len(sui)
         GetStartupInfo sui
         sui.hStdOutput = hWrite
         sui.hStdError = hWrite
         sui.dwFlags = STARTF_USESHOWWINDOW Or STARTF_USESTDHANDLES
         sui.wShowWindow = SW_HIDE
         If CreateProcess(vbNullString, cmdLine, pra, tra, True, 0, Null, vbNullString, sui, pi) <> 0 Then
           SetWindowText objTarget.hwnd, ""
           Do
             Erase lpBuffer()
             If ReadFile(hRead, lpBuffer(0), 1023, bRead, ByVal 0&) Then
               SendMessage objTarget.hwnd, EM_SETSEL, -1, 0
               SendMessage objTarget.hwnd, EM_REPLACESEL, False, lpBuffer(0)
               DoEvents
             Else
               Exit Do
             End If
             CloseHandle hWrite
           Loop
           CloseHandle hRead
         End If
       End If
    End Sub


    Вопрос:

       В Excel 2000 при копировании листа
    Sheets("Name").Copy After:="NameA"
    где-то на 26-31-й копии возникает ошибка #1004 и лист не копируется. Что это за глюк? Как с ним бороться? Пока обхожу его так: в обработчике ошибки всавляю новый лист, переношу на него все данные, задаю нужные параметры печати. Но это требует НА ПОРЯДОК БОЛЬШЕ ВРЕМЕНИ!

    Ответ:

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

    Используй следующий метод: не Sheets("Name").Copy, а ActiveSheet.Copy

    str1 = ActiveSheet.Name + "_svod"
    ActiveSheet.Name = "proverka"
    ActiveSheet.Copy before:=Workbooks(WBN).Worksheets("START")
    ActiveSheet.Copy before:=Worksheets(Worksheets.Count)


    Вопрос:

       Как сделать, чтобы программа добавлялась в автозагрузку(не через меню "Автозагрузка", а в реестре)?

    Ответ:

    Автор ответа: Иван

    Для этого необходимо создать в разделе реестра 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 владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


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

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