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


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

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

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


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

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

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

   Вышел новый выпуск. Уже восьмой.

   Присылайте информацию и читайте рассылку!


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




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

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

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



наверх

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

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

    наверх


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

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

    наверх


    Добавление программы в автозагрузку (в реестр).

    Option Explicit

    Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Const HKEY_LOCAL_MACHINE = &H80000002

    Private Sub AddToStartup(ByVal sDescription As String, ByVal sFile As String)
    Dim lRegKey As Long

    RegOpenKey HKEY_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion\Run", lRegKey

    If lRegKey Then
    RegSetValueEx lRegKey, sDescription, 0, 1, ByVal sFile, Len(sFile)
    RegCloseKey lRegKey
    End If

    End Sub

    наверх


    Динамическое добавление компонентов управления

        Ещё один совет от Дёмина Антона [http://demin.narod.ru]. Этот совет посвящен тем программистам, которые хотят, чтобы их программы работали быстрее - Динамическое добавление компонентов управления. Для чего? Дело в том, что формы, содержащие такие элементы управления загружаются на порядок быстрее. Итак: 

       Если у Вас уже есть, например, TextBox с именем TextBox1 и требуется при выполнении некоторого события динамически добавить еще один (или несколько) TextBox, то решить задачу можно так: установите свойство TextBox1.Index=1, тогда новые контролы можно будет создать в массиве (control array) при помощи выражения Load:

    Load Text1(2)
    Text1(2).Text = "First New Text Box"
    Text1(2).Top = 500
    Text1(2).Left = 20
    Text1(2).Visible = True

    для добавления следующего контрола измените Index 2 на следующее значение.

        Если данный метод с массивом Вам не подходит, то можно воспользоваться методом Add, который позволяет добавлять новые компоненты в коллекцию (controls collection). Например, для добавления кнопки на форму, используйте следующий код:

    Dim cmdButton as Object
    Set cmdButton = Form1.Controls.Add("VB.CommandButton", "newButton")
    cmdButton.Caption = "New Button"
    cmdButton.Width = 1200
    cmdButton.Height = 1100
    cmdButton.Visible = True

        Обратите внимание, что если Ваш компонент требует лицензии, то для работы с ним вам нужно дополнительно воспользоваться так называемой Licenses collection. Пример кода для работы с ней: Licenses.Add "MSFlexGridLib.MSFlexGrid.1"



    наверх


    Типы переменных

    Автор:
    Raven

    Visual Basic работает с 14 стандартными типами переменных.

    String Строковые переменные хранят символы. Один из способов обозначить данный тип переменной состоит в добавлении символа "$" к концу ее имени, например: AStringVariable$. Теоретически такая переменная может содержать до 2 миллиардов символов. ( А вы другой книжке у меня написано, что до 65535 символов... ) В любом случае на конкретном компьютере это число будет гораздо меньше из-за ограниченных объемов оперативной памяти, ресурсов Windows или числа символов, используемых в форме. Одно из наиболее основных применений строковых переменных состоит в выборе информации из полей ввода. Например, если есть поле ввода с именем Textl, то тогда оператор ContentOfTextlS = Textl.Text присваивает строку из поля ввода переменной в левой части данного оператора.

    Integer Целочисленные переменные могут хранить только относительно небольшие целые числа (в диапазоне от -32768 до +32767). Арифметические операции над такими числами выполняются очень быстро. Для обозначения такого типа используется символ "%": AnIntegerVariable% = 3

    Long Integer Данный тип впервые появился в языке QuickBASIC. В таких переменных хранятся целые значения от -2 147483648 до +2 147483647. Обозначается символом "&". Арифметические операции над такими числами выполняются тоже очень быстро, и при работе с процессором 386DX или 486DX существует лишь небольшая разница в скорости вычислений между Long Integer и Integer. ALongIntegerVariableS = 123456789

    Single Precision Идентификатором для данных чисел является символ "!". Данный тип переменной позволяет хранить дробные числа с точностью до семи цифр. Это означает, что если получается результат 12345678.97, то часть 8.97 не является точной. Результат может быть равен, к примеру, 12345670.01. Длина чисел может достигать 38 знаков. Вычисления с данными переменными тоже будут приблизительными. Более того, арифметические действия выполняются медленнее, чем с целочисленными переменными.

    Double Precision Переменные такого типа позволяют хранить числа с точностью до 16 цифр и длиной до 300 символов. Идентификатором является "#". Вычисления с ними тоже являются приблизительными, а скорость их относительно небольшая. В основном переменные типа Double Precision используются для научных расчетов.

    Currency Данный тип отсутствовал в версиях GW-BASIC и QuickBASIC. Он создан для того, чтобы избежать ошибок при преобразовании десятичных чисел в двоичную форму и наоборот. (Невозможно 1/10 представить как сумму 1/2,1/4, 1/8, 1/16 и т.п.) Данный тип может иметь до 4 цифр после запятой, и до 14 - перед ней. Внутри данного диапазона вычисления будут точными. Идентификатор представляет собой символ "@". Поскольку все арифметические операции, кроме сложения и вычитания, выполняются так же медленно, как и в случае переменных с двойной точностью, данный тип является предпочтительным для проведения финансовых расчетов. (Для тех, кто интересуется: данный тип использует целые числа из 19 разрядов, которые затем делятся на 10000. Это позволяет организовать 15 знаков до запятой и 4 после нее.)

    Date Этот тип данных позволяет хранить значения времени и даты в промежутке от полуночи 1 января 100 года до полуночи 31 декабря 9999 года. Такие значения в тексте программ обозначаются символами "#", например: Millenium = #January 1, 2000# Если вводится только значение даты, Visual Basic полагает, что время равняется 00:00.

    Byte Байтовый тип является новым в Visual Basic 5 и предназначен для хранения целых чисел от 0 до 255. Его использование позволяет сильно экономить оперативную память и уменьшать размер массивов по сравнению с предыдущими версиями Visual Basic. Кроме того, он используется при работе с двоичными файлами.

    Boolean Булев тип данных может хранить только два значения: True либо False. Его использование вместо целочисленных переменных является хорошим стилем программирования.

    Variant Данный тип добавлен в Visual Basic 5 из версии 2.0. Переменная типа variant может содержать данные любого типа. Если Visual Basic не знает тип принимаемых данных, необходимо использовать variant. Тип информации не имеет значения, поскольку variant может содержать любой тип данных (численный, дата/ время, строковый). Visual Basic автоматически производит необходимые преобразования данных, поэтому не стоит беспокоиться об этом. С другой стороны, можно использовать встроенные функции для проверки типа данных, хранящихся в переменной типа variant. Они позволяют легко проверить, правильно ли пользователь вводит информацию. Использование такого типа данных, как variant, замедляет работу программы, так как требуется время и ресурсы для операций преобразования типов. Кроме того, многие программисты понимают, что использование автоматических преобразований типов данных приводит к неаккуратному виду программ. Единственная причина в использовании variant состоит в возможных ошибках при преобразовании типов непосредственно программистом.



    наверх


    Как записать в реестр много ключей сразу?

    Автор:
    @LEXis

    С помошью редактора реестра создайте файл (import) и сохраните его в фолдере с программой. после этого для внесения сохранной информации в реестр ( без лишних вопросов пользователю)

      Dim strFile As String
      strFile = App.Path & "\ИмяЭтогоФайла.reg"
      If Len(Dir$(strFile)) > 1 Then
         lngRet = Shell("Regedit.exe /s " & strFile, vbNormalFocus)
      End If

    наверх

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

    BalloonMessage for MS Agent

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



    наверх


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

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

    Вопросы:


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

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

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


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

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

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


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

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

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


    Автор вопроса: Татьяна

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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


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

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

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




    Ответы:


    Вопрос:

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

    Ответ:

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

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


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

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

    наверх

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

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

    наверх



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

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