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


VBNet VBMania
Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • VB на русском
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • MDesign
  • IgorykSoft
  • DanSoft
  • Господа!!! читайте MSDN!!!

    Несколько слов от автора:

       Это новый выпуск.
    Читайте!


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




    Aslof рекомендует

       Ищешь фильм?
    http://subscribe.ru/catalog/rest.cinema.filmforyou
    Сайт рассылки - http://aslof.balzer.ru/


    На каком языке лучше работать с БД: VB или Delphi?

    Вопрос:

    Создал на VB6 приложение для работы с БД в локальной сети. Работает, честно говоря, медленно. Друзья говорят, напиши в Delphi - работать будет быстрее. Действительно ли это так, или это дело вкуса, в чем писать?

    Ответ:

    А еще говорят, что нужно использовать ADO, который быстрее в сети на порядок. Кроме того, бывают случаи, когда DAO 3.51медленно работает из-за каких то внутренних проблем драйвера на некоторых машинах. Проблема решается использованием DAO 3.6, которая значительно шустрее именно в локальной сети. По поводу Delphi - чушь, дело в том, что в любом случае будут использоваться одни и те же библиотеки DAO или ADO.

    Шатрыкин Иван

    наверх


    Как читать и записывать данные в книге Excel из VB?

    Вопрос:

    Если есть у кого-нибудь пример как записывать и считывать данные из ячеек Excel-я в VB?

    Ответ:

    Вот пример как можно работать с Exelem
    Вставляем этот код в обработку какой-нибудь кнопки.

    Dim EXL As Object
    Dim STR As String
    'создаем объект
    Set EXL = CreateObject("Excel.Sheet")
    Set EXL = EXL.Application.ActiveWorkbook.ActiveSheet

    'Заносим данные в ячейки
    EXL.Range("A1").Value = "Пробный"
    EXL.Range("B1").Value = "Файл"
    EXL.Range("C1").Value = "по"
    EXL.Range("D1").Value = "Работе"
    EXL.Range("E1").Value = "с Exelem"

    'Изменяем шрифт и.т.д.
    EXL.Range("A1").Font.Bold = True
    EXL.Range("A1").Font.Size = 16

    'Берем данные из ячеек
    STR = EXL.Range("A1").Value & EXL.Range("B1").Value & _
    EXL.Range("C1").Value & EXL.Range("D1").Value & _
    EXL.Range("E1").Value

    'сохраняем Excel документ на диске
    On Error Resume Next
    EXL.SaveAs App.Path & "\Proba.xls"
    'удаляем объект из памяти
    Set EXL = Nothing

      Единственное ограничение: код будет работать только на машине с установленным Excel'ем.
      Еще можно заморочиться, раздобыть описание формата Excel'евских файлов и написать алгоритм чтения этих файлов самому, но стоит ли так морочиться?

    Мунгалов АВ, Kirill

    наверх


    Как узнать функции, содержащиеся в какой-либо DLL?

    Вопрос:

    Скажите, пожалуйста, как узнать функции, содержащиеся в какой-либо DLL. Есть ли какие-нибудь декомпиляторы для DLL и где их можно достать?

    Ответ:

    ActiveX Dll я просматриваю так: открываю Project|References - выбираю Dll потом запускаю браузер обьектов (Object Browser, по кнопке F2) и выбираю библиотеку. Теперь можно просмотреть все классы, методы, свойства, находящиеся в библиотеке.
    Если же DLL не activex, а самая что ни на есть обыкновенная, то нужно запустить программу Dependency Walker (depends.exe), входящую в Visual Studio 6.

    Павел Сурменок

    наверх


    Как из программы сжать базу ACCESS?

    Вопрос:

    Как из программы сжать базу ACCESS - удалить физически все удаленные записи?

    Ответ:

    Очень, ну просто очень просто. начала нужно в Project|References установить ссылку на библиотеку DAO.

    Dim OldName as String, NewName as String
    OldName = "СтараяБаза.mdb"
    NewName = "НоваяБаза.mdb"
    DBEngine.CompactDatabase (OldName, NewName)

    Sergey Y. Tkachev

    наверх


    Как с помощью VB сфотографировать экран (как PrintScreen)?

    Вопрос:

    Как с помощью VB сфотографировать экран (как PrintScreen)?

    Ответ:

    Для того чтобы с помощью VB сделать скринщот экрана надо всего лишь воспользоваться несколькими функциями Win32 API.

    Это в модуль:

    Private Declare Function GetDestktopWindow Lib "user32" () as Long
    Private Declare Function GetDC Lib "user32" (ByVal hwnd as Long) as Long
    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long

    И в Form Load написать:

    dwRop = &HCC0020
    hSrcDC = GetDC(hwndSrc)
    Call BitBlt(hDC, 0, 0, ScaleWidth, ScaleHeight, hSrcDC, 0, 0, dwRop)
    Show

    И самое главное не забутьте свойство AutoRedraw формы поставить равным true.
    Вот и всё.

    Рафис

    наверх


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

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

    Вопросы:


    Автор вопроса: Саша

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

       Как считать из памяти какой либо программы значения? Что то наподобие Artmoney.


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

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

       Подскажите, пожалуйста, как заблокировать весь траффик на компьютере, как например делает ZoneAlarm (Там есть команда "Stop all Internet activity" - и тогда впечатление такое - как будто выдернул шнур из сетевой карты)?


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

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

       Как можно отключить и включить Screen Saver. Так же как это делает Windows media player при просмотре фильма. (Т.е. до окончания просмотра фильма заставка не появляется, а затем по прошествию "5 минут" без шевеления мышкой, снова начинает функционировать).


    Автор вопроса: Котофей

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

       Что такое и как использовать файлы *.dll в VB?


    Автор вопроса: Котофей

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

       Как задать кодировку отправляемого письма при помощи контрола winsock?


    Автор вопроса: MountainSoft Team

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

       Как динамически добавить на форму ListView?


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

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

       Где в Win XP хранится информация о пользователях, как при помощи VB можно их считать?


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

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

       У меня с помощью команды Shell не открывается файл на сервере в папке с именем из двух слов (Слово1 Слово2). Выдается 2 сообщения: "Не могу найти файл G:/Слово1" и "Не могу найти файл Слово2/Мой_Файл.exe". Папку переименовать нельзя. Посоветуйте, как справиться с этой проблемой.




    Ответы:


    Вопрос:

       Как сделать так, чтобы форма была прозрачной?

    Ответ:

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

    Вся информация из API-Guide 3.7

    Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal
    hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal
    dwFlags As Long) As Long
    Не поддерживается в Win9х/ME

    Вот пример работы:
    Const LWA_COLORKEY = &H1
    Const LWA_ALPHA = &H2
    Const GWL_EXSTYLE = (-20)
    Const WS_EX_LAYERED = &H80000
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    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 SetLayeredWindowAttributes Lib "user32" (ByVal hWnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
    Private Sub Form_Load()
         'KPD-Team 2000
         'URL: http://www.allapi.net/
         'E-Mail: KPDTeam@Allapi.net
         Dim Ret As Long
         'Set the window style to 'Layered'
         Ret = GetWindowLong(Me.hWnd, GWL_EXSTYLE)
         Ret = Ret Or WS_EX_LAYERED
         SetWindowLong Me.hWnd, GWL_EXSTYLE, Ret
         'Set the opacity of the layered window to 128
         SetLayeredWindowAttributes Me.hWnd, 0, 128, LWA_ALPHA
    End Sub


    Вопрос:

       Как сделать, чтобы размер формы было изменить нельяя, но при этом её можно было свернуть?

    Ответ:

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

    BorderStyle=1 (Fixed Single)
    MinButton=True



    Ответ:

    Автор ответа: Михаил

    Form1.controlbox=true
    Form1.Minbutton=true



    Ответ:

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

    BorderStyle=1
    MinButton=True




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

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

    наверх


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

    Сурменок Павел