Книги
|
|
Переход на 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 можно найти
здесь.
наверх
Пример вызова справки из вашего приложения
Данный пример довольно прост - имеет всего три шага, но довольно часто задается "юными" программистами, создающими справочные файлы для своих приложений. Итак, вот что нужно для отображения в вашей программе файла Справки myfile.chm:
'Объявим переменную.
Const HH_DISPLAY_TOPIC = &H0
'Объявим API-функцию HtmlHelp.
Declare Function HtmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal
hwndCaller As Long, ByVal pszFile As String, ByVal uCommand As Long, ByVal dwData As Long)
As Long
'Создадим вызов HtmlHelp
Private Sub HH_DISPLAY_Click()
Dim hwndHelp As Long
'hWnd - переменная типа Long, содержащая указатель
формы,
'которое будет родительским к окну справки
'hwndHelp - будет содержать указатель созданного окна
Справки
hwndHelp = HtmlHelp(hWnd, "myfile.chm", HH_DISPLAY_TOPIC, 0)
End Sub
'Источник: http://www.relib.com/code.asp?id=360
наверх
Использование функции MessageBox в программе
В VisualBasic'е, когда вы вызываете функцию MsgBox,
все ваши работающие процессы в фоновом режиме
(счетчики, таймеры) приостанавливаются до тех
пор, пока вы не закроете сообщение. Для
преодоления данной проблемы существует
API-функция
MessageBox.
Следующий пример покажет разницу между двумя
методами. Добавьте на форме 2 элемента CommandButton,
элемент Label и элемент Timer.
Первая кнопка вызывает метод MsgBox, вторая -
API-функцию MessageBox.
Private Declare Function MessageBox Lib "user32" Alias
"MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As
String, ByVal wType As Long) As Long
Private Sub Command1_Click()
MsgBox "Timer ОСТАНОВЛЕН!"
End Sub
Private Sub Command2_Click()
MessageBox Me.hwnd, "Timer НЕ ОСТАНОВЛЕН!", "", vbOKOnly +
vbExclamation
End Sub
Private Sub Form_Load()
Timer1.Interval = 1
End Sub
Private Sub Timer1_Timer()
Label1.Caption = Time
End Sub
наверх
Открытие приложения на весь экран (full screen mode)
На одном из форумов по VB я увидел такой пример.
При нажатии на CommandButton 1 вы получаете
форму, развернутую на весь экран. Панель задач
Windows при этом будет скрыта. При нажатии на CommandButton
2 вы всего лишь получаете форму, также
развернутую на весь экран, но при этои панель
задач не спрятана.
Добавьте на форму 2 элемента CommandButton.
'ВАРИАНТ1
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal
hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As
Long, ByVal wFlags As Long) As Long
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As
Long
Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1
Const HWND_TOP = 0
Const SWP_SHOWWINDOW = &H40
Private Sub Command1_Click()
Dim ll_Width As Long
Dim ll_Height As Long
If Me.WindowState = vbMaximized Then
WindowState = vbNormal
End If
ll_Width = GetSystemMetrics(SM_CXSCREEN)
ll_Height = GetSystemMetrics(SM_CYSCREEN)
Call SetWindowPos(Me.hwnd, HWND_TOP, 0, 0, ll_Width, ll_Height, SWP_SHOWWINDOW)
End Sub
Private Sub Command2_Click()
WindowState = vbMaximized
End Sub
'ВАРИАНТ2
Но возможен и такой вариант: установите свойство
формы BorderStyle как 0-None и вставьте
следующий код
Private Sub Form_Load()
Me.Width = Screen.Width
Me.Height = Screen.Height
Me.Left = 0
Me.Top = 0
End Sub
наверх
Условная компиляция
Решил донести до вас правду об условной компиляции. Есть в бэйсике такая штука. Удобная временами. Что означает условная и для чего это надо в принципе?
Например, у вас есть программа, которая должна
работать как демо-версия и как полная версия.
Прекрасно, вы можете распространять полный код,
делая в нем проверку, какой тип версии сейчас
запущен. Однако вам боязно: вдруг сломают?
Условная компиляция - это возможность не
включать в код ненужные блоки. Или, более
приближенный к боевым условиям пример: В
программе полно отладочной информации - не
тащить же ее в реальный проект. Убрать - раз
плюнуть, но в какой-то
момент может и пригодится.
Условная компиляция дает нам возможность
избежать хранения отдельных версий в виде разных
проектов.
Вот вам для начала пример.
В модуле создаем паблик-процедуру:Public Sub WriteLog(MSG
As String)
Dim iFileNum As Long
const LogName = "AppLog" ' эту константу стоит убрать в
область деклараций модуля
iFileNum = FreeFile
Open App.Path & "\" & LogName For Append As iFileNum
Print #iFileNum, Format(Now, "mm/dd hh:nn:ss") & " " & MSG
Close #iFileNum
End Sub
Процедура делает элементарные вещи. Открывает
файл для записи и пишет туда что попросили. Штука
полезная для программ, работающих
самостоятельно, без участия человека.
Как будем ее вызывать:
#if isLog then
writelog "Сообщение для записи"
# endif
После чего идем в свойства проекта и в закладке
Make ищем поле для записи, обозначенное как Conditional
Compilation Arguments и вписываем туда
islog = 1
В этом случае после компиляции код будет
содержать вызов процедуры для записи в лог-файл.
Если же перед компиляцией изменить настройки
islog = 0,
код вызова включен не будет.
Можно писать туда несколько переменных islog (под
любым именем), разделяя каждую двоеточием :
наверх
Определение "ухода" и "возвращения" в программу
Иногда требуется определить, когда ваша
программа потеряла фокус, то есть стала
неактивной в данной момент программой. Также
этот пример показывает момент активизации вашей
программы.
В данном примере вам обязательно потребуется
дополнительный модуль, в который вы должны
вписать следующий код:
'КОД МОДУЛЯ
Private Const WM_ACTIVATEAPP = &H1C
Private Const GWL_WNDPROC = (-4)
Private Declare Function SetWindowLong Lib "user32" Alias
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As
Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias
"CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As
Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private m_lWndProc As Long
Public Sub WindowHook(hWnd As Long)
m_lWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf MessageCenter)
End Sub
Public Sub WindowFree(hWnd As Long)
SetWindowLong hWnd, GWL_WNDPROC, m_lWndProc
End Sub
Private Function MessageCenter(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As
Long, ByVal lParam As Long) As Long
If Msg = WM_ACTIVATEAPP Then
If wParam Then
Form1.OnAppActivate
Else
Form1.OnAppDeActivate
End If
End If
MessageCenter = CallWindowProc(m_lWndProc, hWnd, Msg, wParam, lParam)
End Function
'КОД ФОРМЫ
Private Sub Form_Load()
WindowHook hWnd
End Sub
Public Sub OnAppActivate()
MsgBox "Добро пожаловать назад!"
End Sub
Public Sub OnAppDeActivate()
MsgBox "Покидаете программу?"
End Sub
Private Sub Form_Unload(Cancel As Integer)
WindowFree hWnd
End Sub
наверх
Использование текста в качестве кода программы
В данном примере вам понадобятся следующие
элементы: ComboBox, TextBox, Label, CommandButton. В ComboBox
программа добавляет так называемые шаблоны,
Label отображает текущее состояние
выполнения кода, в TextBox'е содержится
непосредственно текст, являющийся кодом
программы, ну а CommandButton... и так понятно.
Как ни жаль, но всех возможностей функции EbExecuteLine
я не знаю. Как говорится, вам и карты в руки.
Чуть не забыл. Вам понадобится дополнительный
модуль в вашей программе.
'КОД МОДУЛЯ
Public Function secret() As String
secret = "this is a secret subroutine"
End Function
Public Sub secret2()
MsgBox "this is a secret subroutine 2"
End Sub
'КОД ФОРМЫ
Option Compare Text
Option Explicit
Private Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As
Long, ByVal Foo1 As Long, ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long
' For VB5 IDE
'Declare Function EbExecuteLine Lib "vba5.dll" (ByVal pStringToExec As Long,
ByVal Foo1 As Long, ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long
' FOR Access 97/VBE.dll clients like Word 97 and Excel 97
'Declare Function EbExecuteLine Lib "vba332.dll" (ByVal pStringToExec As Long,
ByVal Foo1 As Long, ByVal Foo2 As Long, ByVal fCheckOnly As Long) As Long
Function FExecuteCode(stCode As String, Optional fCheckOnly As Boolean) As Boolean
FExecuteCode = EbExecuteLine(StrPtr(stCode), 0&, 0&, Abs(fCheckOnly)) = 0
End Function
Private Sub Combo1_Click()
Text1.Text = Combo1.List(Combo1.ListIndex)
End Sub
Private Sub Command1_Click()
Dim res As Boolean
res = FExecuteCode(Text1.Text)
Label1.Caption = "Status = " & res
End Sub
Private Sub Form_Load()
Combo1.AddItem "?secret"
Combo1.AddItem "msgbox secret"
Combo1.AddItem "secret2"
Combo1.AddItem "For x=0 to 5:?" & Chr$(34) & "hello " &
Chr$(34) & "&x:next:beep"
Combo1.AddItem "sendkeys " & Chr$(34) & "{TAB}" & Chr$(34)
& ":sendkeys " & Chr$(34) & "{up}" & Chr$(34)
Combo1.AddItem "shell " & Chr$(34) & "calc.exe" & Chr$(34)
& ",vbNormalFocus"
Combo1.AddItem "shell " & Chr$(34) & "c:\windows\explorer.exe
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}" & Chr$(34) &
",vbNormalFocus"
Combo1.AddItem "form1.text1.visible=false"
Combo1.AddItem "form1.text1.visible=true"
Combo1.AddItem "form1.combo1.listindex=1"
Combo1.AddItem "msgbox app.Title"
Combo1.AddItem "form1.combo1.listindex=1:form1.command1.value=true"
Combo1.ListIndex = 0
Show
End Sub
наверх
Мои программы
BalloonMessage for MS Agent
BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels.
Автор: Шатрыкин Иван. Соавтор: Павел Сурменок.
наверх
Вопрос/Ответ
Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.
Вопросы:
Автор вопроса: Ellias
Ответ ожидается по этому
адресу
Как можно сделать в программе автооткрывание нода в тривью, при овере элемента над ним ? Типа, как сделано в любом браузере - тащу на папку эл-т, и она открывается спустя определенное время.
Автор вопроса:
Свиридов Игорь
Ответ ожидается по этому
адресу
1)как можно в одном окне просматривать и каталоги и файлы? Типа Dir и FileBox в одном. И вообще, кто-нибудь знает где можно найти исходники простенького файл-менеджера, а то изобретать велосипед нехота, устал я что-то :-)
2)Как можно просматривать иконки из dll-файлов?
Автор вопроса:
Demon
Ответ ожидается по этому
адресу
Помогите разработать Алгоритм Дейкстра а если укого нибудь исходник на VB если есть пришлите пожалуста очень нужно либо как сделать толко в подробном описание
Ответы:
Вопрос:
Как из VB достоверно определить, что устройство является реальным CD-ROMом, а не винчестером или имиджем?
Ответ:
Автор ответа:
LexA
Все очень просто, Иван, для этого надо воспользоваться , если конечно у тебя VB6, FileSystemObject (FSO) функциями
Вопрос:
Как из VB достоверно определить, что устройство является реальным CD-ROMом, а не винчестером или имиджем?
Ответ:
Автор ответа:
Alexander
Если на ощупь твёрдый и холодный, то это CDROM, а если тёплый и мягкий,...
А ва-абче, вы, ребятки, задолбали с "защитой", типа компашки "Руссобит", которая "заточила" свои "адаптэйты" под Вынь-98 и больше - ни гу-гу! Так что пользователи ME, 2000, XP могут не беспокоиться: им не следует покупать продукцию "Руссобита" ни в коем случае! Причём долбают то потом нас, тех, кто устанавливает и сопровождает системы, а не халтурщиков "Руссобитовцев", блин!
Вопрос:
Работаю с Oracle8(использую oracle data control)
Помогите сделать сортировку, так как используя order by это происходит очень медленно. Если цепляться с Oracle8 другими методами то скорость еще медленнее
Дайте пожалуйста совет!
Ответ:
Автор ответа:
Александр Горбылёв
Это может происходить по причинам (общий подход):
а) неправильного построения запроса: например, вместо того, чтобы использовать курсор сервера, используется курсор клиентской стороны, как следствие - см. пункт (в),
б) не использовать кэш на большое количество хранимых записей,
в) плохая работа сети из-за большого количества коллизий пакетов,
г) не используйте ODBC, а что-либо "по-прямее", типа провайдера курсоров,
д) неверное распределение нагрузки при мультисерверной обработке,
....
Вопрос:
Как на ВБ6 сделать кнопку, при нажатии на которую играла бы музыка?
Ответ:
Автор ответа:
quick
Option Explicit
Private Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long
Dim Result
Private Sub cmdPlaySound_Click()
Dim strSoundFile As String
Dim ReturnLength As Long
'
strSoundFile = App.Path & "\mySnd.wav" ' по этому пути должен лежать звуковой файл
Result = sndPlaySound(strSoundFile, 1)
End Sub
Вопрос:
Как на ВБ6 сделать кнопку, при нажатии на которую играла бы музыка?
Ответ:
Автор ответа:
LexA
Очень просто. На форму наносишь Picture или Image , вставляешь в них иконку (либо с определенной папки, либо из фаила *.REC) и на событие click объекта Picture или Image пишешь код для проигрывания музыки ( есть много срособов проиграть музыку в разных форматах , но это другой вопрос).
Вопрос:
Пишу программу. Прога живет в трее и должна выполнять кое какие действия в строго укаяанное польяователем время. К примеру каждый вторник в 12.00. Стандартный шедулер не подходит. Как вобще органияовать такие проверки. если проверять часто наверняка нагруяим систему, если редко можно пролететь со временем. Как быть? Как вобще устроенны планировщики ?
Ответ:
Автор ответа:
Шатрыкин Иван
Проверяй, например, каждые 10 секунд, если тебя это устроит. Нагрузим систему? Чушь! Твой процессор простаивает бОльшую часть времени. Только проверяй время по Timer, а не в цикле Do...Loop.
Вопрос:
Я ссылаюсь в программе на апи левой библиотеки(т.е. не системной), при этом в ходе выполнения программы мне сообщается что эта библиотека не найдена, хотя она лежит в папке с проектом. Чужая программа испольяует эту библиотеку бея всяких проблем.
Ответ:
Автор ответа:
]CBK[CRaSH
Кинь ты ее в windows\system если у тебя 9х и sustem32 если NT
Можете заполнить эту форму, либо отослать вопрос
СЮДА
Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
наверх