VB Студия
VB Line
Голосование:
Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты.
С какой периодичностью Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."?
Результаты голосования
Доска почёта:
Sergey Y. Tkachev
Sergey Sapozhnikov
Sobic
|
Несколько слов от автора:
Этот выпуск немного опоздал по техническим причинам - в течении двух недель у меня не было доступа в сеть. Вопросы и ответы, а также любой другой материал, присланный Вами после 25 сентября не вошёл в этот и предыдущий номер рассылки, но я обязательно опубликую их в следующих выпусках. Читайте!
Содержание выпуска
О группе СообЧаVB
Группа VB. Заходите в гости. Здесь вы приобретете практические навыки по программированию на Visual Basic.
Как вы этого сможете достигнуть? Путем написания собственной серьезной программы. Чем обычно занимается
рядовой чайник-программист? Ну пишет там всякие приколы на VB... Ну ма-а-ленькую полезную программку
наваяет. А как получить навыки в создании серьезных программ? Правильно, путем создания серьезных программ. ;)
Но в одиночку вам с этим не справиться. Вот для этого в проекте СообЧа существует группа
программистов-чайников, которые занимаются разработкой серьезного софта на VB. Суть состоит в том, что
вам совсем необязательно знать все в Visual Basicе. Вам достаточно быть рядовым чайником и немного знать
операторы VB. Остальному научимся вместе. На данный момент в группе разрабатывается почтовая программа
под рабочим названием "Сообчайлер". Она будет уметь все, что умеет популярная программа The Bat и даже
намного больше. Есть сборник оригинальных идей, выдвинутых членами нашей группы, которые мы постараемся
реализовать все вместе. Проект разбивается на отдельные простые задачи. Такие как: проверка орфографии,
форма для написания нового письма, главное окно... и т.п. Каждую часть делает отдельный человек. Затем он
высылает сделанный модуль в группу и остальные просто присоединяют его к базовому проекту. Вам совсем не
обязательно четко представлять как это сделать. Достаточно просто начать и столкнуться с какой-нибудь
проблемой. Пусть это будет даже проблема типа "А как добавить новый модуль к проекту?". Все. Наткнулись... ;)
Дальше действуем по одной схеме - пишем письмо с описанием проблемы в группу и мы все вместе разбираемся в
проблеме. Таким образом все остальные получат ЗНАНИЯ и некоторые навыки в решении создавшихся проблем. Не
забывайте - все мы чайники. Не стоит бояться задать вопрос. Задавайте - а мы вместе попытаемся найти ответ.
Подписаться в группу (пустое письмо)
наверх
Новости сайта VB Студия
10 октября 2001 года - Добавлены
хитрости.
Вышел десятый юбилейный выпуск рассылки. Все выпуски рассылки можно посмотреть здесь
Сайт полностью избавлен от графических баннеров.
Остался только блок из трёх текстовых ссылок.
Грузиться будет быстрее!
Добавлена одна замечательная программа в раздел
Утилиты. Это русскоязычная
программа русского же разработчика для создания
файлов справки. Встраивается в Microsoft Word.
Работать с неё предельно легко! Обязательно
посмотрите. Размер около двух мегобайт.
Старые новости ущли в архив.
наверх
Новости сайта VB Line
17 сентября 2001 г. Раздел Программы пополнился новой версией программы Михаила Эскина для регистрации OCX и DLL.
15 сентября 2001 г. В разделе Советы обновление, кроме того добавлены несколько новых
примеров в Примеры, а также интересный OCX для работы
со Scin-ами в разделе ActiveX.
наверх
Ведение лог-файлов
Очень полезно, чтобы программа вела лог-файлы своей работы. Особенно записывала туда время
и на каком этапе произошел сбой. В дальнейшем это существенно облегчает поиск и исправление
ошибки. Вдобавок если вы программу делали на заказ, то цена такого протокола работы резко
возрастает. Все что нам нужно для работы - это ввести одну-две переменных и добавить одну
ма-а-ахонькую процедурку. Итак, поехали:
Для начала объявим переменную Private Logging As Boolean
Она будет служить нам для разрешения/запрета ведения подробного протокола работы. Это
необходимо, чтобы без нужды не писать в файл большое количество информации. Только время
запуска/завершения и код и описание ошибки, если таковая была. Добавим в программу
возможность запуска с ключом /l для ведения подробных логов. это придаст гибкость программе.
З.Ы. чтобы запустить программу с ключем /l создайте ярлык программе и добавте в пути к
программе (лейбл объект) этот ключ.
'Если программа была запущена с ключем /l, то записываем
'все действия программы в логи, иначе - записываются только
'контрольные точки и сообщения об ошибках
If Command$ = "/l" Then Logging = True Else Logging = False
If InStr(1, Command$, "/l") > 0 Then Logging = True Else Logging = False
Ну, а теперь осталось только добавить саму процедуру записи действия:
Private Sub Log(Promt As String)
'Процедура, которая ведет логи в зависимости от ключа в
'коммандной строке
'Если переменная установлена в False (запуск без ключа /l), то пропускаем
If Logging = False Then Exit Sub
Dim FileNum As Integer
FileNum = FreeFile
Open App.Path & "\checker.log" For Append As FileNum
Write #FileNum, " " & Promt
Close #FileNum
End Sub
Вот и все. Теперь используем ее везде, где хоть что-то делается. Это дабавляйте в том месте где
нужно добавить запись в лог-файл.
Log Now & "Получение почты" & vbCrLf
Однако для наиболее ответственных точек сделаем отдельную процедуру записи состояния
программы в этих точках LogGeneral.
Private Sub LogGeneral(Promt As String)
'Процедура, которая ведет логи.
Dim FileNumb As Integer
FileNumb = FreeFile
Open App.Path & "\checker.log" For Append As FileNumb
Write #FileNumb, " " & Promt
Close #FileNumb
End Sub
наверх
Как узнать расположение панели задач?
Таскбар может быть налепелен слева, справа, или даже сверху. А некоторые юзеры (никому не рассказывайте только) делают его высотой в 2 или 3 строки.
Таким образом, ваше приложение может не влезать в экран. Первый прмер позволит спрятать таскбар если он мешается , а вот мешается ли он - можно выяснить взяв его размеры и координаты:
Dim mLeft As Single
Dim mTop As Single
Dim mWidth As Single
Dim mHeight As Single
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lprect As RECT) As Long
Dim precTaskbar As RECT
Dim plngResult As Long
Dim phWndTaskbar As Long
phWndTaskbar = FindWindow("shell_trayWnd", "")
plngResult = GetWindowRect(phWndTaskbar, precTaskbar)
mLeft = precTaskbar.L * Screen.TwipsPerPixelX
mTop = precTaskbar.T * Screen.TwipsPerPixelY
mWidth = (precTaskbar.R - precTaskbar.L) * Screen.TwipsPerPixelX
mHeight = (precTaskbar.B - precTaskbar.T) * Screen.TwipsPerPixelY
Print mLeft, mTop, mHeight
End Sub
Private Sub Form_DblClick()
GetTascbarInfo
End Sub
наверх
Как спрятать панель задач
Итак, что мы видим перед собой на экране? Правильно Таскбар - эта та самая
полосочка внизу экрана, куда минимизируются окна. Первое желание - спрятать ее.
Скопируйте это на форму , запустите ее.
Private Declare Function FindWindow Lib "user32" _
Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" _
Alias "SendMessageA"(ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
'Заметьте, никаких Public декларайий внутри формы. Если функции
'обьявлены в модуле, то там можно делать их паблик
Private Const WM_SHOWWINDOW = &H18
Dim hWndTaskbar As Long
Dim bShow As Boolean
Private Sub Form_Click()
Dim r As Long
Dim i As Integer
i = 0
bShow = Not bShow
r = SendMessage(hWndTaskbar, WM_SHOWWINDOW, bShow, i)
End Sub
Private Sub Form_Load()
bShow = True
hWndTaskbar = FindWindow("shell_trayWnd", "")
End Sub
наверх
Доска объявлений
Объявляется конкурс на лучщий баннер для сайта VB Студия. Приз за лучший баннер - 5000 баннеров баннерообменной сети TLE. Вопросы и предложения по этому адресу
Требуется человек, знающий HTML для работы с сайтом группы СооБчаVB. Вопросы и предложения по этому адресу
наверх
Сумма прописью
cmdInput - CommandButton
txtInput - TextBox
txtOut - TextBox
Public Function Num3(trojka$, i%)
Dim sl$(1 To 3, 0 To 3)
sl$(1, 1) = "миллион "
sl$(2, 1) = "тысяча "
sl$(3, 1) = "рубль "
'---
sl$(1, 2) = "миллиона "
sl$(2, 2) = "тысячи "
sl$(3, 2) = "рубля "
'---
sl$(1, 3) = "миллионов "
sl$(2, 3) = "тысяч "
sl$(3, 3) = "рублей "
sl$(3, 0) = "рублей "
'---
ed$ = Right$(trojka$, 1)
des$ = Mid$(trojka$, 2, 1)
sot$ = Left$(trojka$, 1)
'---
If ed$ = "0" Then r3$ = ""
If ed$ = "1" Then If i% = 2 Then r3$ = "одна " Else r3$ = "один "
If ed$ = "2" Then If i% = 2 Then r3$ = "две " Else r3$ = "два "
If ed$ = "3" Then r3$ = "три "
If ed$ = "4" Then r3$ = "четыре "
If ed$ = "5" Then r3$ = "пять "
If ed$ = "6" Then r3$ = "шесть "
If ed$ = "7" Then r3$ = "семь "
If ed$ = "8" Then r3$ = "восемь "
If ed$ = "9" Then r3$ = "девять "
'---
If des$ = "0" Then r2$ = ""
s$ = des$ & ed$
If s$ = "10" Then r3$ = "десять "
If s$ = "11" Then r3$ = "одиннадцать "
If s$ = "12" Then r3$ = "двенадцать "
If s$ = "13" Then r3$ = "тринадцать "
If s$ = "14" Then r3$ = "четырнадцать "
If s$ = "15" Then r3$ = "пятнадцать "
If s$ = "16" Then r3$ = "шестнадцать "
If s$ = "17" Then r3$ = "семнадцать "
If s$ = "18" Then r3$ = "восемнадцать "
If s$ = "19" Then r3$ = "девятнадцать "
'---
If des$ = "2" Then r2$ = "двадцать "
If des$ = "3" Then r2$ = "тридцать "
If des$ = "4" Then r2$ = "сорок "
If des$ = "5" Then r2$ = "пятьдесят "
If des$ = "6" Then r2$ = "шестьдесят "
If des$ = "7" Then r2$ = "семьдесят "
If des$ = "8" Then r2$ = "восемьдесят "
If des$ = "9" Then r2$ = "девяносто "
'---
If sot$ = "0" Then r1$ = ""
If sot$ = "1" Then r1$ = "сто "
If sot$ = "2" Then r1$ = "двести "
If sot$ = "3" Then r1$ = "триста "
If sot$ = "4" Then r1$ = "четыреста "
If sot$ = "5" Then r1$ = "пятьсот "
If sot$ = "6" Then r1$ = "шестьсот "
If sot$ = "7" Then r1$ = "семьсот "
If sot$ = "8" Then r1$ = "восемьсот "
If sot$ = "9" Then r1$ = "девятьсот "
'---
If trojka$ <> "000" Then j% = (-1) * CInt(ed$ = "1" And des$ <> "1") _
+ (-2) * CInt((ed$ = "2" Or ed$ = "3" Or ed$ = "4") And des$ <> "1")
If j% = 0 And trojka$ <> "000" Then j% = 3
trojka$ = r1$ & r2$ & r3$ & sl$(i%, j%) 'формирование тройки цифр и
'слова,например-"123 тысячи"
End Function
'***
Private Sub cmdinput_Click()
w$ = txtinput.Text 'Входное число - текст типа "123.45",защита
'"от дурака" не сделана
'выделение рублей в записи числа и удаление левых пробелов
rubli$ = LTrim$(Left$(Str(Val(w$) * 100), _
Len(Str(Val(w$) * 100)) - 2))
cop$ = RTrim$(Right$(Str(Val(w$) * 100), 2)) 'выделение дробной части
'числа и удаление правых пробелов
Do While Len(rubli$) < 9
rubli$ = "0" & rubli$
Loop
res$ = ""
For i% = 1 To 3
trojka$ = Mid$(rubli$, 3 * i% - 2, 3)
Call Num3(trojka$, i%) ' Вызов функции формирования готовой тройки,
'типа "123 тысячи"
res$ = res$ & trojka$ ' Накопление таких троек
Next i%
res$ = UCase$(Left$(res$, 1)) & Right$(res$, Len(res$) - 1) 'Запись
'первой буквы res$ в верхнем регистре
c$ = " копеек" ' Блок добавления копеек
If (Right$(cop$, 1) = "1" And Left$(cop$, 1) <> "1") Then c$ = _
" копейка"
If ((Right$(cop$, 1) = "2" Or Right$(cop$, 1) = "3" Or _
Right$(cop$, 1) = "4") And Left$(cop$, 1) <> "1") Then _
c$ = " копейки"
If Left(res$, 1) <> "Р" Then res$ = res$ & cop$ & c$ Else _
res$ = cop$ & c$
txtout.Text = res$ ' Выход текста
End Sub
наверх
Мои программы
BalloonMessage for MS Agent
BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels.
наверх
Вопрос/Ответ
Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.
Вопросы:
Автор вопроса: Vasiliy
Ответ ожидается по этому адресу
Люди!!! Есть предложение создать ocx контрол для просмотра массивов от одномерного 1*n до матрици n*m на подобии msflexgrid контрола (с заголовками и всякими опциями) тока он будет изначально отображать лишь столько строк(s) на экране ,сколько входит в рабочую область , а затем при прокрутке будет выбираться из данного массива по s записей и отображаться с первой строки в контроле, а строки в контроле меняются тока при изменении размеров контрола . Это будет занимать гораздо меньше времени , чем копирование всего массива в мсфлексгрид . Или достать исходнини мсфлексгрида и чуть-чуть его переделать (тока где их достать). Я начал делать такой контрол, но ничего не получилось из этого хорошего
Автор вопроса: Vasiliy
Ответ ожидается по этому адресу
1) Как быстро упорядочить(отсортировать) массив(Long) данных?
2) Как быстро удалить несколько(n) элементов этого массива?
Автор вопроса: lues
Ответ ожидается по этому адресу
Надо нажимая на кнопку, запускать привязанный как то к ней вордовский документ в ворде.
Автор вопроса: Sergey
Ответ ожидается по этому адресу
Как создавать WinHelp файлы. И как сделать справку "Что это?"
Автор вопроса: Сергей
Ответ ожидается по этому адресу
Как сделать на VB элемент управления ActiveX типа TreeView в такой иерархической системе, которая используется в Win98. Если можно покажите код.
Автор вопроса: Сергей
Ответ ожидается по этому адресу
Прошу помочь в написании кода для работы с LPT портом, необходимо: переслать байт в порт, управлять линией STROBE.
Автор вопроса: Vasiliy
Ответ ожидается по этому адресу
Вот еще один вопросик: как сохранять иконку из picture на диск через API(по типу SavePicture)?
Автор вопроса: Богдан
Ответ ожидается по этому адресу
Как внедрить Word2000 на форму Access2000? Вместо поля Edit я хотел бы поместить Ворд для редактирования текста на форму Access'а.
Автор вопроса: Сергей
Ответ ожидается по этому адресу
Есть БД Access. Ия таблицы Tabl необходимо вытащить внешним модулем на VB5 проиявольную яапись с некоторым номером, для дальнейшей обработки. Помогите, кто янает.
Автор вопроса: ViDo
Ответ ожидается по этому адресу
Как можно определить номер страницы в Верде (проблема яаключается в том, что иногда нумерация начинается с нуля, например, а номер страницы в верхний/нижний колонтитул не вставлен - обращаться некуда)?
Автор вопроса: Артём
Ответ ожидается по этому адресу
Можно ли прочитать указанный мной сектор диска, если да то как?
Автор вопроса: Сергей
Ответ ожидается по этому адресу
Как_ сделать так, чтобы .wav файл играл как фоновая музыка и была слышен клик мыши_ на фоне музыки.
Автор вопроса: Алексей
Ответ ожидается по этому адресу
Как из-под Basic for MS Excel выдать через динамик звук определенной частоты и длительности ( например, нота ЛЯ: 440 Гц, 1 секунда ) ? А как это сделать через колонки ( наушники ) ?
Автор вопроса: Olya
Ответ ожидается по этому адресу
Внедряю .xls в Access (использую OLE). Сразу открывается этот файл. Каким образом заставить минимизироваться приложение Excel и как мне закрыть файл .xls или Excel. Перепробовала все команды из help'а, но они игнорируются.
Автор вопроса: Sobic
Ответ ожидается по этому адресу
Нужно вывести картинку запиханную в массив pic(width,height) as byte на экран, используя палитру Pal(255,2). Причем с максимальной скоростью. Пробовал преобразовывать в RGB картинку и выводить с помощью SetDIBitsToDevice, но получается медленно. Преобразования тормозят вывод. Может кто поможет?
Автор вопроса: Vasiliy
Ответ ожидается по этому адресу
Кто знает как сделать графическое сопровождение музыкального файла как в Win. Media Player.
Автор вопроса: Тимур
Ответ ожидается по этому адресу
Вояможно ли с Помощью VB соядать программу доявона по ppp-протоколу? Хотелось видеть исходный код, если это вояможно.
Ответы:
Нет ответов.
Можете заполнить эту форму, либо отослать вопрос СЮДА
Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
наверх
|