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


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

    наверх


    Эксперт

    - Привет, Серый.
    - Угу, привет. Ты проходи, садись, я щас, с функцией тут разберусь...
    - Да я на момент. Вопросец имеется.
    - Вопросец, вопросец... Так, тут переменная не объявлена... Вопросец... С вопросами в систему, к экспертам... А тут точку не поставил! Вот она где, соб-бака!!
    - Ты че, какая система? Ты о чем?
    - О! Все, работает... Чего ты говоришь?
    - Ты про каких это экспертов тут заикаешься?
    - А-а. А ты что, первый раз слышишь, что ли? Ты на СообЧа бывал?
    - Где?!!
    - Да вот, гляди. Щас соединимся... Во! http://soobcha.ru, зришь?
    - М-да... Занятно. Так я с вопросом к тебе...
    - А я вот и говорю: туда иди, в систему "Эксперт", там ответят.
    - Это чайники, что ли, ответят?
    - Не сомневайся, ответят. Там у них такое наворочено... Короче, ты по почте вопрос свой задаешь - и все:)))))) Больше не изволь беспокоиться, там они сами будут искать ответ на твой вопрос. А через некоторое время вывалят тебе на ящик не один, а несколько ответов. Пользуйся и радуйся:)
    - А чего это они там такие добрые да услужливые? У них чего, своих проблем нет? Сколько я должен платить за такое трогательное беспокойство?
    - Ну, это немного. Меньше, чем ты думаешь:) Тебе достаточно только подтвердить правильный ответ. Давишь на соответствующую ссылку, дескать, вот этот ответ мне понравился, помог, и я доволен. Просто пустое письмо засылаешь к ним, и вся оплата. А если хочешь у них экспертом стать, то пожалуйста, регистрируйся и отвечай на вопросы.
    - Кем? Экспертом?
    - А что? Что-то ты ведь знаешь, не вчера за комп сел.
    - А на фига мне это надо? Разбираться с чужими проблемами... У меня своих - хоть отбавляй...
    - Ага. Вот ты только что спрашивал: а сколько? И если уж ты со своими проблемами обращаешься к людям, то ведь надеешься, что тебе помогут. А сам-то что, влом, что ли, помочь кому-то? Да ладно! Тебя, вобщем-то, никто и не тянет, не заставляет. А вот те, кому интересно, кому не жаль поделиться, те там и работают. Я, между прочим, давно уже с ними.
    - В смысле, экспертом, что ли, заделался? И сколько тебе платят?
    - А ты не прикалывай. Там никто никому не платит. А вот конкурсы, между прочим, проводят, и не хилые. Представляешь, за лучший ответ дают бесплатно три месяца платного хостинга, да еще домен регистрируют. За просто так. А вот тебе, если ты задашь самый лучший вопрос, тоже приз может выгореть.
    - Это как: лучший? На который никто ответить, что ли, не сможет? Так я щас таких вопро...
    - Причем тут это? Просто ты, если вопрос пишешь к ним, так сподобься хоть запятые в нужных местах поставить, там, грамотно, короче, обрисуй свой трабл.
    - Ну ладно, въехал. Ты мне вот лучше помоги с моим траблом. Мой Фотошоп не хочет по русски работать...
    - Ха, так этот трабл там уже сколько раз появлялся. У них на сайте и ответ есть... Вот, любуйся: Заходим в редактор реестра (regedit.exe). Находим ключ HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\Nls\Codepage В нем изменяем значение параметра 1252 с cp_1252.nls на cp_1251.nls. Перезагружаемся...
    - Понял... погоди, запишу...
    - Да чего записывать? Шагай домой, входи на сайт и копируй...
    - Да я ссылку запишу... Слушай, а как там в эту систему вопрос задать? Вообще, как она работает?
    - Так тут же, на сайте, все есть. А вообще, можешь по почте пустое письмо загнать на mailto:reply.infoexpert@soobcha.ru, и получишь всю необходимую инфу. А вообще, ты лучше в следующий раз с вопросами не ко мне, а туда. Может, я и отвечу там.
    - А не проше тебе здесь ответить?
    - Э-э-э... Там я баллы зарабатываю...
    - А это еще зачем?
    - Ладно, мотай. Дома почитаешь, все о них узнаешь. У меня тут халтурка... Давай, пока.
    - Пока. А как ты экспертом там зарегился?
    - Иди, иди! Инфу читай...

    наверх


    Сдвиг числа

    Небольшая функция. Осуществляет сдвиг на n-ное число бит. Параметры функции:
    lValue - Исходное значение
    lNumberOfBitsToShift - Количество бит, на которые нужно сдвинуть число
    lDirectionToShift - Направление сдвига (вправо или влево).


    Public Enum dcShiftDirection
         Left = -1
         Right = 0
    End Enum

    Public Function Shift(ByVal lValue As Long, ByVal lNumberOfBitsToShift As Long, ByVal lDirectionToShift As dcShiftDirection) As Long
         If lDirectionToShift Then
             Shift = lValue * (2 ^ lNumberOfBitsToShift)
         Else
             Shift = lValue \ (2 ^ lNumberOfBitsToShift)
         End If
    End Function

    наверх


    Скрыть/показать курсор мыши

    Этот пример покажет Вам, как скрыть или показать курсор мыши.


    'В General Declarations
    Private Declare Function ShowCursor& Lib "user32" (ByVal bShow As Long)


    'В код

    'Показать курсор
         ShowCursor (1)

    'Скрыть курсор
         ShowCursor (0)

    наверх


    Вычисление процента соответствия двух строк

    Функция Simil возвращает процент соответствия двух строк.


    Private b1() As Byte
    Private b2() As Byte


    Public Function Simil(String1 As String, String2 As String) As Double
         Dim l1 As Long
         Dim l2 As Long
         Dim l As Long
         Dim r As Double


         If UCase(String1) = UCase(String2) Then
             r = 1
         Else
             l1 = Len(String1)
             l2 = Len(String2)


             If l1 = 0 Or l2 = 0 Then
                 r = 0
             Else
                 ReDim b1(1 To l1): ReDim b2(1 To l2)


                 For l = 1 To l1
                     b1(l) = Asc(UCase(Mid(String1, l, 1)))
                 Next


                 For l = 1 To l2
                     b2(l) = Asc(UCase(Mid(String2, l, 1)))
                 Next
                 r = SubSim(1, l1, 1, l2) / (l1 + l2) * 2
             End If
         End If
         Simil = r
         Erase b1
         Erase b2
    End Function


    Private Function SubSim(st1 As Long, end1 As Long, st2 As Long, end2 As Long) As Long
         Dim c1 As Long
         Dim c2 As Long
         Dim ns1 As Long
         Dim ns2 As Long
         Dim i As Long
         Dim max As Long
         If st1 > end1 Or st2 > end2 Or st1 <= 0 Or st2 <= 0 Then Exit Function


         For c1 = st1 To end1


             For c2 = st2 To end2
                 i = 0


                 Do Until b1(c1 + i) <> b2(c2 + i)
                     i = i + 1


                     If i > max Then
                         ns1 = c1
                         ns2 = c2
                         max = i
                     End If
                     If c1 + i > end1 Or c2 + i > end2 Then Exit Do
                 Loop
             Next
         Next
         max = max + SubSim(ns1 + max, end1, ns2 + max, end2)
         max = max + SubSim(st1, ns1 - 1, st2, ns2 - 1)


    SubSim = max
    End Function

    наверх


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

    BalloonMessage for MS Agent

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

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

    наверх


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

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

    Вопросы:


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

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

       Пишу прогу которая работает с базой данных .mdb, и вот столкнулся с одной проблемой: прога должна работать с файлами которые выбирает пользователь... в VB проблем нет, но эргономичней было бы сделать на VBA прямо в Access, а там ни как не могу найти аналоги DriveList, DirList и FileList. Может плохо ищу? Помогите!


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

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

       Проблема с SQL-запросом. Формирую запрос
    SELECT SUM(сумма) FROM...
    , проверяю есть ли чего
    If ...Expr1000 NOT IS NULL then
    и время от времени при явном присутствии Expr1000, прога заявляет, что там NULL. Может кто-то встречался с таким глюком?


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

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

       Все видели как изменяется, например, размер рисунка в Word'е. А как сделать подобный контрол (или группу)? Мне удалось сделать только самое простое - увеличивать или уменьшать число кликами по стрелкам. Но еще хочется увеличивать это число с клавиатуры (клавишами управления курсором) и быстрое увеличение (уменьшение) числа - держишь кнопку, оно ияменяется, отпустил - остановилось...


    Автор вопроса: Вячеслав

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

       Как (в VB6) передать в массив каталог с файлами, т. е. что бы имена файлов стали индексированными переменными массива.


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

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

       Как комжно с помощью VB6 написать прогу, чтобы был клиент и сервер, а именно через клиент с компа, на котором наш сервак, качать файлы (желательно, чтобы выбирать самому).


    Автор вопроса: Vladimir [PRC]

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

       При установке MSDN ия Visual Studio 6.0 в конце установки, после копирования файлов выдается сообщение об ошибке:
    "CloseCollection g_ccolCollection.Open(collectionname) dwError=7"
    Что делать?


    Автор вопроса: Валера

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

       Можно ли узнать hwnd и (hdc) у ComboBox, ListBox, и других кнопок, используя АПИшные функции?


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

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

           В мой "Блокнот" встроен RichTextBox. Пишу в нём, например: "Маша мыла раму." Сохраняю и открываю. Вот что он мне покаяывает:

    {\rtf1\ansi\ansicpg1251\deff0\deftab720{\fonttbl{\f0\fnil MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fcharset204{\*\fname MS Sans Serif;}MS Shell Dlg;}}{\colortbl\red0\green0\blue0;}
    \deflang1049\pard\plain\f2\fs17 \'cc\'e0\'f8\'e0 \'ec\'fb\'eb\'e0 \'f0\'e0\'ec\'f3. \par }

    Подскажите, пожалуйста, как мне от этого избавиться и, если в нём такое возможно, поменять цвет шрифта? TextBox мне не подходит, т.к. мой отчёт в него не влазит.


    Автор вопроса: Taras Prikhodko

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

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


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

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

       Нужно на принтере вывести простой текст, но так, чтобы он был перевернут кверх ногами.


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

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

           Как можно запретить гриду изменять подписи к полям?
        На форме контрол DataGrid связанный с ADODC и TreeView. Есть элемент TabStrip с кучей вкладок. Когда кликаешь на вкладке TabStrip, ADODC принимает новый рекордсет из другой таблицы DataGrid, перестраивается на другую таблицу. Фрагменты кода инициализации Грида.

    'здесь привязываю грид к новому источнику
    Adodc1.RecordSource = strsql
    Adodc1.Refresh
    Set DataGrid1.DataSource = Adodc1
    'а здесь выставляю подписи к столбцам из другой таблицы
    rst.Source = "select * from t_filds where table_name='" & curTable & "'"
    rst.Open
    Do Until rst.EOF
             DataGrid1.Columns(rst.Fields(1).Value).Caption = rst.Fields(2).Value
              rst.MoveNext
    Loop

        На гриде после этого все подписи по-человечески. Проблема в следующем: как только я обновляю источник данных (пользователь выбрал другой "нод" в TreeView и надо отразить данные из той же таблицы, но другой фильтр), у меня слетают "человеческие" подписи и берутся из имён столбцов в базе данных. Как можно запретить гриду изменять подписи к полям? Ведь если в режиме дизайна их установить, то при изменении источника они не меняются!


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

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

       Как сделать свою собственную инсталяшку так , чтобы она запускала другой setup.exe? Использую InstallShield 8.0.




    Ответы:


    Вопрос:

           Вопрос по работе с Treeview.
        Можно ли сделать так, что бы плюсик у нода отображался независимо от того, есть внутри дети или нет?
        Проблема в том, что если не грузить сразу всё дерево из базы, потому что огромное оно, а только по уровням. что бы можно было на событие "Экспанд" загрузить детей и так далее. Без плюсика нет "экспанда". Сейчас выхожу из положения так: просто гружу один чилд в ноде, чтобы плюсик появился, а потом удаляю его перед загрузкой реальных детей. Но это муторное дело, приходится сначала сразу сворачивать нод, что б не прыгало всё дерево вверх-вниз, а потом опять разворачивать. Куча проверок и так далее.

    Ответ:

    Автор ответа: Andrey Gurinov

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


    Вопрос:

       Как можно создать доступ к БД, которой пользуются 2 проги одновременно, при этом коннект к ним должен быть открытым у обоих?

    Ответ:

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

    А что за база(Access/MSSQL)?


    Вопрос:

       Как определить из кода VB, открыт ли файл (файл MS Excel) другим пользователем?

    Ответ:

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

    Если ты говоришь только про Excel файлы, то у объекта Workbook есть св-во UserStatus(двумерный массив), который содержит имена/даты пользователей,которые получили доступ к файлу.


    Вопрос:

       В TextBox - е есть такая штука как
    Text2.SelText = "Текст" & vbCrLf
    здесь vbCrLf заменяет нажатую клавишу Enter - перходит на новую строку и скрол опускаеться вниз т.е. новая строка всегда на виду. А как сделать это в RichtextBox-е , там конечно переходит на новую строку, только скролл поднимаеться вверх т.е. остаеться на месте, хотя текст ушел далеко за пределы видимого.

    Ответ:

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

    Private Sub Text1_Change()
    Text1.SelStart = Len(Text1.Text)
    End Sub


    Вопрос:

           У меня на одном компе стоит прога, которая должна отправить картинку из Image1 на другой комп в другую прогу тоже в Image1. Но когда две проги соединились через WinSock, то не передают картинку, потому что картинка - это не String. Как мне переделать формат картинки из Image1, чтобы вышло String? Или подскажите свои методы передачи, попроще..

    Ответ:

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

    Можно сначала сохранить картинку на хард (SavePicture Image1.picture,"c:\image.bmp") а потом открыть сохраненый файл в какую нибудь string.




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

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

    наверх


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

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