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


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

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



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

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • VB на русском
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • MDesign
  • 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 можно найти здесь.

    наверх


    Открытие ADO Recordset

    ADO требует, чтобы Recordset был закрыт перед открытием. Эта процедура предназначена для открытия рекордсета. Если он открыт, то он закрывается, а если он содержит те же данные, которые Вы запрашиваете, то вызывается метод Requery для перезапроса данных.


    Public Sub ADO_OpenRs(rs As Recordset, szSource As String, Optional bReadOnly = False)
         If rs.State = adStateClosed Or rs.Source <> szSource Then
             If rs.State <> adStateClosed Then rs.Close
             rs.Open szSource, gCn, adOpenStatic, IIf(bReadOnly, adLockReadOnly, adLockOptimistic)
         Else
             rs.Requery
         End If
    End Sub

    наверх


    DDE

    Небольшой пример использования DDE. DDE - это механизм для обмена данными между приложениями.
    Создайте 2 проекта (с именами "Project1" и "Project2"). В первом проекте у формы установить свойства LinkTopic="SYSTEM" и LinkMode=1. Добавьте на форму Label и установите свойство LinkItem="DDE".
    Во втором проекте добавьте TextBox и CommandButon (имена не изменяйте).
    Добавьте в проекты расположенный ниже код.
    Запустите первый проект (сервер DDE), затем второй (клиент DDE). Нажмите на кнопку - в TextBox на форме первого проекта появится строка, переданная из второго проекта.


    'Код первого проекта

    Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
         MsgBox "Received " & CmdStr, vbInformation
         Cancel = False
    End Sub


    'Код второго проекта

    Private Sub Command1_Click()
         Text1.LinkMode = vbLinkNone
         Text1.LinkTopic = "Project1|SYSTEM"
         Text1.LinkItem = "DDE"
         Text1.LinkMode = vbLinkManual
         Text1.LinkExecute "Hello World"
    End Sub

    наверх


    Уничтожение файла

    Уничтожение файла. Сначала файл заполняется информацией, а затем удаляется с помощью функции Kill.


    Sub DestroyFile(sFileName As String)
         Dim Block1 As String
         Dim Block2 As String
         Dim Blocks As Long
         Dim hFileHandle As Integer
         Dim i As Long
         Dim offset As Long
         
         Const BLOCKSIZE = 4096
         Block1 = String(BLOCKSIZE, "X")
         Block2 = String(BLOCKSIZE, " ")
         
         hFileHandle = FreeFile
         Open sFileName For Binary As hFileHandle
         
         Blocks = (LOF(hFileHandle) \ BLOCKSIZE) + 1

         For i = 1 To Blocks
             offset = Seek(hFileHandle)
             Put hFileHandle, , Block1
             Put hFileHandle, offset, Block2
         Next
         Close hFileHandle
         
         Kill sFileName
    End Sub

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


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

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

       Кто-нибудь что-нибудь знает о том как сохранять Avi-файлы из VB. И как использовать различные кодеки?


    Автор вопроса: Максим

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

       Кто-нибудь посоветуйте, куда поступить на программера дистанционно?
    Желательно на «вышку».
    Может придется в ЦКО при МГТУ, но это не высшее образование, после школы охота получить высшее образование.
    Только обязательно ДИСТАНЦИОННО!


    Автор вопроса: Максим

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

       image не отображают битые файлы, точнее, вообще, прога виснит.
    Как сделать, чтобыљ они отражались, а вместо недостающих пикселей был серый цвет, как в экплорер?
    Или какой контрол так сделает, только чтобы имел свойство стреч?


    Автор вопроса: ]CBK[C...R...a...S...H

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

       У меня опять СУПЕР МЕГА НАИСЛОЖНЕЙШИЙ ВОПРОС
    Кто-нибудь занимался программой для создания расписания занятий (поделитесь разработками или исходниками)
    Если кто-нибудь хочет попробовать помочь, то пишите


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

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

       Помогите разобраться вот с чем:
    Юзаю VB 6 & MS Access '97

    1. Есть код
    [Модуль]
    Option Explicit
    ' referenses MS DAO 3.6 Object Library
    Public db As Database, dbstring As String
    Public rs As Recordset
    [Форма]
    Private Sub btnSave_Click()
    On Error GoTo CuncelUpdate
    rs.Fields("ID") = Text1.Text
    rs.Fields("ragid") = Text2.Text
    rs.Fields("text") = Text3.Text
    rs.Update
    CuncelUpdate:
    MsgBox Err.Description
    End Sub
    Private Sub Form_Load()
    dbstring = App.Path & "/" & "db.mdb"
    Set db = OpenDatabase(dbstring)
    Set rs = db.OpenRecordset("test", dbOpenDynaset)
    rs.AddNew
    End Sub
    Так вот по нажатии btnSave выскакивает ПУСТАЯ мессага с кнопкой OK (тобишь без какого-либо сообщения об ошибках). Запись при этом сохраняется без каких-либо проблем. Как от этого избавиться? По идее если мессага выскакивает - значит какая-то ошибка? Но в БД состоящей из одной таблицы в три поля трудно допустить ошибку :))

    2. И может кто знает как в каком-нить Grid' е можно сделать ячейку с выпадающим списком (как в Access) с данными из другой таблицы. Поделитесь опытом, можно прямо на мыльницу.


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

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

       Хотелось бы узнать существуют уроки по Visual Studio.NET 7 или нет?
    Хотелось бы на них подписаться или скачать


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

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

       Встретилась такая ситуация
         
         Dim h As Long
         Dim bb As Long
         Dim b As BITMAP
         
         h = CreateCompatibleDC(0)
         b.bmBits = 0
         b.bmBitsPixel = 32
         b.bmHeight = 100
         b.bmPlanes = 1
         b.bmType = 0
         b.bmWidth = 100
         b.bmWidthBytes = ((((b.bmWidth * b.bmBitsPixel) + 15) \ 16) * 2)
         
         bb = CreateBitmapIndirect(b)
         SelectObject h, bb
         
         Dim h1 As Long
         Dim bb1 As Long
         Dim b1 As BITMAP
         
         h1 = CreateCompatibleDC(0)
         
         b1.bmBits = 0
         b1.bmBitsPixel = 16
         b1.bmHeight = 100
         b1.bmPlanes = 1
         b1.bmType = 0
         b1.bmWidth = 100
         b1.bmWidthBytes = ((((b1.bmWidth * b1.bmBitsPixel) + 15) \ 16) * 2)
         
         bb1 = CreateBitmapIndirect(b1)
         SelectObject h1, bb1
         
         BitBlt h, 0, 0, 100, 100, Picture1.hdc, 0, 0, vbSrcCopy
         BitBlt h1, 0, 0, 100, 100, h, 0, 0, vbSrcCopy
         
         BitBlt Picture2.hdc, 0, 0, 100, 100, h1, 0, 0, vbSrcCopy
         
         Picture2.Refresh
    ----------------------------
    Мешает то что из 32 надо сделать 16 бит
        (b.bmBitsPixel = 32
        b1.bmBitsPixel = 16)

    данный код не работает только из за этого. Ситуация такая: прога обрабатывает 32 битную картинку (хранит, сохраняет на HDD и т.д.) но ее надо вывести на монитор, соответственно 16 битный, без изменения в памяти исходной.
    Помогите кто может решить такую задачу, соображения желательно прислать на E-Mail так как нужно очень срочно.


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

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

       1. Расскажите, пожалуйста, как создать TRAIL ограничение в программе.

    2. Как отлаживать компоненты написанные на VB для ASP? Постоянно выгружать перед каждой поледующей компиляцией?


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

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

       Пришлите если есть, дкументацию по DirectDraw, или дайте ссылки.
    Желательно, чтобы информация было довольно обширной по охвату вопросов.


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

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

       Я недавно прочитал про спуфинг, ну и короче подумал: Если изменить свойство LocalIP у Winsock'а, это что и получиться тот самый спуфинг? То есть сервер будет слать ответ не мне, а на указанное IP? Если нет, то скажите что ещё нужно поменять:


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

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

       Я пишу HTML редактор, хочу сделать отмену действия и наоборот (отмену отмены действия). Как это сделать?




    Ответы:


    Вопрос:

       В МОДУЛЕ ПИШУ:

    Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
    Public AsciiZnak(255) As Integer

    Function KeyDruk() As String
          
        For i = 1 To 255 ' Prisvoenie
           If Not AsciiZnak(i) = GetKeyState(i) Then
              KeyDruk = Chr(i)
           End If
           AsciiZnak(i) = GetKeyState(i)
        Next i
                
    End Function

    В ПРОГРАММЕ ПИШУ:

    Private Sub Timer1_Timer()
    Dim a As String
    a = KeyDruk()
    Text1.Text = Text1.Text + a
    End Sub


    ВОПРОС:
    Почему при выполнении таймера он выдаёт один символ два раза? По идеи в модуле я написал всю проверку насчёт косяка.
    Менять интервал времени таймера не помогает, а если сделать уж очень большой интервал, то вообще функция не успевает следить за нажатием кнопок.
    Что делать?

    Ответ:

    Автор ответа: Andrew Isakov

    IMHO, дело в scan-кодах клавиатуры – нажатие и отпускание…


    Вопрос:

       Кто может оценить, насколько надежна защита программы путем ее привязки к серийному номеру компакт диска?

    Ответ:

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

    Боюсь, что такая защита не является защитой вовсе: все популярные программы для копирования дисков копируют, в том числе, и серийный номер исходного диска. Лучше воспользоваться программой для защиты от копирования, но и она не даст скопировать диск только тому, кто знает лишь пункт "копировать cd" в nero.


    Вопрос:

       Как можно воспроизвести звук (wav,mp3) в VB6? Желательно несколько способов.

    Ответ:

    Автор ответа: Old Krot

    You can use or MCI ,or function api, or shell to exe file of your player




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

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

    наверх


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

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