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


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

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

В какой день (дни) недели Вы хотели бы получать рассылку "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 - мания
  • VB по русски
  • Snoozex Design
  • Несколько слов от автора:

       Наверное Вы уже успели заметил, что вырос размер рубрики "Вопрос/Ответ" из-за того, что не на все вопросы есть ответы. Теперь в рассылке будут публиковаться вопросы и ответы только за последние 7 дней (со времени выхода предыдущего выпуска).
       Добавились два новых раздела. Первый раздел с книгами о VB от магазина "Колибри". Внимание! Если Вы купите книгу по ссылке из этой рассылки, то получите скидку в размере 5% от стоимости книги!
       Во втором новом разделе будут публиковаться анонсы эхо-конференций проекта СообЧа.
    Читайте!


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




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

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


    наверх


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

       21 октября 2001 г. Новый сайт про ЭТО Технологии Программирования - Visual Basic, обязательно загляните. Для новичков в разделе Примеры как сделать калькулятор. В Советах можно узнать как открывается CD-ROM. В ActiveX очень хороший контрол для работы с анимационными GIF.
       15 октября 2001 г. Здравствуйте, любители Visual Basic! Сегодня совсем мало обновлений. В Примерах можно посмотреть интересный пример: как сохранить картинку в формате GIF и загрузка файлов с FTP сервера. Мало? Сам знаю, что мало, но ничего не поделаешь, нет времени.

    наверх


    Как закрыть чужое приложение?

    cmdClose - CommandButton
    Text1 - TextBox Содержит название окна.

    Declare Function FindWindow Lib "user32" Alias _
    "FindWindowA" (ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long

    Declare Function PostMessage Lib "user32" Alias _
    "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
    ByVal wParam As Long, lParam As Any) As Long

    Public Const WM_CLOSE = &H10

    Private Sub cmdClose_Click()

    Dim winHwnd As Long
    Dim RetVal As Long

    winHwnd = FindWindow(vbNullString, Text1.Text)

    Debug.Print winHwnd

    If winHwnd <> 0 Then
    RetVal = PostMessage(winHwnd, WM_CLOSE, 0&, 0&)
    If RetVal = 0 Then
    MsgBox "Ошибка."
    End If
    Else
    MsgBox Text1.Text + " не открыт."
    End If

    End Sub

    наверх


    Как определить, открыта ли программа?

    Option Explicit

    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

    наверх


    Выравнивание меню по правому краю

    Добавьте на форму любое меню, состоящее из скольки угодно пунктов, а также одну кнопку Command1. Затем внесите в модуль кода формы следующее:

    'Необходимые нам API функции
    Private Declare Function GetMenu Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function GetMenuItemInfo Lib "user32" Alias "GetMenuItemInfoA" _
    (ByVal hMenu As Long, ByVal un As Long, ByVal b As Boolean, lpMenuItemInfo _
    As MENUITEMINFO) As Long
    Private Declare Function SetMenuItemInfo Lib "user32" Alias "SetMenuItemInfoA" _
    (ByVal hMenu As Long, ByVal un As Long, ByVal bool As Boolean, _
    lpcMenuItemInfo As MENUITEMINFO) As Long
    'Константы
    Const MIIM_TYPE = &H10
    Const MFT_RIGHTJUSTIFY = &H4000
    Const MFT_STRING = &H0&
    'Тип MENUITEMINFO
    Private Type MENUITEMINFO
    cbSize As Long
    fMask As Long
    fType As Long
    fState As Long
    wID As Long
    hSubMenu As Long
    hbmpChecked As Long
    hbmpUnchecked As Long
    dwItemData As Long
    dwTypeData As String
    cch As Long
    End Type
    'При нажатии на кнопку меню перескочит из левого края в правый
    Private Sub Command1_Click()
    Dim MnuInfo As MENUITEMINFO
    Dim mnuH As Long, MyTemp As Long
    mnuH = GetMenu(Me.hwnd)
    MnuInfo.cbSize = Len(MnuInfo)
    MnuInfo.fMask = MIIM_TYPE
    'Если вы хотите выравнять только часть пунктов меню, тогда замените в следующей
    'строке, а также в строке над End Sub число 0 на число пунктов, которое вы хотите
    'оставить слева
    MyTemp = GetMenuItemInfo(mnuH, 0, True, MnuInfo)
    MnuInfo.fType = MFT_RIGHTJUSTIFY Or MFT_STRING
    'Вам также надо заменить "MenuCaption" на имя пункта, которое будет крайним слева
    'в новой расстановке
    MnuInfo.cch = Len("MenuCaption")
    MnuInfo.dwTypeData = "MenuCaption"
    MnuInfo.cbSize = Len(MnuInfo)
    MyTemp = SetMenuItemInfo(mnuH, 0, True, MnuInfo)
    MyTemp = DrawMenuBar(Me.hwnd)
    End Sub

    наверх


    Модернизация контролов с помощью 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


    Чтобы добавить что то еще - просто добавьте код в класс. Единственно что - эвент в классе случается после эвента в контроле.

    наверх


    Книги

    Visual Basic 6.0 ( Руководство для программистов )

    Фотография книги Язык программирования Visual Basic - мощный инструмент разработки приложений для 32-разрядных систем Windows 95 и Windows NT.
    В книге рассматриваются как фундаментальные понятия и темы, так и сложные вопросы, адресованные профессиональным программистам.

    Нет данных по автору(ам), «БХВ - Санкт-Петербург» — 2000, 959 стр.
    248,19 руб. - 5% = 235.6 руб.

    SQL (Полное руководство)

    Фотография книги Второе издание существенно расширенное и обновленное описание языка SQL, являющегося основным инструментом работы с реляционными базами данных.

    Д. Р. Грофф, «СПАРРК, Издательская группа BHV» — 2001, 816 стр.
    343,08 руб. - 5% = 325.85 руб.


    наверх


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

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

       
    Как позвонить на телефон в другом городе через интернет? Какой программой просмотреть файлы *.wmv? Отчего текст печатается закорючками? В этой группе вы сможете задать любые интересующие вас вопросы. Чем сможем — поможем!

    Подписаться

    Железо

       
    Среди людей, имеющих компьютеры, я еще не встречал таких, которые не задавали бы следующие вопросы: «Как сделать, чтобы мой компьютер работал быстрее? Нет, еще быстрее… И еще… А ничего не сгорит?», «Хочу поменять материнку. Какую лучше взять? Кто может поделиться опытом?», и т.д. Если вас мучают такие вопросы — то вам сюда. Группа предназначена для обсуждения компьютерного железа, в том числе апгрейда (модернизации) и оверклокинга (разгона).

    Подписаться

    наверх


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

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

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

    наверх



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

    BalloonMessage for MS Agent

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

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


    наверх


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

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

    Вопросы:


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

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

       Расскажите пожалуйста, как управлять прерываниями компьютера из VB.


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

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

       Вы не подскажите как научить VB копировать каталоги и работать с архиватором.
    Я только начинаю работать с VB и хотел написать программу резервного копирования.


    Автор вопроса: Sergey Broukhis

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

       Не могу найти, что нужно и как писать код для ловли всех (или почти всех) прерываний от клавиатуры и работы с ними.


    Автор вопроса: Шурик

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

       Как опубликовать DataReport в Word?




    Ответы:


    Вопрос:

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

    Ответ:

    Автор ответа: Самохин Владимир

    Попробуй включить обрабоку нажатия кнопки мыши в форме, но в обработчике событий включи условие - Выполнить данную процедуру только если курор мыши находится в определенной области формы, т.е. над каким либо компонентом, если это не так то выполнять обычную обработку событий.
    Сам не пробовал, но думаю, что должно получится.


    Вопрос:

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

    Ответ:

    Автор ответа: Andrew S. Arutunyan

    Никак ты не узнаешь, потому что адрес узнают не у тебя, а у DNS серверов, которых милионы.


    Вопрос:

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

    Ответ:

    Автор ответа: Yury Yurchenko

    Есть программка Advansed VBA Password Recovery.
    Правда, она отламывает только коротенькие пароли.
    Она доступна по адресу http://vb-studio.boom.ru/utils.htm


    Вопрос:

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

    Ответ:

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

    Я делаю так: в меню Разработать>Ссылки выбираешь Microsoft DAO 3.6 Objekt Library или какая там у тебя версия. Создаешь в проекте модуль и в нем пропизываешь следующее:
      
    Public strSQL As String 'Переменная создания запроса
    Public rs As Recordset 'Переменная результата запроса
    Public DB As Database 'Переменная ссылки на базу данных
    Public ws As Workspace 'Переменная ссылки на рабочую область
      
    Sub DB_Open() 'Открытие базы данных
    Set ws = DBEngine.Workspaces(0)
    Set DB = ws.OpenDatabase("имя_базы.mdb")
    ws.Databases.Refresh
    End Sub
    Sub DB_Close() 'Закрытие базы данных
    ws.Databases.Refresh
    DB.Close
    ws.Close
    End Sub
    Sub RS_Load() 'Зпрос на чтение
    Set rs = DB.OpenRecordset(strSQL)
    End Sub
    Sub DB_Update() 'Зпрос на добавление, изменение.
    DB.Execute (strSQL)
    End Sub
    Используется так:
      
    ...
    DB_Open 'произходит открытие и подключение к базе данных
    strSQL="Строка запроса на чтение чего либо из базы":RS_Load 'после этого переменная rs будет содержать результат запроса.
    ...
    strSQL="Строка изменения данных или их добавление в базу":RS_Update
    ...
    DB_Close 'произходит закрытие и отключение от базы данных
    ...
      
    Вот в принципе и всё, будут вопросы пиши kononenko@dnp.ukrpack.net


    Вопрос:

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

    Ответ:

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

    Из онлайновой библиотеки MSDN :

    Platform SDK: Windows User Interface
    Virtual-Key Codes

    ....
    VK_LWIN 5B Left Windows key (Microsoft® Natural® keyboard)
    VK_RWIN 5C Right Windows key (Natural keyboard)
    ....

    Насколько я понимаю, это обе клавиши Start -- левая и правая :)


    Вопрос:

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

    Ответ:

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

    Я когда-то делал, точно не помню, но суть такова. В DataEnvirоment создаешь родительскую команду на выборку к примеру товаров. Потом в эту команду добавляешь дочерную команду на выборку по критериям от родительской. А на отчёте добавляешь групировочный раздел. И вот результат родительского запроса вставляешь в групировочный раздел, а результат дочерного запроса вставляешь в раздел Details. Или наоборот, точно не помню. Поэкспериментируй. У меня получалось.


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

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

    наверх


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

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