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


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

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

С какой периодичностью Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."?
Каждый день
2 раза в неделю
Раз в неделю
Раз в две недели
Раз в месяц
Реже


В какой день (дни) недели Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."?
Понедельник
Вторник
Среда
Четверг
Пятница
Суббота
Воскресение


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

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

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

   Уже двенадцатый выпуск. В разделе "Вопрос/Ответ" скопилось многовато вопросов. Но и ответы там бывают! Обязательно туда загляните. Может быть Вы кому-нибудь поможете.
Присылайте материал. Читайте!


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




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

  • 19 октября 2001 года - Пополнение в Хитростях. Добавлено 4 хитрости.
    Давненько не обновлял раздел Windows Api. Сегодня добавил десяток описаний функций в этот раздел.
    В библиотеке кодов один новый код.
    В примерах тоже пополнение.
    И напоследок - добавлена cnfnmz Классы в Visual Basic.


наверх


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

   15 октября 2001 г. Здравствуйте, любители Visual Basic! Сегодня совсем мало обновлений. В Примерах можно посмотреть интересный пример: как сохранить картинку в формате GIF и загрузка файлов с FTP сервера. Мало? Сам знаю, что мало, но ничего не поделаешь, нет времени.
   08 октября 2001 г. Новые поступления на сайт! В Internet появился новый сайт по VB, он называется Использование VB, сходите, посмотрите, сайт только начал работу и информации там немного, но поддержать автора стоит. В Примерах ну очень полезный и забавный пример на тему анимации с использованием BitBlt, рекомендую всем посмотреть (смешной мужичек работает отбойным молотком!), там же новый пример на тему изменения атрибутов файла. Кто-нибудь знает как считать данные из BIOS? Внимание! "смертельный номер" пример читает из BIOS данные. В то же разделе интересный пример OCX, который эмулирует кнопки в стиле Pascal, и напоследок, пример реализации неограниченного Undo-Redo в текстовом редакторе.

наверх


Аналог функции Split для пользователей VB версии 5 и ниже

Функция Split появилась в VB6. Для пользователей VB5 и ниже функция, идентичная функции Split.

Public Function MySplit(Expression As String, Splitter As String) As Variant
Dim pos As Long
Dim posit As Long
Dim n As Long
Dim temp As String
Dim Split_() As String
Dim dowas As Boolean
pos = 1
posit = InStr(pos, Expression, Splitter)
Do While posit <> 0
dowas = True
n = n + 1
temp = Mid$(Expression, pos, posit - pos)
ReDim Preserve Split_(n + 1)
Split_(n) = temp
pos = posit + Len(Splitter)
posit = InStr(pos, Expression, Splitter)
Loop
If dowas = True Then
    temp = Mid$(Expression, pos, Len(Expression) - pos + 1)
    Split_(n + 1) = temp
Else
   ReDim Split_ (1)
   Split_ (1) = Expression
End If
MySplit = Split_
End Function


наверх


Определение часового пояса

Автор:
Глеб

Чтобы узнать часовой пояс на компьютере нужно написать вот так:

Option Explicit
Dim sti As SystemTimeInfo
Private Sub Command1_Click()
Set sti = New SystemTimeInfo
MsgBox "Название часового пояса на компьютере " & _
sti.CurrentTimeZoneName
MsgBox "Часовой пояс на компьютере отличается на " & sti.Bias & " _
минут от гринвича"
End Sub

Свойства класса SystemTimeInfo:
Bias (Long)\ - разность между временем UTC и текущем временем
CurrentTimeZoneName (String) - Название текущего часового пояса
DaylightBias (Long) - разность между временем UTC и местным (обычно принимает значение либо 0 либо -60. Когда летнее время активизировано, местное время переводится на час вперёд, следовательно разница между временем UTC сокращается на 60 минут)
DaylightTimeZoneName (String) - название часового пояса при переходе на летнее время
StandardBias (Long) - разность между временем UTC и местным при условии, что перехода на летнее время не было
StandardTimeZoneName (String) - название часового пояса при условии, что летнее время не активизировано
SystemDateTime (Date) - значение даты/времени , соответствующее UTC

наверх


Открытие и закрытие лотка CD-ROM

Для этого создайте на форме 2 кнопки и вставьте код:

Option Explicit

Public Declare Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" _
(ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long

Private Sub Command1_Click()
'Открыть дверцу CD-Rom:
Call mciSendString("Set CDAudio Door Open Wait", 0&, 0&, 0&)
End Sub

Private Sub Command2_Click()
'Закрыть дверцу CD-Rom:
Call mciSendString("Set CDAudio Door Closed Wait", 0&, 0&, 0&)
End Sub

наверх


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

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

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

наверх



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

BalloonMessage for MS Agent

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

Подробнее...


наверх


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

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

Вопросы:


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

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

   Необходимо обработать событие от мыши, на компоненте, который эти события не поддерживает.
Например, MaskEdit не имеет события dblClick...
Как это сделать с использованием API? Или без?


Автор вопроса: Дьяконов Алексей

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

   У меня такой вопрос: как менять IP через какой-то промежуток времени и как узнать что твой IP пытаются узнать?


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

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

   Есть прога в Excel, а доступ к коду VB запоролен (просит ввести VBAProject Password).
Нельзя ли как-то её взломать?
Есть ли подобные кряки?


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

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

   Нужно с помощью If...Else сделать так, чтобы чел нажимал кнопку, например В(русская раскладка), а писалась буква D. Даже не представляю как это осуществить.
И вот еще: надо, чтобы текст писался не токо в проге VB, но и в другихъ программах, типа WordPad, Word и тому подобное.
Как такое сделать, не представляю даже в теории. МОжет, кто поможет с обяснениями?



Автор вопроса: Геша

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

   Можно-ли приделать баяы Аксесса2000 к ВБ6, если можно, то как, если это невояможно в принципе - все равно напишите.


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

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

   Народ, помогите найти определитель матрицы nxn в VB, please!


Автор вопроса: Юрий

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

   Скажите пожалуйста, как распечатать на принтере всю таблицу MSFLEXGRID. По усолчанию принтер может печатать только содердимое одной ячейки


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

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

   Каким образом определить в 98 кто юзает твой сетевой ресурс (программно) подобно тому как это делает "сетевой монитор".
Где копать хоть?
Как отловить момент удаления файлов?
Отслеживание окна подтверждения удаления не предлагать.


Автор вопроса: Роман

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

   Скажи как можно изменить параметры шапки в DataGrid, имеется ввиду выравнить по центру, написать в две строки.


Автор вопроса: Anton Pronoza

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

   Хоть убей, не понимаю, как работает этот SETUP????


Автор вопроса: Роман

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

   Скажите как сделать в DataGrid название столбцов по середине.


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

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

   Надо преобразовать прогу с VBDOS в VB6. Проблема в том что там идет непрерывный вывод диаграммы псевдографикой со скроллингом экрана, а метод print для формы уводит вывод за ее предел. Как сделать аналог досовского print (вывод со скроллингом)?


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

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

   Знаю что можно, но как? Суть в следующем: есть программа написанная на FoxPro2.6 Знаю, что в VBA можно испольяовать коды написанные в FoxProподключив библиотеку. Какую? Не янаю.
Кто вкурсе, подскажите


Автор вопроса: Кононенко Роман

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

   Подскажите плз, как програмно поменять ориентацию бумаги в принтере по умолчанию, а то у мена DataReport не хочет отображать отчёты в ориентации Ландшафт?



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

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

   Кто мне поможет программно отключить нажатие клавиши Start на клавиатуре или хотя бы скажет ее код.


Автор вопроса: Дмитрий

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

   При выполнении фрагмента программы, который есть в любом учебнике, а также входит в справку Offica выскакивает ошибка "Ошибка компиляции: Недопустимая внешняя процедура."
Фрагмент программ:
Dim A As Variant
A = Array(10, 20, 30)
B = A(2)
Подскажите в чем причина данной ошибки.



Автор вопроса: Жариков Дмитрий

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

   Как получить список IP адресов или имен компьютеров, находящихся в локальной сети?


Автор вопроса: Карпова Елена

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

   Не могу включить CapsLock из программы (VB6):
SendKeys "{CAPSLOCK}", True
хотя SendKeys "%{F4}", True - отрабатывает нормально.
Не может это быть из-за использования программы "Опечатка", меняющей раскладку клавиатуры? Но я ее выключала, а строка не отрабатывала.


Автор вопроса: Чемерис В.Д.

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

   Как сгруппировать данные в DstsReport (например выводить список товаров, сгруппированный по видам и над каждой группой выводить название вида товара)


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

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

      Люди!!! Есть предложение создать ocx контрол для просмотра массивов от одномерного 1*n до матрици n*m на подобии msflexgrid контрола (с заголовками и всякими опциями) тока он будет изначально отображать лишь столько строк(s) на экране ,сколько входит в рабочую область , а затем при прокрутке будет выбираться из данного массива по s записей и отображаться с первой строки в контроле, а строки в контроле меняются тока при изменении размеров контрола . Это будет занимать гораздо меньше времени , чем копирование всего массива в мсфлексгрид . Или достать исходнини мсфлексгрида и чуть-чуть его переделать (тока где их достать). Я начал делать такой контрол, но ничего не получилось из этого хорошего



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

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

   1) Как быстро упорядочить(отсортировать) массив(Long) данных?
2) Как быстро удалить несколько(n) элементов этого массива?


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

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

   Как сделать на VB элемент управления ActiveX типа TreeView в такой иерархической системе, которая используется в Win98. Если можно покажите код.


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

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

   Вот еще один вопросик: как сохранять иконку из picture на диск через API(по типу SavePicture)?


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

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

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


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

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

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


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

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

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




Ответы:


Вопрос:

   Нужна функция округления чисел.

Ответ:

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

ROUND(<число>,<кол-в знаков после зпт>)


Вопрос:

   Я делаю прогу, которая работает с MTS (Microsoft Transaction Server)
У меня NT4.0 + Service Pack 6.a + SQL2000
Когда я устанавливал Option pack 4.0 (куда входит IIS и MTS)что- то некорректно установилось и MTS (mtxas.dll) не работет корректно.
Кто-то сталкивался с подобным?
Я думаю, что Option pack 4.0 надо устанавливать на версию не позже Service Pack 4.0. Я прав?


Ответ:

Автор ответа: Anvar Hudshamkulov

Важен ещё и порядок инсталляции. если сначала SP6a, а потом Option Pack, то нужно снова инсталлировать SP6a.
Option Pack нужно ставить на версию не позже SP3.


Вопрос:

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

Ответ:

Автор ответа: Sergey Y. Tkachev

Просто не получится.
Если нужен "продвинутый" грид, то стоит обратиться к разработчикам ActiveX компонент. Я бы посоветовал Infragistics или ComponentOne. Если говорить конкретнее, то можно использовать следующие гриды:

Sheridan DataGrid
ProtoView DataTable
Infragistics UltraGrid
Apex True DB Grid

Каждый из них имеет свои достоинства и недостатки. Чтобы понять, какой из них подходиит лучше, нужно попробовать поработать с каждым.

Ну, а если их не использовать, то придётся создавай свой грид. Думаю, что это потребует значительных затрат времени.


Вопрос:

   Прошу помочь в написании кода для работы с LPT портом, необходимо: переслать байт в порт, управлять линией STROBE.

Ответ:

Автор ответа: Кононенко Роман

www.cepera.h1.ru , там все посвящено устройствам подключения, не скажу что слишком просто, зато много :))


Вопрос:

   Как внедрить Word2000 на форму Access2000? Вместо поля Edit я хотел бы поместить Ворд для редактирования текста на форму Access'а.

Ответ:

Автор ответа: Михаил Ю. Белодед

Создай на форме контрол "Свободная рамка объекта" из панели элементов управления (или "Связанная....", если нужно присоединить к таблице - тогда там должно быть поле с типом "Объект OLE") А потом вставляй туда любые объекты, в.ч. и страницу Word2000 :-))


Вопрос:

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

Ответ:

Автор ответа: Кононенко Роман

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



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

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

наверх


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

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