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


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

Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом.



Рассылки Subscribe.Ru
VB.NET-World
Новости сайта IgorykSoft и советы по программированию
DanSoft о Visual Basic
Visual Basic.NET Уроки.

Ссылки:

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

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

       Новый выпуск. Ничего нового в рассылке и на сайте не происходит...
    Читайте!


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




    Книги

    Переход на VB .NET. Стратегии, концепции, код (цена ~ 158 руб.)

    Эта книга была задумана как одна из первых книг о .NET, которая ознакомит читателя с основными идеями новой архитектуры и подготовит его к знакомству с более детальной литературой, например документацией Microsoft и ее толкованиями, которая неизбежно появится на рынке. Она поможет вам взглянуть на эту технологию с позиций ваших собственных рабочих планов и быстро освоить те концепции, которые покажутся необычными для большинства прогр...

    Автор(ы): Дан Эпплман, Издательство: Питер, 2002 г.


    Программирование на VB.NET. Учебный курс (цена ~ 119 руб.)

    Эта книга является вводным курсом по изучению языка программирования Visual Basic .NET. Даны основные принципы объектно-ориентированного программирования в контексте языка VB .NET, поскольку без хорошей подготовки в этой области невозможно в полной мере пользоваться всеми преимуществами VB .NET.
    Изложены азы всех аспектов языка, которыми должен владеть любой профессиональный разработчик VB .NET

    Автор(ы): Г. Корнелл, Дж. Моррисон, Издательство: Питер, 2002 г.


    VB.NET для разработчиков (цена ~ 125 руб.)

    Основная задача книги - быстро ознакомить разработчиков Visual Basic с изменениями в .NET Framework. Программисты, использующие Java, C++, Delphi или другие инструменты разработки приложений и интересующиеся Visual Basic или технологией .NET Framework, также найдут эту книгу полезной. Хотя книга посвящена Visual Basic.NET, ее основная цель - продемонстрировать взаимодействие Visual Basic и ...

    Автор(ы): Кит Франклин, Издательство: Вильямс, 2002 г.




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

    наверх


    VBNet CD 12 2002

       VBNet.RU представляет новый компакт диск "VBNet CD 12 2002". Диск был существенно переработан. Было добавлено 64 элемента:
    • Софт - 2
    • Информация - 1
    • Компоненты (ActiveX и .Net) - 20
    • Утилиты - 3
    • Книги - 1
    • Справочники - 5

       Хочу отметить большое обновление в разделе Компоненты - все добавленные компоненты распространяются по лицензии freeware! В разделе Справочники добавлено 5 справочников от Русского проекта (по функция и сообщениям API, MS Agent, FSO и функциям Windows).
       Также был добавлен новый раздел - MS Agent. Он содержит 28 персонажей для MS Agent, редактор персонажей, а также всё необходимое для того, чтобы MS Agent заговорил по-русски (Speech API, движок синтеза русской речи, русификатор интерфейса MS Agent и др.).

    Диск содержит:

    • Софт
      • Personal Web Server
      • Screen Activator
      • VS6 Service Pack 5
      • MDAC 2.6 Service Pack 2
      • И многое другое...

    • Информация
      • Самый популярный в рунете VB-сайт VBNet.Ru
      • Архив рассылки "Мир программирования VB и HTML"
      • Оффлайн журнал о VB "Visual Basic Forever!".
      • Архив конференции Fido.Ru.Visual.Basic.
      • Архив конференции SoobCha_VB.
      • И многое другое...

    • Копоненты
      • AdoDataNav control
      • AR Users Database Library
      • FastLib 2000
      • UltraWebGrid for .NET
      • FlexGrid for .NET
      • True DBGrid Pro
      • ActiveTreeView 1.04
      • И многое другое...

    • Утилиты
      • EasyPatch 2001
      • Source+ 2000
      • VBWatch
      • VBFriend
      • CodeSmart
      • StudioComplete
      • Wise for Visual Studio .NET

    • Книги
      • Учебник Visual Basic 6
      • Переход на VB .NET Стратегии, концепции, код (Дан Эпплман)
      • Visual Basic 5
      • Понимание SQL
      • Visual Basic Крепкий орешек
      • И многое другое...

    • Справочники
      • Функции Visual Basic
      • Функции Windows API:Сообщения
      • Объектная модель FileSystemObject
      • Microsoft Agent 2.0
      • Справочник по функциям Windows API
      • И многое другое...


       Полное содержание диска Вы можете скачать здесь.

       Диск распространяется по почте наложенным платежом.
       Цена: 60 рублей + 35 рублей (за почтовые расходы) = 95 рублей.
       Заказать диск можно в разделе Магазин нашего сайта, либо заполнив расположенную ниже форму:

    Ваш заказ: VBNet CD
    Стоимость: 95 рублей
    Фамилия:
    Имя:
    Отчество:
    E-mail:
    Почтовый индекс:
    Область (край):
    Город:
    Улица, дом, квартира:


    наверх


    Элемент управления Timer

    Элемент управления Timer (таймер) используется для выполнения действия через определенный промежуток времени. Основное свойство элемента - Interval - задает интервал времени, определяющий, как часто таймер должен уведомлять приложение. Свойство Interval задается в миллисекундах (1000 миллисекунд = 1 секунде). Хочется отметить, что максимально возможное значение данного свойства равно 65 секундам.

    Единственное событие таймера - Timer. Для того, чтобы как работает это событие, создайте новый проект, поместите на форму элемент Timer. Установите значение Interval равным 1000 (1 секунда). В событие Timer1_Timer вставьте следующий код:

    Form1.Caption = Time

    Запустите проект. Вы можете наблюдать, как через промежуток времени, равный 1 секунде меняется заголовок формы на текущее время вашего компьютера. Но если вы поставите значение Interval таймера равным 2000 или 10000, то заголовок формы будет меняться через 2 или 10 секунд.

    Далее показаны несколько примеров использования таймера.

    Реализация функции «ожидания» в VB

    Этот пример покажет, как можно реализовать функцию ожидания в VB. Вначале поместите на форму таймер (Timer1) и установите его свойство Enabled = False. Для тестирования процедуры добавьте две метки (Label1 и Label2) и командную кнопку (Command1) к форме. Напишите следующую подпрограмму и код события Timer для таймера:

    Public Sub Wait(seconds)
    Timer1.Enabled = True 'включение таймера
    Timer1.Interval = 1000 * seconds 'установка интервала для таймера
    While Timer1.Interval > 0
    DoEvents
    Wend
    Timer1.Enabled = False ' выключение таймера
    End Sub
    Private Sub Timer1_Timer()
    Timer1.Interval = 0
    End Sub

    Теперь можете использовать функцию Wait везде, где требуется какая-либо задержка, например:

    Private Sub Command1_Click()
    Label1.Caption = Now
    Wait (5)
    Label2.Caption = Now
    End Sub

    К примеру, необходимо чтобы каждые две минуты происходило какое-либо событие

    Недостатком данного метода является добавление в вашу программу дополнительных переменных. К тому же данная программа испытывалась в режиме тестирования, когда нагрузки на компьютер не было. И непонятно, как поведет себя эта программа в реальном режиме работы.

    Dim n As Long, s As Long
    Private Sub Form_Load()
    n = 1
    End Sub
    Private Sub Timer1_Timer()
    s = s + 1
    Select Case s
    Case 120 * n '120 - число в минутах
    Form2.Show 'событие: показать форму
    n = n + 1
    End Select
    End Sub

    наверх


    Word: Получение статистики открытого файла

    Данный пример покажет, как можно получить данные из свойств файла (как если бы вы выбрали через через меню Файл | Свойства.

    Sub Макрос1()
    Dim a As String
    On Error Resume Next
    Dim dp As DocumentProperty
    For Each dp In ActiveDocument.BuiltInDocumentProperties
    a = dp.Name & "__" & dp.Value
    Selection.TypeText text:=a
    Selection.TypeParagraph
    Next dp
    End Sub

    И если вам, к примеру, нужно получить количество страниц в файле вам нужно поступить вот так.

    Sub Макрос1()
    Dim a As String
    On Error Resume Next
    Dim dp As DocumentProperty
    MsgBox ActiveDocument.BuiltInDocumentProperties("Number of pages")
    End Sub

    В заключение привожу список возможных значений встроенных свойств в файле

    Title
    Subject
    Author
    Keywords
    Comments
    Template
    Last author
    Revision number
    Application name
    Last print date
    Creation date
    Last save time
    Total editing time
    Number of pages
    Number of words
    Number of characters
    Security
    Category
    Format
    Manager
    Company
    Number of bytes
    Number of lines
    Number of paragraphs
    Number of slides
    Number of notes
    Number of hidden Slides
    Number of multimedia clips
    Hyperlink base
    Number of characters (with spaces)

    наверх


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

    Синтаксис:

    ImageList1.ListImages.Add([Index],[Key],[Picture]), где
    [Index] - номер по списку расположения
    [Key] - назначение данному элементу свойство Key
    [Picture] - полный путь к необходимой картинке

    On Error Resume Next
    Dim img As ListImage
    Set img = ImageList1.ListImages.Add(1, "SpellCheck", LoadPicture("D:\t\2\SPELL.BMP"))
    Set img = ImageList1.ListImages.Add(2, "Open", LoadPicture("D:\t\2\OPEN.BMP"))
    Set img = ImageList1.ListImages.Add(3, "About", LoadPicture("D:\t\2\W95MBX04.ICO"))

    наверх


    Описание элемента Slider

    Расположите на форме элемент CommandButton а также элемент Label

    Элемент Slider устанавливает значение некоторой величины, перемещая бегунок между минимальным и максимальным значением. Пользоваться данным элементом очень просто. Вы устанавливаете минимальное/максимальное значение, а также устанавливаете значения свойств элемента SmallChange (минимальное приращение значения) и LargeChange (большое приращение значения).

    Пример: создайте новый проект, разместите на нем элемент Slider и 2 элемента Label. Вставьте следующий код:

    Private Sub Form_Load()
    With Slider1
    .Width = 4000
    .Max = 30
    .SmallChange = 3
    .LargeChange = 6
    End With
    End Sub
    Private Sub Slider1_Change()
    Label2.Caption = Slider1.Value
    End Sub
    Private Sub Slider1_Scroll()
    Label1.Caption = Slider1.Value
    End Sub

    Перемещая ползунок с помощью мыши, вы перемещаетесь ровно по одному делению. Кликая мышкой слева/справа от ползунка, вы перемещаетесь на столько делений, сколько указано свойством LargeChange. В нашем случае это 6. Если вы нажмете на клавиатуре на кнопки перемещения курсора (4 серых кнопочки со стрелками), то можете наблюдать перемещение ползунка элемента Slider на количество позиций, заданных свойством SmallChange, т.е. на 3 позиции.

    Как вы заметили, когда вы перемещаете ползунок с помощью мыши, значение элемента Label2 не меняется. Это связяно с тем, что событие элемента Slider Change - событие единичное. Оно возникает, когда пользователь отпускает кнопку мыши. Событие же Scroll происходит непрерывном при перемещении бегунка.

    наверх


    Как определить, какая из панелей кликнута

    Private Sub sbStatusBar_PanelClick(ByVal Panel As MSComctlLib.Panel)
    Select Case Panel.Index
    Case 1
    Case 2
        MsgBox "ЗДЕСЬ БУДЕТ КАЛЕНДАРИК", vbInformation
    Case Else
    End Select

    наверх


    Динамическое добавление панелей

    Dim mypanel As Panel
    Set mypanel = StatusBar1.Panels.Add() 'добавление панели
    mypanel.AutoSize = sbrSpring 'установка свойства АвтоРазмер
    mypanel.MinWidth = 1 'установка минимальной ширины
    Set mypanel = StatusBar1.Panels.Add(, , , sbrCaps) 'добавление панели, установка свойства включенной клавиши Caps
    Set mypanel = StatusBar1.Panels.Add(, , , sbrNum) 'добавление панели, установка свойства включенной клавиши Num
    mypanel.Bevel = sbrInset
    mypanel.Alignment = sbrRight 'установка выравнивания текста в панели
    StatusBar1.Panels(1).Text = "Status:" 'присвоение первой панели заголовка
    StatusBar1.Panels(2).Text = "" 'присвоение второй панели заголовка
    StatusBar1.Panels(1).AutoSize = sbrContents

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


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

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

       1.Как сделать так,чтобы при очередном клике по label для ввода символов в text, курсор распологался справа от введенго символа?
    Я пишу так:
      
    Private Sub Label1_Click()
    Dim strExp As String
       strExp = Left(Text1.Text, Text1.SelStart)
       strExp = strExp & " " & Label1 & ""
       strExp = strExp & Mid(Text1.Text, Text1.SelStart + 1)
       Text1 = strExp
    End Sub

    2.Что значит 6 ошибка-Overflow(переполнение)


    Автор вопроса: Бессонова Ксения

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

       Подскажите, пожалуйста, как в Visual Basic сделать гладкий график без углов. Очень надо. И еще не подскажете как на гафике раскрасить области разными цветами (естественно в зависимости от значений).


    Автор вопроса: I-Sof

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

       Кто знает как програмно добавить запись в реестр?
    Путь:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
    Мне нужно чтобы прога была в автозагрузке... Но нинаю как это зделать програмно. ПОМОГИТЕ........


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

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

       Народ помогайте! Зделал OCX (версии X), откомпелировал его, добавил в свою прогу - все отлично, все работает... Но вот понадобилось изменить код OCX'а... когда я его откомпелировал заново (версия X+1) то программа перестала работать, пишет что версия кодного из компонентов не подходит, даже несмотся на то, что я в свойствах этого "компонента" я пробовал ставить и Project Compatibility и даже Binary Compatibility.


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

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

       Подскажите - есть таблицы в HTML формате и их нужно "перевести" в xls формат.
    Проблема в том, что в ячейках HTML находятся десятичные числа (например 1.52) в одних ячейках и текст в других ячейках. Когда копируешь в ексель, то ексель числа воспринимает (формат ячейки - все форматы) как январь.52.
    Мне же нужно для обработки, чтобы текст в таблице оставался текстом, а числа 1.52 в 1,52 а не 1.52. Как это возможно решить с помощью макросов VBA.


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

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

       Вот решил написать прогу для CD-ROM'а. И хотел бы задать несколько вопросов.

       Как на VB в файл с произвольным доступом сохранить картинку ?
       Как определить серииный номер CD диска ?
       Как определить какой из дисков CD-ROM ? Например в систем диски A, B, C, D, E как определить на какой из них CD-ROM.
       Как в exe файл дописать какоу нибудь инфу и чтобы после этого он нормально запускался ? Как из exe прочитать эту самую инфу ?
       И последнее как работать с ресурсами ? Конкретно как сохранить в файл ресурса картинку (jpg) (если можно)? И как её отудова потом достать ?




    Ответы:


    Вопрос:

       В VB функция RND дает нормальное распределение. Каким образом можно
    перейти к другим видам распределения. И как по массиву точек можно
    определить распределение. Очень нужно.

    Ответ:

    Автор ответа: Марк

    Для работы с распределениями случайных величин VB не очень подходит.
    RND вообще-то дает равномерное распределение на отрезке(0,1). Есть формулы для пересчета его в другие распределения.
    А обратную задачу - по значениям найти распределение - решать намного труднее.
    Мой совет: воспользоваться специальной программой, в которой все это уже есть. Я, например, пользуюсь программой Statistica 5. Еще есть Statgraphics, SPSS и др.
    Даже в EXCEL есть специальный раздел по статистике. Я, правда, им не пользовался, но в книгах видел описание использования..


    Вопрос:

       Пишу эти строки и при копировании файла получаю через раз отказ в копировании файла
    VB6+SP5 Windows XP (сегодня все работает, а вчера сидет 4 часа и не поборол)

    Data1.DatabaseName = App.Path & "\ObRabot.mdb"
    Data1.RecordSource = "ObRabot"
    Data1.Refresh
    'Data1.Recordset.Close
    Data1.RecordSource = ""
    Data1.DatabaseName = ""
    Data1.Database.Close
    'Data1.Refresh
    FileCopy App.Path & "\ObRabot.mdb", App.Path & "\ObRabot_.mdb

    Ответ:

    Автор ответа: Nechaev Sergey

    Поставь паузу перед последней строкой. Похоже база не успевает закрыться, а при открытом файле доступ запрещен. Подожди пока файл будет закрыт и ОС получить сообщение об открытии доступа. Потом копируй.


    Вопрос:

       Мне нужно преревернуть рисунок этот рисунок танк. Вот мне нужно его поворачивать при нажатии клавиш как мне его повернуть

    Ответ:

    Автор ответа: Марк

    Надо сделать четыре картинки. Точнее, надо взять исходную картинку и сделать с помощью какого-нибудь графического редактора ее копии, повернутые соответственно на 90, 180 и 270 градусов (у меня этим занимается Presto! Image Folio LT, который пришел вместе со сканером).
    Записать картинки в файлы на магнитный диск в файлы, например, "Down.bmp", "Up.bmp", "Left.bmp" и ''Right.bmp".
    На форме размещаем элемент управления PictMain типа Picturebox - он будет принимать размеры наших рисунков. Устанавливаем свойства формы: KeyPreview - True, в этом случае она будет перехватывать нажатия клавишей. У элемента PictMain устанавливаем свойство AutoSize - True.
    Пишем программный код:

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyDown Then
            PictMain.Picture = LoadPicture(App.Path & "\Down.bmp")
        End If

        If KeyCode = vbKeyUp Then
             PictMain.Picture = LoadPicture(App.Path & "\Up.bmp")
        End If

        If KeyCode = vbKeyLeft Then
             PictMain.Picture = LoadPicture(App.Path & "\Left.bmp")
        End If

        If KeyCode = vbKeyRight Then
             PictMain.Picture = LoadPicture(App.Path & "\Right.bmp")
        End If

    End Sub

    Private Sub Form_Load()
        PictMain.Picture = LoadPicture(App.Path & "\Down.bmp")
    End Sub

    При загрузке формы грузится файл с исходной картинкой. При нажатии на кнопки Up, Down, Left, Right загружается соответствующая нажатой клавише картинка.




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

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

    наверх


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

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