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


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

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

Subscribe.Ru увеличило максимальный размер рассылки до 100 кб. В связи с этим вопрос:
Какого размера Вы хотели бы получать рассылку?

Менее 20 кб
От 20 до 40 кб
От 40 до 60 кб
От 60 до 80 кб
Выше 80 кб


В какой день (дни) недели Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."?
Понедельник
Вторник
Среда
Четверг
Пятница
Суббота
Воскресение


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


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

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

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

Ссылки:

  • Улицы VB
  • Использование VB
  • VB Line
  • Азбука VB
  • VB на русском
  • Улицы VB
  • VB - шаг за шагом
  • Кирпичики VB
  • CообЧа VB
  • VB по русски
  • Snoozex Design
  • Несколько слов от автора:

       Это новогдний выпуск рассылки. Через несколько дней Новый год. В этом выпуске определяется победитель в конкурсе на лучший баннер, а также будут награждены самые активные участники раздела "Вопрос/ответ".
    Читайте!


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




    Конкурсы
    В десятом номере рассылки был объявлен конкурс на лучший баннер. Представлены 3 работы двух создателей. Это анимированные gif кнопки. Мы распределили места так:
    I место:
    Автор - Назаров Евгений
    II место поделили две кнопки:
    Автор - Anton B. Lozovski
    Автор - Anton B. Lozovski

    Главным критерием при присуждени мест был размер баннера.
    Назаров Евгений получает 5000 показов баннерообменной системы TLE.RU. Anton B. Lozovski получает 4000 показов сети TLE.RU. Все участники конкурса получают возможность разместить кнопку 88x31 на главной странице сайта VBСтудия.


    Также я решил наградить самых активных участников раздела "Вопрос/Ответ". Вот трое самых активных на мой взгляд участников:

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


  • Они прислали больше всех ответов на вопросы. Но это не главное. Главное то, что они присылали грамотные, полные ответы.
    Sergey Y. Tkachev, Кононенко Роман и Kirill получают возможность разместить кнопку 88x31 на главной странице сайта VBСтудия

    наверх


    Citycat by Email

       Программа Citycat by Email позволяет работать с сервером Subscribe.ru с помощью электронной почты. Теперь Вам не нужно тратить деньги на работу в online и просматривать мегабайты рекламы для того, чтобы подписаться на нужную рассылку! Вам просто необходимо скачать небольшую базу данных по всем рассылкам каталога с нашего сайта, после чего Вы сможете подписываться и отписываться от рассылок, заказывать архивы прошлых выпусков, выполнять поиск по каталогу рассылок и многое другое.
       Программу Citycat by Email можно бесплатно загрузить с сайта http://sapisoft.h1.ru.


    наверх


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

    • 27 декабря 2001 года - Поздравляю Вас всех с Новым годом. Ну и как раз по поводу этого великого праздника сегодня большое, если не сказать огромное, обновление. Значительно пополнился раздел Юмор. Теперь количество анекдотов там превышает 50 и будет постоянно увеличиваться. В разделе Примеры добавлено 15 примеров. Большую часть из них прислал Беляев Данила, за что ему огромное спасибо. Ну а главное - добавлен раздел Игры. Там будут расположены игры, написанные на Visual Basic с исходниками. Уже имеется 7 игр.
    • 23 декабря 2001 года - Каждый день на сайт приходит более 150 посетителей, которые, как я понимаю, являются программистами или считают себя таковыми. Так вот если каждый из Вас хотя бы раз в месяц пришлет на сайт пример, совет, контрол или что-нибудь еще, то будет очень много материала. Вам же будет лучше и легче программировать!
      Присылайте, жду.  Выложил 5 новых примеров.
      Выложил один код в библиотеку кодов.
    • 21 декабря 2001 года - Написал новую статью. Называется - "Программное создание базы данных".
    • 17 декабря 2001 года - Последнюю неделю не было ни одного обновления - их не было по одной важной причине: не было времени. Как видите, я поменял дизайн сайта. Я счиаю, что так будет удобнее. Пока возможны небольшие неполадки в работе сайта, но максимум через неделю я их исправлю. Никаких новых материалов пока не добавлено.
    • 8 декабря 2001 года - Один новый контрол. Он позволяет преобразовать сумму в пропись.
      В разделе Юмор добавлен новый рассказ.


    наверх


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

       23 декабря 2001 г. Ну вот, так то лучше! Мой почтовый ящик за последние дни принял множество интересных примеров, статей и контролов. Итак, с сегодняшнего обновления, я буду их выкладывать на сайт. Не обижайтесь, если Ваш код появится не самым первым, а, например, к Новому году. Новоселов Андрей порадовал нас очень качественным и полезным контролом DublWindow. Контрол предназначен для отслеживания запущенных копий одной и той же программы и имеет множество интересных возможностей. Например, Вы можете обмениваться информацией между разными копиями и т.д. Рекомендую всем. Ковалев Сергей прислал контрол FlexGridPlus, созданный на основе всем известного FlexGrid, но имеющий несколько новых полезных свойств: TextEdit = true позволяет вводить текст в ячейки, свойство FormatString позволяет задать формат вводимого текста, если FormatString=1, то в ячейки можно вводить только числа и десятичные точки, а также рад других нужных свойств. Ну и напоследок еще два примера от SeRg, Сергей очень порадовал и прислал множество своих примеров, контролов. Большое ему спасибо. Итак, на сегодня я выбрал два примера: работа с FSO библиотекой и красивые стрелочные часики. Ну и на закуску новый сайт про ЭТО VBasic. Фууух, ну на сегодня хватит обновлений.
       16 декабря 2001 г. В прошлый раз я предложил создать новый раздел ЖЗП. Ну и где Ваши истории? Пришло куча писем - "классный раздел, будет интересно", но НИКТО не решился написать о себе. Я обиделся... Еще вот что, каждый день на сайт приходит более 130 посетителей, которые, как я понимаю, являются программистами или считают себя таковыми. Так вот если каждый из Вас хотя бы раз в месяц пришлет на сайт пример, совет, контрол или что-нибудь еще, то будет очень много материала. Вам же будет лучше и легче программировать! Присылайте, жду.  Ну да ладно, Новоселов А.Г. (интересно, а как же его зовут) прислал свой контрол, для решения задачки по запихиванию иконки в сис.трей (там где часики). И еще в разделе Статьи, добавил интересную статью Армена Мнацаканяна посвященную FSO - объектной модели файловой ситемы.


    наверх


    Новости сайта VBMania

    • 17.12 - В связи с тем что форум не горел желаением вести себя так, как должен обычный, порядочный форум, мы его прикрыли для проведения разъяснительных мероприятий. Надеемся, что они не затянутся и форум образумится.
    • 06.12 - С сегодняшнего дня все желающие могут добавлять свои новости и статьи в наши архивы.
      Да здраствует открытость!
    • 27.11 - Наконец-то, после долгих дней и бессонных ночей это свершилось! Сайт объявляется открытым! Непременно прочитайте первый номер нашего журнала. Оцените наши дополнительные проекты. И конечно мы ждем ваших откликов в гостевой книге и по почте.
    • 01.12 - Произошло несколько косметических улучшений, касающихся исключительно удобства работы с сайтом. Во-первых, можно видеть количество записей обсуждения новостей на главной странице; а во-вторых чуточку подправились директории.
      Оценяйте!
    • 02.12 - Наконец-то исправлена ошибка в Моей Мании, которая проявлялась исключительно в Windows XP. Теперь все работает как надо!


    наверх


    Вывод свойства Caption у контрола одновременно с вводом текста

    Это совет
    Михаила Эскина с сайта http://www.mik.h1.ru. Вы, наверно, неоднократно замечали что у стандартных контролов Label или TextBox при изменении свойства, отвечающего за вывод текста (Caption или Text соответственно) изменения на контроле происходят одномоментно с введением текста в окне свойств. У созданных Вами контролов такое изменение текста на контроле происходит только после подтверждения ввода клавишей ENTER. Однако VB позволяет исправить это положение.

        Создайте контрол, установите свойство AutoRedraw=True, а затем скопируйте нижеуказанный код. Ничего сложного в нем нет - просто создается одно свойство Caption, которое печатается на контроле.

    Option Explicit
    Const m_def_Caption = "TestControl"
    Dim m_Caption As String

    Public Property Get Caption() As String
        Caption = m_Caption
    End Property

    Public Property Let Caption(ByVal New_Caption As String)
        m_Caption = New_Caption
        Draw m_Caption
        PropertyChanged "Caption"
    End Property

    Private Sub UserControl_InitProperties()
        m_Caption = m_def_Caption
    End Sub

    Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
        m_Caption = PropBag.ReadProperty("Caption", m_def_Caption)
    End Sub

    Private Sub UserControl_Show()
        Draw m_Caption
    End Sub

    Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
        Call PropBag.WriteProperty("Caption", m_Caption, m_def_Caption)
    End Sub

    Private Sub Draw(str As String)
        UserControl.Cls
        UserControl.Print str
    End Sub

        На тестировочной форме отобразите Ваш контрол и попытайтесь изменить его свойство Caption. Все происходит обычным порядком, т.е. текст обновляется только по нажатии ENTER.

        Перейдите в контрол и выберите меню Tools/Procedure Attributes ..., нажмите кнопку Advanced>> и для свойства Caption в выпадающем списке Procedure ID - выберите так же Caption. Нажмите ОК. Если сейчас в тестировочной форме вы попробуете изменить данное свойство контрола, то увидите, что это происходит одновременно и на самом контроле.

        Такая ситуация характерна не только для контролов, созданных с "нуля", но и для контролов, использующих готовые элементы управления (например Label). Если используете TextBox, то, соответственно, необходимо выбрать Procedure ID = Text.

        Из недостатков этого метода можно отметить два:

        1. Если данное свойство используется по умолчанию (Procedure ID = Default), то второе ID ему присвоить уже нельзя. Хотя, в VB.Net свойств по умолчанию, вроде бы, не предвидится.

        2. Если Вы используете, допустим, 2 или более Label, Caption которых имеют самостоятельные свойства. В данной ситуации Вы сможете такую манипуляцию провести только у одного из них.

    наверх


    Как узнать описание ошибки, возвращенной функцией API

    Если Вы используете API, то Вам пригодится следующий совет. Функции API, обычно возвращают код ошибки, а нам бы хотелось ещё узнать и ее описание. Оказывается сделать это не сложно. Нужно обратиться к функции FormatMessage из API. Она возвратит Вам описание любой ошибки по ее номеру, причем описание зависит от языка операционной системы, т.е. если у Вас установлена русская версия Windows, то и описание Вы получите на руссом языке. Ниже приведена функция, которая облегчает работу с FormatMessage.

    Private Function ApiErrorText(ByVal ErrNum As Long) As String
        Dim msg As String
        Dim nRet As Long

        msg = Space$(1024)
        nRet = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, ByVal 0&, ErrNum, 0&, msg, Len(msg), ByVal 0&)
        If nRet Then
            ApiErrorText = Left$(msg, nRet - 2)
        Else
            ApiErrorText = ""
        End If
    End Function

    Private Declare Function FormatMessage Lib "kernel32" Alias "FormatMessageA" (ByVal _
        dwFlags As Long, lpSource As Any, ByVal dwMessageId As Long, ByVal dwLanguageId _
        As Long, ByVal lpBuffer As String, ByVal nSize As Long, Arguments As Long) As Long

    Private Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000


    наверх


    Именование закрытых переменных

    На каком бы объектно-ориентированном языке Вы ни программировали, наверняка сталкивались с проблемой именования переменных. Переменным, представляющим одно и то же значение, приходится присваивать разные имена. Допустим, Вы определили свойство FileName В программе имеется переменная с именем файла, и ее значение надо присвоить этому свойству. Программист, который придерживается венгерского именования, может назвать переменную как sFileName. Значение, присваиваемое свойству, на самом деле передается как аргумент в процедуру Property Let. Вы должны как-то назвать параметр, принимающий имя файла, на ум сразу приходит sFileName Теперь это же значение надо хранить внутри процедуры — и снова подходит sFileName. А как насчет самого свойства? Извне оно и выглядит, и пахнет как переменная, да и на вкус такое же. Что, опять sFileName.

        На практике совпадение имен внешней и внутренней переменных проблем не создает. У внешней своя область видимости, отличная от остальных, и в этом случае одинаковые имена допустимы. И все же лучше не применять венгерского именования в именах свойств, а не то Ваш код станет похож на бормотание индюка. thgMyThing.nMyCollection.iProperty. Кроме того, Вы сильно разойдетесь со схемой именования, принятой в элементах управления, формах и других предопределенных объектах. Да и неприлично это — навязывать другим свою схему именования.

        Остается конфликт между именем параметра в процедуре Property Let и именем внутренней переменной. Вы должны как-то различать их, даже если они относятся к одному и тому же. Имя внутренней переменной можно подправить двумя способами Например, в библиотеке MFC в таких ситуациях перед именем элемента класса всегда ставится префикс т_ (m_sFileName). При этом модификация имен не сказывается на процедурах

         Вот так то, это совет не от меня - его автор замечательный программист Брюс Мак Кинни. Так что слушайтесь его, он плохого не посоветует!



    наверх


    Как показать стандартный диалог выбора папки

    Вы уже неоднократно видели в различных программах окно выбора папки. А вот как его показать, ведь в Visual Basic такого элемента управления нет. Для этого воспользуйтесь нижеследующим кодом.

    Public Const MAX_PATH = 260 'Максимальное число символов в наименовании папки

    Type BROWSEINFO
        hOwner As Long
        pidlRoot As Long
        pszDisplayName As String
        lpszTitle As String
        ulFlags As Long
        lpfn As Long
        lParam As Long
        iImage As Long
    End Type

    Public Declare Function SHBrowseForFolder Lib "Shell32" Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
    Public Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
    Public Declare Function SHSimpleIDListFromPath Lib "Shell32" Alias "#162" (ByVal szPath As String) As Long
    Public Declare Sub CoTaskMemFree Lib "ole32" (ByVal pv As Long)

    Function SelectFolder() As String
        Dim bi As BROWSEINFO 'структура для SHBrowseForFolder
        Dim sPath As String 'переменная под имя папки
        Dim pID As Long 'переменная для PIDL

        bi.hOwner = Me.hwnd 'описатель вызывающего окна для правильного отображения в ZOrder
        bi.pszDisplayName = String$(MAX_PATH, 0) 'буфер под имя папки
        bi.lpszTitle = "Выберите папку..." 'заголовак окна
        'функции передается не имя начальной папки
        'а её PIDL (Point to ID list), т.е. указатель
        'в системном списке. Его получам от спец. функции
        'bi.pidlRoot = SHSimpleIDListFromPath("c:\") 'диск С должен быть у всех
        'если оставить это поле пустым, то начальная папка "Рабочий стол"
        'передаем начальную информацию в SHBrowseForFolder и
        'от неё получаем выбранную пользователем папку
        pID = SHBrowseForFolder(bi)
        'создаем буфер под имя возвращаемой папки
        sPath = String$(MAX_PATH, 0)
        If SHGetPathFromIDList(ByVal pID, ByVal sPath) Then
            'приводим имя папки в нормальный вид, т.е. отсекаем нули
            sPath = StrZToStr(sPath)
        End If
        'обязательно почистите память
        Call CoTaskMemFree(pID)
        SelectFolder = sPath 'возвращаем имя выбранной папки
    End Function



    наверх


    Используя ListView восстанавливайте ширину каждой колонки

    Если в своих программах Вы используете элемент управления ListView, то пользователь может менять ширину каждого его столбца. По правилам "хорошего тона" Вы просто обязаны сохранять эти значения в реестре, а затем, при следующем запуске программы, восстановить их. Для этого не следует изобретать "велосипед", а лучше всего воспользоваться моим кодом.

        Итак, воспользуйтесь двумя нижеследующими процедурами. Первая сохраняет, а вторая восстанавливает нужные значения. Каждая процедура имеет два параметра: ей передается ListView и имя секции в реестре, в которой будем сохранять значения (имя может быть любое). Кроме того если Вы читали мой совет №2 (на сайте), то Вам уже известны константы APP_NAME,  KEY_SET. К ним прибавляется ещё одна COLUMN_WIDTH. В общем смысле эти константы задают имя ключа в реестре Windows, в котором хранятся настройки Вашей программы.

    Public Const COLUMN_WIDTH = "ColumnWidth" 'ширина колонок
    Public Const APP_NAME = "FTP Manager" 'Наименование программы
    Public Const KEY_SET = "Setting" 'Общие настройки

    'сохраняем ширину колонок таблиц в реестре
    Sub SaveColumns(lv As ListView, name As String)
        Dim KEY_STRING As String
        Dim i As Long

        'Сохраняем ширину колонок в реестре Windows
        KEY_STRING = APP_NAME & "\" & KEY_SET & "\" & name 
        For i = 1 To lv.ColumnHeaders.Count
            SaveSetting KEY_STRING, COLUMN_WIDTH, i, lv.ColumnHeaders(i).Width
        Next i
    End Sub

    'восстанавливаем ширину колонок
    Sub LoadColumns(lv As ListView, name As String)
        Dim KEY_STRING As String
        Dim i As Long

        'Восстанавливаем ширину колонок
        KEY_STRING = APP_NAME & "\" & KEY_SET & "\" & name
        For i = 1 To lv.ColumnHeaders.Count
            lv.ColumnHeaders(i).Width = GetSetting(KEY_STRING, COLUMN_WIDTH, i, 700)
        Next i
    End Sub

        Для сохранения ширины колонок в событие Unload формы (на которой находится ListView) впишите:

        SaveColumns Me.ListView1, "Table1"

        Для восстановления параметров в событие Load впишите вызов процедуры LoadColumns с пеми же параметрами. Вот, собственно и все.



    наверх


    Книги

    Использование Visual Basic 6. Специальное издание

       В книге описана новая версия популярной системы программирования Visual Basic 6. Изложение материала построено по принципу "от простого к сложному". Первые главы этой книги адресованы новичкам, из которых они смогут почерпнуть основы языка Visual Basic и описание его стандартных компонентов. Для подготовленных пользователей будет интересен раздел, посвященный специальным методам программирования с использованием стандартных компонентов Windows, элементов управления ActiveX, ADO. RDO и др. В отдельную часть вынесены вопросы, связанные с разработкой приложений баз данных на Visual Basic и работе в Internet. Автор не обошел также вниманием различные версии языка Visual Basic - VBA и VBScript. В приложениях приведен обзор интегрированной среды разработки Visual Basic, а также краткий справочник по SQL.
       Книга рассчитана на широкий круг читателей.


    Сайлер Б., Споттс Дж., "Вильямс" - 1999, 832 стр.
    Стоимость: 244,02 р.
    Тираж: 4000 экз.
    Формат книги: 70х100/16
    Переплет: твёрдый

    Обработка баз данных на Visual Basic 6 + CD

       Сердцем многих приложении, работающих в сфере бизнеса, являются базы данных. Своим широким распространением они обязаны возможности централизованного доступа к информации. который характеризуется последовательностью, эффективностью и относительной простотой создания и поддержки. В книге "Обработка баз данных на Visual Basic 6" описываются все технологии доступа к базам данных с помощью Visual Basic. Приведенные в этой книге примеры взяты из реальной жизни, поэтому, ознакомившись с ними, вы узнаете, как можно использовать базы данных для принятия решений в сфере бизнеса. Если вы еще не готовы перейти к версии Visual Basic 6, это вовсе не значит, что данная книга вам не подходит. Практически 95% материала этой книги удовлетворит в равной степени пользователей как пятой, так и шестой версий Visual Basic.
       Книга рассчитана на программистов средней и высокой квалификации.


    Мак-Манус Дж.П., "Вильямс" - 1999, 672 стр.
    Стоимость: 310,17 р.
    Скидка: 5%
    Итого: 294,66
    Тираж: 3000 экз.
    Формат книги: 70х100/16
    Переплет: твёрдый

    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 стр.
    Стоимость: 169 р.
    Переплет: нет данных



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

    наверх


    Анонсы эхо-конференций СообЧа

    Хостинг. Где лучше?

       
    Ну, сделал ты свою страничку. А дальше? Выбираешь хостинг-провайдера и заливаешь ее для всеобщего обозрения. И тут тебя ждет сюрприз — через неделю пропадает связь с сервером, и на твой сайт уже никто попасть не может. Судорожно летишь останавливать показ баннеров. Через неделю повторяется то же самое. Начинаешь задумываться о смене провайдера, но как же выбрать, чтоб опять не ошибиться?

    Подписаться

    Сервисы в интернете

       
    Интернет — это не только сайты с анекдотами и новостями. Интернет — это еще и море всевозможных и разнообразных услуг, платных и бесплатных. А что, вы о них знаете? Ааа… знаете? Тогда поделитесь с другими. А если не знаете — спросите.

    Подписаться

    Интернет-программирование

       
    Вы хотите создать страницу в Сети, но не хотите использовать различные готовые шаблоны или же уже много умеете, но вам надоели гостевые книги и конференции от других сайтов. Вы изучаете язык, на котором хотите программировать в Интернет, но у вас появляются различные вопросы. Для всего этого и нужна группа SoobCha_Inet_Prog.

    Подписаться

    Графика

       
    Вам нравиться рисовать? Надо обработать фотографии? Создать баннер или логотип? У вас есть опыт работы с рисунками, и вы хотите с ним поделиться? У вас нет опыта, но вы горите желанием научиться? Тогда вам сюда. В группе обсуждаются все вопросы, связанные с двухмерной графикой.

    Подписаться

    Информатика в школе

       
    Целью конференции, на первом этапе, является объединение общеобразовательных школ, обмен педагогическим и практическим опытом, а также обсуждение, и перспективы - для разработки, методов и программ направленных на улучшение преподавания информационных технологий

    Подписаться


    наверх


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

       Ищу телеработу.

    • Переводы: английский, украинский, русский.
    • Cipper программист.
    • Assembler программист.
    • PIC разработчик
    • композитор
    • Прогрессивные стили
    • 3D анимация
    • GIF анимация
    Антон Лозовский.

    наверх


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

    BalloonMessage for MS Agent

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

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


    наверх


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

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

    Вопросы:


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

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

       Как подгружать на RunTime картинку(bmp)в приложение из файла mdb? Картинка линкуется в филде не из готового файла,а через Create New.


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

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

       Создание ярлыка.
    Из программы требуется создать ярлык на имеющийся файл (и поместить его в другую папку).



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

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

       На VBA никогда не программировал. Вопрос: в некой директории содержатся некоторое количество поддиректорий, в каждой поддиректории файлы с расширением rtf. Нужно написать макрос, чтобы эти файлы быстро сохранить в формате *.txt. Бегло изучив Help по VBA нашел как это делать с ActiveDocument, но не открывать же вручную все файлы.


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

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

       Нужно перебрать файлы из директории по маске. Столкнулся с таким глюком (стандартный exampl в хелпе на FileName): При вызове поиска без маски, т.е. (.FileName = "") выводит все файлы. Когда маска не пустая и по маске найдены фаилы (должны быть найдены)- вызывается ошибка выполнения '5'(Недопустимый вызов процедуры или аргумент). Если же под маску файлы не попадают, тогда выводит сообщение, что таких файлов нету.

    Вопрос простой - где грабли

    Процедура в полном тексте:

    Sub CommandButton2_Click()
    With Application.FileSearch
         .NewSearch
         .LookIn = CommandButton1.Caption
         .FileName = "cmd*"
         If .Execute() > 0 Then
             MsgBox "There were " & .FoundFiles.Count & _
                 " file(s) found."
             For i = 1 To .FoundFiles.Count
                 MsgBox .FoundFiles(i)
             Next i
         Else
             MsgBox "There were no files found."
         End If
    End With
    End Sub


    Автор вопроса: Андрей Юрьевич

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

       Вопрос вот в чем. Я хочу создать е-майл сообщение и отправить его из своей формы.Пишу как обычно:

    Dim out As Object
    Set out = CreateObject("Outlook.Application")

    Но на это обработчик ошибок мне выдает, что ActivX компонент не может создать объект,ошибка 429. Подскажите пожалуйста, как быть?


    Автор вопроса: Бранислав

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

       Если есть у кого-нибудь пример как делат из VB в 3Д график.
    Импорт dxf фајла в VB пројецт.

    Мя руский очен лучший
    Поздрављайет рускою


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

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

       Во-первых, всех читателей рассылки - с наступающим Новым Годом!
    Во-вторых, скажите мне - обычному бизнесмену, пытающемуся использовать VB (и очень недавно) для решения прикладных задач, ЧТО ТАКОЕ MSDN, С ЧЕМ ЕГО ЕДЯТ и КАК ЕГО УСТАНОВИТЬ? Все, наверное, поняли, что я не могу запустить справку в VB6 Prof. Буду очень и очень благодарен если кто-нибудь разъяснит мне это.


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

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

       Я хочу чтобы моя прога сохраняла текст из формы в текстовый файл после нажатия кнопки при помощи Microsoft Dialog Control 6.0, тоесть стандартного окна сохранения Виндоуз. Как мне это сделать?


    Автор вопроса: Фарит

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

       Как можно ия VB работать с портами ввода-вывода по их фияическому адресу?


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

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

       Люди добрые, помогите!!! Как сделать так, чтобы при вводе данных в БД в DBList набранное сортировалось по алфавиту, только на русском языке.


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

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

           Моё почтение! Ввиду моего дилетанства ,заранее приношу извинения за возможные некорректные формулировки аспектов вопроса.
        Ситуация. Моё приложение на VB 6 использует файл Access 2000. В полях таблицы этого файла,имеющих тип Text ,я без проблем пишу по-русски (весь "офис" у меня с русской поддержкой). Но при "вытаскивании" содержимого этих полей в TextBox-ы приложения ,получаю лишь набор ????? и т.д.
        На машине у меня 98-й windows(английский). Помогите ,пожалуйста, разобраться в причине проблемы.По-возможности, пример разрешения подобной ситуации,





    Ответы:


    Вопрос:

       Как сделать такую вещь: программа в процессе работы должна сделать паузу, ну скажем, на 2 сек. и в это время НИЧЕГО НЕ ДЕЛАТЬ! То есть просто подождать и продолжать выполнение работы.

    Ответ:

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

    Я использую API но можно и без нее использовать функцию Time это у меня кусок от класса для замера быстродействия так что я непеределывал ничего. Работает нормально
      
    Вызов Sleep(5)
      
    'возвращает время в милисекундах
    Private Declare Function timeGetTime Lib "winmm.dll" () As Long
    Sub Sleep(dblSecond As Double)
    'dblSecond- время в секундах на которое нужно подождать
    Dim lngTimeEnd As Long
    Dim lngTimeCur As Long
      
    lngTimeEnd = timeGetTime + (dblSecond * 1000)
    lngTimeCur = 0
    Do While lngTimeEnd > lngTimeCur
         lngTimeCur = timeGetTime
         DoEvents
    Loop
      
    End Sub


    Вопрос:

       Как сделать такую вещь: программа в процессе работы должна сделать паузу, ну скажем, на 2 сек. и в это время НИЧЕГО НЕ ДЕЛАТЬ! То есть просто подождать и продолжать выполнение работы.

    Ответ:

    Автор ответа: Игорь

        Для начала нужно объявить в форме или в модуле (тогда печатать Private или Public соответственно) в разделе "(Generals)" объявить API-функцию Sleep следующим образом:

    Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

        Теперь вызвать эту функцию: Sleep(количество миллисекунд), где количество милисекунд это число от 1 до ~64000. Для справки: 1 минута = 1000 миллисекунд.



    Вопрос:

       Как сделать такую вещь: программа в процессе работы должна сделать паузу, ну скажем, на 2 сек. и в это время НИЧЕГО НЕ ДЕЛАТЬ! То есть просто подождать и продолжать выполнение работы.

    Ответ:

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

    На примере я покажу, как можно реализовать функцию ожидания в VB. Вначале помести на форму таймер и установи его свойство Интервал = 1 и свойство Enable = False, две метки (Label1 и Label2) и кнопку. Напишите следуйщую подпрограмму и код события Таймер для таймера:
      
    Public Sub Wait(seconds)
         `включение таймера
         Timer1.enable = True
         `установка интервала таймера
         Timer1.interval = 1000 * seconds
         While Timer.Interval > 1
             DoEvents
         Wend
         `выключение таймера
         Timer1.Enable = False
    End Sub
      
    Private Sub Timer1_Timer()
         Timer1.Interval = 0
    End Sub
      
         Теперь можете использовать функцию Wait везде, где требуется какая либо задержка, например:
      
    Private Sub Command_Click()
         Label1.Caption = Now
         Wait (5)
         Label2.Caption = Now
    End Sub
      
    Вот и всё :)


    Вопрос:

          У меня установлен MSVB6 отдельно от VisualStudio6 (пиратский CD по 70р.). Программы работают, компилятся, запаковываются в дистрибутив c помощью Package and Deployment Wizard, который говорит, что не нашёл зависимостей (Missing Dependency Information) с библиотеками msado20.tlb и msstdfmt.dll. Как итог - дистрибутив не ставится на удаленном компьютере, выдавая ошибку при инсталляции. Помогите разобраться, в чем дело?

    Ответ:

    Автор ответа: Mihail Bykov

        Package and Deployment Wizard вообще по сути своей глючен. Как откомпилишь - возьми где-нить MSInstaller и запакуй все сам. Там мона и связи библиотек указывать и какие библиотеки в реестре регестрировать и как шареные их делать или как приватные. Деинсталлятор создает. Строка для поиска: isetup-2.0.17.exe
        Лично я ей только и пользуюсь... Вот и все. Можешь попробовать LSB02bt9.exe - она покруче, но посложнее в подготовке пакета.



    Вопрос:

       Кто мне скажет, как сделать так, чтобы при нажатии на кнопку у меня отдельно открывалась те файлы которые я укажу? типа

    Private Sub Command1_Click()
    Open C:\windows\desktop\cool proga.exe 'или htm, jpg
    End Sub

    Или чето типа того, я не знаю.
    Цель: сделать autorun на диск в виде простой VB-формы с кнопками.

    Ответ:

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

    Для запуска программы используется функцияShell с таким синтаксисом:

    Shell(Имя_Файла_программы[, Тип_Окна])

    В следуйщем фрагменте кода с помощю функции Shell запускается калькулятор:
      
    Private Sub Command1_Click()
    Shell (C:\windows\calk.exe, vbNormalFocus)
    End Sub


    Вопрос:

       Есть текстовые данные,вываливающиеся в Excel в таблицу. Нужно анализировать строки таблицы пусто/заполнено и сортировать заполненные в определ. порядке (сверху вниз подряд без пропусков)Где про это прочитать? Пример есть у кого-нить?

    Ответ:

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

        Первый же ответный вопрос -- в каком виде данные представлены в текстовом файле и как из этого текстового файла берутся? (можно ведь открывать текстовый файл с разделителями колонок как Excel'ный, или открывать как файл для последовательного чтения). У меня, собственно, куча самых разных примеров на эту тему (работа такая), все зависит от того, что надо. Анализировать же можно довольно просто -- при занесении данных в таблицу:

    Dim emptyRow As Boolean
    Dim i As Integer ' для нумерации строк исходного файла
    Dim j As Integer ' для нумерации столбцов
    Dim k As Integer ' для нумерации строк в выходном файле
    Dim dataStr As String
    '...
    'цикл заполнения соотв. ячеек значениями
    For i = 1 To
         emptyRow = True
         For j = 1 To
             'dataStr = Trim(...)
             If dataStr <> "" Then
                Cells(k, j).Value = dataStr
                emptyRow = False
             End If
         Next j
         If Not emptyRow Then k = k + 1 ' если строка не пустая увеличиваем счетчик строк в выходном файле
    Next i

    Потом упорядочить, зная количество записанных строк, довольно легко:

    Range(Cells(<N_перв_строки>, 1), Cells(<N_посл_строки>, <N_посл_столбц>)).Sort Columns(1)
    ' сортировка области ячеек по первому столбцу этой области


    Вопрос:

       я разаработакл кнопки и иконки для своего приложения. они у меня в гифе. в какой программе их пожно сохранить как .ICO или .CUR?

    Ответ:

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

    Зайди сюда(это не реклама) www.ufa.com.ua - и найди какойнить конвертор.


    Вопрос:

       я разаработакл кнопки и иконки для своего приложения. они у меня в гифе. в какой программе их пожно сохранить как .ICO или .CUR?

    Ответ:

    Автор ответа: Кирилл Братищев

    IconEdit Pro V5.0. Попробуй - мне нравится (она там еще много чего умеет).


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

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

    наверх


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

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