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


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
  • Несколько слов от автора:

       Очередной 21-й выпуск рассылки вышел. Присылайте материал.
    Читайте!


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




    О системе Эксперт
    - Привет, Серый.
    - Угу, привет. Ты проходи, садись, я щас, с функцией тут разберусь...
    - Да я на момент. Вопросец имеется.
    - Вопросец, вопросец... Так, тут переменная не объявлена... Вопросец... С вопросами в систему, к экспертам... А тут точку не поставил! Вот она где, соб-бака!!
    - Ты че, какая система? Ты о чем?
    - О! Все, работает... Чего ты говоришь?
    - Ты про каких это экспертов тут заикаешься?
    - А-а. А ты что, первый раз слышишь, что ли? Ты на СообЧа бывал?
    - Где?!!
    - Да вот, гляди. Щас соединимся... Во! 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, и получишь всю необходимую инфу. А вообще, ты лучше в следующий раз с вопросами не ко мне, а туда. Может, я и отвечу там.
    - А не проше тебе здесь ответить?
    - Э-э-э... Там я баллы зарабатываю...
    - А это еще зачем?
    - Ладно, мотай. Дома почитаешь, все о них узнаешь. У меня тут халтурка... Давай, пока.
    - Пока. А как ты экспертом там зарегился?
    - Иди, иди! Инфу читай...

    наверх


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

    • 17 декабря 2001 года - Последнюю неделю не было ни одного обновления - их не было по одной важной причине: не было времени. Как видите, я поменял дизайн сайта. Я счиаю, что так будет удобнее. Пока возможны небольшие неполадки в работе сайта, но максимум через неделю я их исправлю. Никаких новых материалов пока не добавлено.
    • 8 декабря 2001 года - Один новый контрол. Он позволяет преобразовать сумму в пропись.
      В разделе Юмор добавлен новый рассказ.
    • 7 декабря 2001 года - Добавил 4 примера. Один копирует в буфер обмена изображение формы. Второй сохраняет изображение формы в bmp файл. Третий отображает список всех подпапок в папке. А четвёртый пример - пример использования API-функций SetCursorPos и ScreenToClient.
    • 3 декабря 2001 года - В раздел Контролы выложил контрол для модифицирования менюшек.
      Пополнение в разделе Юмор.


    наверх


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

       16 декабря 2001 г. В прошлый раз я предложил создать новый раздел ЖЗП. Ну и где Ваши истории? Пришло куча писем - "классный раздел, будет интересно", но НИКТО не решился написать о себе. Я обиделся... Еще вот что, каждый день на сайт приходит более 130 посетителей, которые, как я понимаю, являются программистами или считают себя таковыми. Так вот если каждый из Вас хотя бы раз в месяц пришлет на сайт пример, совет, контрол или что-нибудь еще, то будет очень много материала. Вам же будет лучше и легче программировать! Присылайте, жду.  Ну да ладно, Новоселов А.Г. (интересно, а как же его зовут) прислал свой контрол, для решения задачки по запихиванию иконки в сис.трей (там где часики). И еще в разделе Статьи, добавил интересную статью Армена Мнацаканяна посвященную FSO - объектной модели файловой ситемы.
       10 декабря 2001 г. Сегодня всего одно обновление от Беляева Данилы контрол, эмулирующий работу обычного списка. Проект интересен чисто с технической точки зрения. Посмотрите. Теперь о некотором расширении сайта. Игорь прислал предложение создать новый раздел сайта ЖЗП (Жизнь Замечательных Программистов), в котором каждый сможет рассказать о себе. Пишите свою историю, как работаете, чем занимаетесь и т.д. Можно присылать истории своих друзей.
       02 декабря 2001 г. Зима пришла, у нас снегу уже море... Итак, обновления, начнем пожалуй с раздела  VB хитрости, там работа Игоря Малиновского, она касается тех, кто хочет устанавливать новые шрифты в систему, в общем, их надо не просто копировать в специальную папку, но и регистрировать, хитрость публикуется с примером. Stas(Sheff) Vorobiov прислал новый пример, и он очень интересный, пример показывает как манипулировать окнами в системе: закрывать, менять заголовки, рисовать на них и т.д. Ну и на закуску пример от Дещенко Дмитрия по поводу Alpha Blending. Да, чуть не забыл, Alex Murygin прислал новый код для совета про кнопку закрытия окна. Он пишет, что его код работает более корректно


    наверх


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

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


    наверх


    Изменение высоты выпадающего окна ComboBox'а

    Подгоняет высоту выпадающего окна ComboBox'а к высоте имеющихся строк. Видоизменив процедуру можно изменять размер окна как Вам вздумается.

    Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

    Public Sub ResizeCbo(cbo As ComboBox)
    Counter = cbo.ListCount
    cboLeft = cbo.Left / Screen.TwipsPerPixelX
    cboTop = cbo.Top / Screen.TwipsPerPixelY
    cboWidth = cbo.Width / Screen.TwipsPerPixelX
    cboHeight = cbo.Height / Screen.TwipsPerPixelX * Counter
    MoveWindow cbo.hwnd, cboLeft, cboTop, cboWidth, cboHeight, 1
    End Sub

    наверх


    Как создать фон с плавным переходом из синего в черный

    В режиме 256 цветов плавный переход от светло-синего к черного требует использования так называемых составных цветов (dithering colors). Метод line в Vsual Basic не позволяет прочерчивать прямые линии составным цветом, но разрешает заполнять таким цветом прямоугольники. При этом свойтсво DrawStyle формы надо установить как vbInvisible, а ее же свойство ScaleMode - как vbPixels. Свойство DrawStyle определяет стиль линий ( значение vbInvisible не дает обводить черным контуром каждый синий прямоугольник). Значение vbPixels свойства ScaleMode позволяет вычислять размеры прямоугольников в пикселях, избегая ошибок округления: благодаря этому прямоугольники располагаются точно один под дргим - без зазоров или наложения.
    Поместить на форму:

    Option Explicit

    Private Sub Form_Paint()
         Dim lY As Long
         Dim lScaleHeight As Long
         Dim lScaleWidth As Long
         ScaleMode = vbPixels
         lScaleHeight = ScaleHeight
         lScaleWidth = ScaleWidth
         DrawStyle = vbInvisible
         FillStyle = vbFSSolid
         For lY = 0 To lScaleHeight
             FillColor = RGB(0, 0, 255 - (lY * 255) \ lScaleHeight)
             Line (-1, lY - 1)-(lScaleWidth, lY + 1), , B
         Next lY
    End Sub


    наверх


    Изменения пути по умолчанию в диалоге открытия файла в VB

    Итак, никого не донимало поведение VB - когда при открытии каждого проекта
    он предлагает сделать это прямо из фолдера VB? После этого приходится долго выбираться
    "на поверхность" , а потом указывать путь к вашему каталогу с исходниками.

    А ведь это легко лечится. Просто в свойствах ярлыка, которым вы запускаете VB ,
    укажите точный путь к каталогу ваших рабочих проектов. Сделать это надо в текстбоксе "Рабочая папка" ("Start in")

    Если путь содержит пробелы - заключите его весь в кавычки.



    наверх


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

    Существует простейший способ как узнать разделители даты, времени и десятичной точки в Windows, не обращаясь при этом к функциям API. Он основан на функции Mid$. Принцип такой, берем строку текста содержащую разделитель, и проверяем что это за символ.

    DateDelimiter = Mid$(Format(Date, "General Date"), 3, 1)
    TimeDelimiter = Mid$(Format(0.5,  "Long Time"), 3, 1)
    DecimalDelimiter = Mid$(Format(1.1, "General Number"), 2, 1)

    В общем, всё очень даже просто.



    наверх


    Как узнать, когда запущенная Вами программа завершится

    Как дождаться завершения запущенной Вами программы? Ну для начала её надо запустить. Сделаем это так:

    'запустить программу
    hProg = Shell(App.Path & "\RunMe.exe", vbNormal)

        Сохраним hProg, этот описатель нам ещё пригодится. Теперь, с помощью функции IsRunning можно определить, работает программа или нет. Функция выглядит так (вместе с нужными объявлениями):

    Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Public Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As Long
    Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

    Const STILL_ACTIVE = 259
    Const PROCESS_QUERY_INFORMATION = 1024

    Public hProg As Long

    Function IsRunning(idProg As Long) As Boolean
        Dim hProc As Long, iRet As Long

        hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, idProg)
        If hProc <> vbNull Then GetExitCodeProcess hProc, iRet
        IsRunning = (iRet = STILL_ACTIVE)
        CloseHandle hProc
    End Function

        Итак, передаем IsRunning описатель запущенной программы hProg и, если программа все еще работает, то она возвратит True, если работа завершена, то False. Я не советую Вам делать для проверки IsRunning цикл Do Loop с телом DoEvents, это отнимает много ресурсов. Проверку лучше всего делать по таймеру, установив интервал в 1-2 секунду.

    наверх


    Книги

    Visual Basic 6.0 for application

       Книга является систематизированным справочником по всем элементам языка программирования Visual Basic (VB), входящим, как в автономную версию VB, так и в основные реализации Visual Basic for Applications.
       Помимо тех официальных сведений, которые можно найти в документации и в справочной системе, книга содержит конкретные примеры, рекомендации и маленькие хитрости программиста, а также поправки к справочной системе, которая, увы, не без ошибок.
       Книга предназначена для всех специалистов, занимающихся разработкой приложений с применением Visual Basic и Visual Basic for Applications.


    Король В.И., "КУДИЦ-Образ" - 2000, 448 стр.
    Стоимость: 113,87 р.
    Формат книги: 70х100/16
    Переплет: мягкий

    Win32 API и Visual Basic. / Для профессионалов /

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


    Д. Эпплман, "Питер" - 2001, 1120 стр.
    Стоимость: 489,08 р.
    Формат книги: нет данных
    Переплет: нет данных

    Азбука программирования в Windows 32 API

       Изложены вопросы создания программных приложений для Window95 и Windows NT. Описаны основные типы переменных, макросов, функций. Материал книги иллюстрируется многочисленными примерами. 1 Настоящее издание (второе вышло в 2000 г.) дополнено описанием тех возможностей Windows, которые не были упомянуты в предыдущих изданиях.


    Румянцев П.В., "Радио и связь" - 2001, 312 стр.
    Стоимость: 85,00 р.
    Формат книги: 60х88/16
    Переплет: нет данных



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

    наверх


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

    Группа по вирусам

       
    Группа предназначена для обсуждения всех вопросов, связанных с вирусами, антивирусами, методами борьбы с ними, как от них уберечься. Подписавшись на эту группу вы будете знать о самых последних способах борьбы с вирусами, о новых версиях антивирусов, о новых вирусах.

    Подписаться

    Трехмерное моделирование

       
    Хочешь создать свою вселенную, но не знаешь как, чем и где? Заходи, разберёмся... Свободное общение людей так или иначе связанных с 3D графикой. Здесь вы можете задать любые вопросы. Присоединяйтесь :)

    Подписаться

    Программирование на Visual Basic

       
    Всю жизнь мечтали программировать на Visual Basic? Приходите, получите бесценный опыт и очень полезные навыки в программировании. Напишем программу вместе — СообЧа. Ну, и, конечно, ответим на ваши вопросы.

    Подписаться

    Почта в интернете

       
    Эл. группа, предназначенная для обсуждения почтовых сервисов в интернете, а так же всех известных почтовых программ.

    Подписаться

    Заработок в сети

       
    Как вы относитесь к заработку в сети? Думаете ли вы, что все это ловкий обман или вы вообще ничего об этом не знаете? Хотите поделиться опытом, послушать других или просто выговориться?

    Подписаться


    наверх


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

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

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

       Объявляется конкурс на лучщий баннер для сайта VB Студия. Приз за лучший баннер - 5000 показов баннерообменной сети TLE. Вопросы и предложения по этому адресу

    наверх



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

    BalloonMessage for MS Agent

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

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


    наверх


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

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

    Вопросы:


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

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

       Как с помощью VB и API функции получить полный список процессов Windows?


    Автор вопроса: ДЕНИС

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

       ГДЕ ВЗЯТЬ API ДЛЯ WIN 2000 PROF?


    Автор вопроса: Artomonova, Galina

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

       Kak sdelat' Gantt (v VB6) ili gde vzyat' activX dlya nego? Nahozu vezde ssylku na ADDsoft.com, no tam tol'ko kitajskaja erunda. Help!!!


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

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

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


    Автор вопроса: Peter Salmin

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

       Моя программа (кроме всего прочего) экспортирует данные из таблицы Access97 в Excel. Помимо того, что не копируется автоинкрементное поле счетчика (для его создания в Excel у меня имеется отдельная процедура) - за один проход в цикле for; ещё пока не знаю как оформить названия столбцов Excel (т. н. "шапка") по имени полей в Access'овской таблице. Если у кого-то есть готовое решение, пришлите. Всем ответившим заранее благодарен.



    Автор вопроса: Peter Salmin

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

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


    Автор вопроса: Илья

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

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

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

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


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

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

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


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

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

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




    Ответы:


    Вопрос:

       Есть база данных в mdb формате. На форме в текстовом поле необходимо при вводе числа (или при помещении его из базы) отделять по три знака. Не 1234567890, а 1 234 567 890 . И как в текстовое поле ставить шаблон? То есть, что бы было __/__/__ - для даты.

    Ответ:

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

    VB 5.0
    Для шаблонов используй Masked Edit Control 5.0 - msmask32.ocx
    В этом контроле можно сделать любой шаблон .

    Например для даты , в поле MASK надо вписать '##/##/####'

    В help`е есть вся информация .


    Вопрос:

       Есть база данных в mdb формате. На форме в текстовом поле необходимо при вводе числа (или при помещении его из базы) отделять по три знака. Не 1234567890, а 1 234 567 890 . И как в текстовое поле ставить шаблон? То есть, что бы было __/__/__ - для даты.

    Ответ:

    Автор ответа: Иван Есаулков

    В конструкторе выбираеш сойства>данные>маска ввода и вводиш \ 999\ 999\ 999\ 900;0, сохраняя пробелы после слеша.


    Вопрос:

       Еть массив Arrray(100). Как можно удалить срез массива, например, с 40 по 70 элементы.

    Ответ:

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

    Воспользоваться недокументированной ф-цией VB TruncateArray(Arrray,40,70).
    А если серьезно то просто переписать элементы с 70 на 100 на место удаляемых:
    For lIdx = 71 To 100
        Arrray(lIdx-31)= Arrray(lIdx)
    Next
    redim preserve Arrray(69)



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

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

    наверх


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

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