VB Студия
Голосование: Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты. Subscribe.Ru увеличило максимальный размер рассылки до 100 кб. В связи с этим вопрос: Какого размера Вы хотели бы получать рассылку? В какой день (дни) недели Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."? С какой периодичностью Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."? Результаты голосования Доска почёта: Sergey Y. Tkachev Кононенко Роман Sergey Sapozhnikov Sobic Ссылки: |
Несколько слов от автора:
Немного увеличил размер рассылки.
Читайте! Содержание выпуска
Новости сайта VB Студия
наверх Новости сайта VB Line 05 ноября 2001 г. Во-первых, я получил сертификат "Visual Basic Programmer" уровня Master от eCertification.com. Поздравления принимаются по прежнему адресу shatrykin@mail.ru.Во-вторых, на сайте есть одна "обновка". Stas(Sheff) Vorobiov прислал интересный пример игры с использованием DirectX. 28 октября 2001 г. Представляю очень интересную статью: Динамическое создание ДТС-пакетов с помощью VB. Автор работы Андрей Чувахин. В статье показывается программное решение конкретной задачи по копированию данных из таблицы формата ДБФ в базу данных MS SQL Server. 27 октября 2001 г. Сегодня совсем мало обновлений, очень занят. Представляю пример в разделе Примеры как отправить письмо по электронной почте с помощью WinSock. Пример очень интересный, так как позволяет работать с почтой без использования программ посредников. 21 октября 2001 г. Новый сайт про ЭТО Технологии Программирования - Visual Basic, обязательно загляните. Для новичков в разделе Примеры как сделать калькулятор. В Советах можно узнать как открывается CD-ROM. В ActiveX очень хороший контрол для работы с анимационными GIF. наверх Модернизация контролов с помощью WithEvents Думаю временами всем нам не хватает в контролах какой -либо мелочи. К примеру какие -то действия при использовании текстбокса. Решение есть - можно написать процедуру и вызывать е как эвент для контролов. Собственно именно для этого и существует команда "WihEvents" К примеру хочется ограничить ввод в текстбокс только символов в верхнем регистре. Буквы в нижнем регистре должны быть автоматически преобразованы в верхний. Ну и еще при проходе мышки над текстбоксом - путь показывает координаты мышы в тултипсе Создаем стандартный EXE project, добавляем 4 текстбокса , добавляем class module. В Form1 добавляем код 'General Declarations Private clsTextBox1 As Class1 Private clsTextBox2 As Class1 Private clsTextBox3 As Class1 Private clsTextBox4 As Class1 Private Sub Form_Load() Set clsTextBox1 = New Class1 Set clsTextBox1.TextBoxCtl = Text1 Set clsTextBox2 = New Class1 Set clsTextBox2.TextBoxCtl = Text2 Set clsTextBox3 = New Class1 Set clsTextBox3.TextBoxCtl = Text3 Set clsTextBox4 = New Class1 Set clsTextBox4.TextBoxCtl = Text4 End Sub В Class1, добавим следующий код . Private WithEvents txt As TextBox Public Property Set TextBoxCtl(OutsideTextBox As TextBox) Set txt = OutsideTextBox End Property Private Sub txt_KeyPress(KeyAscii As Integer) '-- Преобразуем в верхний регистр KeyAscii = Asc(UCase$(Chr$(KeyAscii))) End Sub Private Sub txt_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) txt.ToolTipText = "X:" & X & " Y:" & Y End Sub Чтобы добавить что то еще - просто добавьте код в класс. Единственно что - эвент в классе случается после эвента в контроле. наверх Как оссоциировать тип файла со своей программой Функция, изменяющая настройки типа файлов в Windows: приложение запуска, иконку и т.д... Здесь показан пример изменения названия, иконки и приложения для файлов .TXT Подговте проект с формой. На форму поместите: - Кнопку с именем Command1 Добавте в форму: Private Declare Function RegCreateKey Lib "advapi32.dll" _ Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey _ As String, phkResult As Long) As Long Private Declare Function RegSetValueEx Lib "advapi32.dll" _ Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, _ ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, _ ByVal cbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" _ (ByVal hKey As Long) As Long Private Const HKEY_CLASSES_ROOT = &H80000000 Private Sub AssociateMyApp(ByVal sAppName As String, _ ByVal sEXE As String, ByVal sExt As String, Optional ByVal sIcon As String) Dim lRegKey As Long Call RegCreateKey(HKEY_CLASSES_ROOT, sExt, lRegKey) Call RegSetValueEx(lRegKey, "", 0&, 1, ByVal sAppName, Len(sAppName)) Call RegCloseKey(lRegKey) Call RegCreateKey(HKEY_CLASSES_ROOT, sAppName & "\Shell\Open\Command", lRegKey) Call RegSetValueEx(lRegKey, "", 0&, 1, ByVal sEXE, Len(sEXE)) Call RegCloseKey(lRegKey) If Len(sIcon) Then Call RegCreateKey(HKEY_CLASSES_ROOT, sAppName & "\DefaultIcon", lRegKey) Call RegSetValueEx(lRegKey, "", 0&, 1, ByVal sIcon, Len(sIcon)) Call RegCloseKey(lRegKey) End If End Sub Private Sub Command1_Click() AssociateMyApp "My New File App", "C:\File.exe %1", ".txt", "C:\File.exe,-1" End Sub наверх Подгоняет высоту выпадающего окна 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 наверх Определяет, соответствует ли имя файла маске Private Function IsMask(ByVal FileName As String, ByVal Mask As String) As Boolean 'объявляем переменные Dim i As Integer Dim pos As Integer Dim posit As Integer Dim curs As String Dim tmp As Integer Dim temp As String Dim j As Integer 'Заменяем идущие подряд несколько звёздочек на одну pos = 1 posit = InStr(pos, Mask, "**") Do While posit <> 0 temp = Left$(Mask, posit - 1) temp = temp & Mid$(Mask, posit, 1) temp = temp & Right$(Mask, Len(Mask) - (posit + 1)) Mask = temp posit = InStr(pos, Mask, "**") Loop 'Заменяем *? на * pos = 1 posit = InStr(pos, Mask, "*?") Do While posit <> 0 temp = Left$(Mask, posit - 1) temp = temp & Mid$(Mask, posit, 1) temp = temp & Right$(Mask, Len(Mask) - (posit + 1)) Mask = temp posit = InStr(pos, Mask, "*?") Loop 'Перебираем все символы в Mask For pos = 1 To Len(Mask) curs = Mid$(Mask, pos, 1) Select Case curs 'если символ "?", то это любой знак Case "?" j = j + 1 i = i + 1 'если символ "*", то Case "*" If pos = Len(Mask) Then 'Если это последний символ, отпускаем с богом i = i + (Len(FileName) - j) 'А если нет, то ищем символв FileName, 'стоящий в Mask за звездой Else tmp = InStr(pos, FileName, Mid$(Mask, pos + 1, 1)) 'Если символ не найден, то If tmp = 0 Then 'Значение функции = False IsMask = False 'Выходим из функции Exit Function End If 'i = i + кол-во непроверенных символов i = i + (tmp - (j + 1)) 'то же самое с j j = j + (tmp - (j + 1)) End If 'если символ не "*" и не "?", то Case Else j = j + 1 'если символ в FileName совпадает с символом 'в Mask, то If Mid$(FileName, j, 1) = Mid$(Mask, pos, 1) Then 'Увеличиваем счётчик попаданий i = i + 1 End If End Select 'завершаем цикл Next 'Если i соответствует длине FileName, то 'значение функции True, иначе False If i = Len(FileName) Then IsMask = True Else IsMask = False End Function наверх Книги Visual Basic 6.0 ( Руководство для программистов )
Язык программирования Visual Basic - мощный
инструмент разработки приложений для 32-разрядных систем Windows 95 и
Windows NT. Нет данных по
автору(ам), «БХВ - Санкт-Петербург» — 2000, 959
стр. SQL (Полное руководство)Второе издание существенно расширенное и обновленное описание языка SQL, являющегося основным инструментом работы с реляционными базами данных. Д. Р. Грофф,
«СПАРРК, Издательская группа BHV» — 2001, 816 стр. Анонсы эхо-конференций СообЧа Программирование на Delphi и Turbo PascalКонференция по программированию на Delphi и Turbo Pascal,
а также Win Api, решение вопросов возникающих при
программировании на этих языках. Приглашаются все
желающие от новичков до профессионалов! Подписаться Группа по вирусамГруппа предназначена для обсуждения всех вопросов,
связанных с вирусами, антивирусами, методами борьбы
с ними, как от них уберечься. Подписавшись на эту
группу вы будете знать о самых последних способах
борьбы с вирусами, о новых версиях антивирусов,
о новых вирусах. Подписаться наверх Доска объявлений Ищу телеработу.
Объявляется конкурс на лучщий баннер для сайта VB Студия. Приз за лучший баннер - 5000 баннеров баннерообменной сети TLE. Вопросы и предложения по этому адресу Требуется человек, знающий HTML для работы с сайтом группы СооБчаVB. Вопросы и предложения по этому адресу
Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Николай Коваль Ответ ожидается по этому адресу Как получить IP адресса компьютеров которые находятса в одной лок. сети с даным? Автор вопроса: NEV Ответ ожидается по этому адресу Скажите, пожалуйста, как узнать функции, содержащиеся в каком-либо DLL. Есть ли какие-нибудь декомпиляторы для DLL и где их можно достать? Автор вопроса: NEV Ответ ожидается по этому адресу Пожалуйста, помогите! Как на VB узнать загрузку процессора желательно не через реестр. Автор вопроса: Vint Ответ ожидается по этому адресу Когда-то давно (месяцев 8,5 назад) я вытаскивал с инета АктивИксу которая работала как таблица на форме, но при этом ей было совершенно наплевать к какому источнику данных она подстегнута. Работала и со стандартным Данные (VB6). Потом на корпоративном серваке была авария... Много чего погибло... В том числе и этот контрол (спасали-то документы, оракл, и прочую хрень)... Потом он был и вовсе забыт за ненадобностью. А неперь очень надо!!! Итак: .....АктивИксу которая работала как таблица на форме, но при этом ей было совершенно наплевать к какому источнику данных она подстегнута. Работала и со стандартным Данные (VB6)..... Автор вопроса: Юрий Ответ ожидается по этому адресу Здравствуйте. У меня к вам следующий вопрос.В VB можно создавать базы данных DAT.Но по видимому, в них существует ограничения по длинне единичной записи, так как при вводе достаточно большого количества символов в единичную запись выдается ошибка 'Неверная длинна записи', а при малом количестве все OK.Скажите пожалуйста как расширить длинну единичной записи (чем больше тем лучше). Автор вопроса: Igor Malinovsky Ответ ожидается по этому адресу Кто знает,как открыть запороленный*.mdb через DAO? Автор вопроса: Александр Ответ ожидается по этому адресу Подскажите пожалуйста, не видел ли кто библиотечки для работы с модемом и передачи файлов по модемной свяяи по протокалу типа Z-Modem. Ответы: Вопрос: Вопрос такой - как из программы сжать базу ACCESS - удалить физически все удаленные записи. Ответ: Автор ответа: Sergey Y. Tkachev Очень, ну просто очень просто. Dim OldName as String, NewName as String OldName = "СтараяБаза.mdb" NewName = "НоваяБаза.mdb" DBEngine.CompactDatabase (OldName, NewName) Вопрос: Как в VB организовать передачу данных по сети (например, по протоколу TCP/IP)? Ответ: Автор ответа: Sergey Y. Tkachev Воспользуйтесь Microsoft Winsock Control. Как это делать - описывать не буду, потому что информации об этом полно и в MSDN, и в сети. Просто приведу статью из MSDN To create a TCP server Create a new Standard EXE project. Change the name of the default form to frmServer. Change the caption of the form to "TCP Server." Draw a Winsock control on the form and change its name to tcpServer. Add two TextBox controls to the form. Name the first txtSendData, and the second txtOutput. Add the code below to the form. Private Sub Form_Load() ' Set the LocalPort property to an integer. ' Then invoke the Listen method. tcpServer.LocalPort = 1001 tcpServer.Listen frmClient.Show ' Show the client form. End Sub Private Sub tcpServer_ConnectionRequest _ (ByVal requestID As Long) ' Check if the control's State is closed. If not, ' close the connection before accepting the new ' connection. If tcpServer.State <> sckClosed Then _ tcpServer.Close ' Accept the request with the requestID ' parameter. tcpServer.Accept requestID End Sub Private Sub txtSendData_Change() ' The TextBox control named txtSendData ' contains the data to be sent. Whenever the user ' types into the textbox, the string is sent ' using the SendData method. tcpServer.SendData txtSendData.Text End Sub Private Sub tcpServer_DataArrival _ (ByVal bytesTotal As Long) ' Declare a variable for the incoming data. ' Invoke the GetData method and set the Text ' property of a TextBox named txtOutput to ' the data. Dim strData As String tcpServer.GetData strData txtOutput.Text = strData End Sub The procedures above create a simple server application. However, to complete the scenario, you must also create a client application. To create a TCP client Add a new form to the project, and name it frmClient. Change the caption of the form to TCP Client. Add a Winsock control to the form and name it tcpClient. Add two TextBox controls to frmClient. Name the first txtSend, and the second txtOutput. Draw a CommandButton control on the form and name it cmdConnect. Change the caption of the CommandButton control to Connect. Add the code below to the form. Important Be sure to change the value of the RemoteHost property to the friendly name of your computer. Private Sub Form_Load() ' The name of the Winsock control is tcpClient. ' Note: to specify a remote host, you can use ' either the IP address (ex: "121.111.1.1") or ' the computer's "friendly" name, as shown here. tcpClient.RemoteHost = "RemoteComputerName" tcpClient.RemotePort = 1001 End Sub Private Sub cmdConnect_Click() ' Invoke the Connect method to initiate a ' connection. tcpClient.Connect End Sub Private Sub txtSendData_Change() tcpClient.SendData txtSend.Text End Sub Private Sub tcpClient_DataArrival _ (ByVal bytesTotal As Long) Dim strData As String tcpClient.GetData strData txtOutput.Text = strData End Sub The code above creates a simple client-server application. To try the two together, run the project, and click Connect. Then type text into the txtSendData TextBox on either form, and the same text will appear in the txtOutput TextBox on the other form. Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
Выпуск подготовили: | Сурменок Павел и Шатрыкин Иван |