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


VBNet VBMania
Голосование:



Рассылки Subscribe.Ru
VB.NET-World
Новости сайта IgorykSoft и советы по программированию
DanSoft о Visual Basic
Visual Basic.NET Уроки.

Ссылки:

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

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

       Новый выпуск. Ничего нового не происходит. С нетерпением жду каникул :-((
    Читайте!


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




    Citycat by Email

       Программа Citycat by Email позволяет работать с сервером Subscribe.ru с помощью электронной почты. Теперь Вам не нужно тратить деньги на работу в online и просматривать мегабайты рекламы для того, чтобы подписаться на нужную рассылку! Вам просто необходимо скачать небольшую базу данных по всем рассылкам каталога с нашего сайта, после чего Вы сможете подписываться и отписываться от рассылок, заказывать архивы прошлых выпусков, выполнять поиск по каталогу рассылок и многое другое.
       Программу Citycat by Email можно бесплатно загрузить с сайта http://sapisoft.h1.ru.

    наверх


    Диск

       Представляем новый CD от проекта "Сообщество чайников"!

       На диске размещены вопросы и ответы на них по материалам системы «Эксперт» и эхоконференций СообЧа в количестве более 9000 шт. (вместе с тем, на сайте СообЧа расположено лишь до 2000). Рассматриваются более 100 тем компьютерной деятельности. Вот приблизительные количества вопросов по самым распространенным темам:

    • железо (1800)
    • операционные системы (2200)
    • интернет (1000)
    • Delphi (700)
    • веб-программирование (600)
    • Visual Basic (500)
    • игры (500)
    • MS Office (400)
       Помимо вопросов и ответов в качестве бесплатного приложения на диске имеются:

    • Подборка электронных журналов о компьютерах Izone и AboutPC.
    • Самый необходимый софт: .NET Framework 1.1, MDAC 2.8.
    • Подборка полезных программ: тестирование железа, читкоды и уровни для игр и многое другое.
    • Подборка статей и фишек.

       Диск представляет собой минидиск с внешним диаметром 80 мм. Такой диск читается любым CD-приводом, для этого на выдвижном лотке привода имеется углубление.

       Стоимость диска (сключая почтовые расходы) - 90 рублей. Диск распространяется по почте наложенным платежом. Оплата в почтовом отделении при получении.
       Заказть диск можно здесь: http://www.vbnet.ru/vbshop/cart.asp?add=6.

    наверх


    Новости сайта VBNet



    Последние 20 тем форума на VBNet.Ru:

    08:00 / 6 окт.  столбцы RichTextBox. | Хитов: 4 |  Ответов: 1
    05:58 / 6 окт.  Печать RichEdit | Хитов: 5 |  Ответов: 1
    01:09 / 6 окт.  Вставка пустой строки в конец списка | Хитов: 8 |  Ответов: 1
    23:00 / 5 окт.  _____ ВСЕ СЮДА ! ЭТО ВАЖНО! ______ | Хитов: 35 |  Ответов: 3
    20:42 / 5 окт.  Распознавание речи ??? | Хитов: 9 |  Ответов: 0
    20:08 / 5 окт.  ToolBar | Хитов: 12 |  Ответов: 1
    20:04 / 5 окт.  Как избавиться от Msvbvm60.dll ? | Хитов: 26 |  Ответов: 4
    12:09 / 5 окт.  multimedia | Хитов: 15 |  Ответов: 1
    16:40 / 4 окт.  Диск | Хитов: 39 |  Ответов: 1
    14:43 / 4 окт.  опять про воспроизведение модемом звука в тел. ... | Хитов: 25 |  Ответов: 1
    13:23 / 4 окт.  VB.NET - Tool bar - ИМХО! | Хитов: 20 |  Ответов: 1
    12:53 / 4 окт.  Помогите убрать все меню в Excel. | Хитов: 8 |  Ответов: 0
    12:27 / 4 окт.  OLERichTextBox, есть ли что-то такое для VB6? П... | Хитов: 24 |  Ответов: 3
    02:01 / 4 окт.  Height statusbar'а | Хитов: 30 |  Ответов: 5
    01:52 / 4 окт.  НАВОДНИК и ЕГО личико... | Хитов: 29 |  Ответов: 1
    23:44 / 3 окт.  Ребята помогите! | Хитов: 62 |  Ответов: 3
    17:49 / 3 окт.  Как прогу поставить в автозагрузку! | Хитов: 43 |  Ответов: 3
    15:25 / 3 окт.  На картинке написать текст и напечатать | Хитов: 17 |  Ответов: 0
    14:47 / 3 окт.  Запаковать .ocx и .dll в .exe | Хитов: 30 |  Ответов: 5
    14:26 / 3 окт.  Как в .exe зашить все необходимые .ocx, .dll | Хитов: 48 |  Ответов: 8


    Последние поступления в Библиотеку кодов:

    Создание огня на форме (15)
    Размытие картинки (66)
    Сдвиг на n-ное число бит (68)
    Пример работы с текстовой БД (139)


    наверх


    Новости сайта MSDN



    наверх


    Новости сайта GotdotNet



    Новые статьи:



    наверх


    Новости сайта dotSite

    Новые статьи:



    Новые примеры:



    наверх


    Один момент из жизни форума: Ошибка в методе Update объекта SqlDataAdapter

    Вопрос:
    Автор вопроса: Alex3

       Кто скажет почему не работает данный код?

    Dim daSourceType As New SqlDataAdapter
    Dim strSQL As String
    strSQL = "Update SourceType Set SourceTypeName=? Where IDSourceType=?"
    Dim cmdUpdateSourceType As New SqlCommand(strSQL, conn)
    Dim pc As SqlParameterCollection = cmdUpdateSourceType.Parameters
    pc.Add("SourceTypeName", SqlDbType.VarChar, 50, "SourceTypeName")
    pc.Add("IDSourceType", SqlDbType.Int, 0, "IDSourceType")
    daSourceType.UpdateCommand = cmdUpdateSourceType
    daSourceType.Update(dsSource.Tables("SourceType").Select("", "", DataViewRowState.ModifiedCurrent))

       Валится на последней строке, говорит - "Системная ошибка". conn объявлен на уровне класса формы:

    Dim conn As New SqlConnection(ConnString)

       dsSource существует и заполнен. Извращался по всякому, ничего не помогает, чувствую, дело в ерунде какой-то.


    Ответы:

    Автор: boevik
       Попробуй отловить ошибку (try...Catch...). И посмотри, что в коллекции
    Errors этой ошибке (там должно быть подробное описание ошибки).
       И, раз у тебя не OleDB, а SQL, то возможно вместо вопросов в запросе
    нужно поставить названия со знаком "@" типа:

    Update SourceType Set SourceTypeName=@SourceTypeName Where IDSourceType=@IDSourceType

    И, соответственно, в коллекции параметров такие же имена:

    pc.Add("@SourceTypeName", ...



    наверх


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

       Ищу телеработу.

    • Переводы: английский, украинский, русский.
    • Cipper программист.
    • Assembler программист.
    • PIC разработчик
    • композитор
    • Прогрессивные стили
    • 3D анимация
    • GIF анимация
    Антон Лозовский.

    наверх

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

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


    Нет вопросов.


    Ответы:


    Вопрос:

       Некоторые АПИ требуют чтобы им передали хэндл события. А как это сделать методами VB? Если я объявил событие, как извлечь его логический номер (хэндл)?

    Ответ:

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

    Используй:
    AddressOf ИмяСобытия


    Вопрос:

       Как програмно свернуть окно?

    Ответ:

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

    Me.WindowState = vbMinimized



    Ответ:

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

    Для твоего окна из проекта

    frmMain.WindowState=2

    Для любого окна (по hwnd) нужна АПИ:

    lngTemp=ShowWindow(hwnd,SW_MINIMIZE)



    Ответ:

    Автор ответа: Vlasenko Fedor

    Как програмно свернуть окно?
    Используй API, в модуле:

    Public Declare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Public Const SW_SHOWMINIMIZED = 2

    В модуле формы:

    Private Sub Form_Load()
    ShowWindow Me.hwnd, SW_SHOWMINIMIZED
    End Sub



    Ответ:

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

    Form1.WindowState = 1


    Вопрос:

       Есть форма. На ней ComboBox (поле со списком). Как при нажатии кнопки списка вывести в этом списке календарь, как в Windows 98 при поиске файлов на вкладке "Дата" между такой и такой? Если можно примерчик или ссылку.

    Ответ:

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

    А как насчет подключить к проекту Windows Commaon Controls - 2 6.0 (SP4)? Там есть контролы

    Month View
    DTPitker

    Они тебе понравятся:)))



    Ответ:

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

    Компонент MS Windows Common Controls-2 6.0.


    Вопрос:

       У меня два вопроса, касающиеся MS Access:
    1. можно ли в форме средствами VB создавать контролы (например текстбоксы). При этом следует отметить, чтобы форма находилась в режиме просмотра, а не в режиме проектирования. Т.е. хотелось бы поиметь динамически создаваемые контролы для формы в MDE (т.к. там форму нельзя открыть в режиме проектирования).

    2. В базе есть одна форма. Каким образом можно на экране открыть несколько раз эту форму. Думаю, что нужно создать класс формы. Пробовал, но ничего не получется.

    Ответ:

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

    1 Я бы в конструкторе сделал несколько невидимых полей и по надобности показывал бы их, меняя размер, координаты и т.п.
      
    2 Думаю, что нельзя, если речь идет не о копии формы.



    Ответ:

    Автор ответа: Максим

    Динамически создать контрол нельзя...
    Можно только копию существующего.
    Создай пикчер, индекс поставь 0.
    Пиши код:

    Load Picture1(1)
    With picture1(1)
    .visible=true
    .move 100,100
    end with

    А еще одну форму создать, объявив ее новый класс:

    Dim f as new form1
    f.show



    Примечание редактора: не согласен, создать контрол динамически можно, причём не одним способом!



    Ответ:

    Автор ответа: Vlasenko Fedor

    1. Дружище, на самом деле существует достаточно много решений этого вопроса.
    От созданий новых класов, экземпляров их, до копирования свойств объектов и т.д.

    2.
    Private Sub CommandButton1_Click()
    Dim NewForm As New MyForm
    NewForm.Visible = True
    End Sub


    Вопрос:

       В PictureBox нарисовал несколько линий методом Line. Как мне сохранить изображение (с линиями) в .bmp файл?

    Ответ:

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

    Что-то вроде

    SavePicture Picture1.Image, "C:\1.bmp"



    Ответ:

    Автор ответа: Максим

    Savepicture picture1.image ,Path



    Ответ:

    Автор ответа: Липин Владимир Борисович

    SavePicture Image, Name_Picture

    На забудь поставить для PictureBox AutoRedraw=True


    Вопрос:

       Как через VB и API управлять перемещать указатель мыши и генерировать нажатия клавиш/прокрутку колес?

    Ответ:

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

    Установка/получение позиции курсора: SetCursorPos/GetCursorPos
    Генерирование события мыши: mouse_event


    Вопрос:

       У меня возникла огромная проблема, надеюсь лучшие умы рассылки помогут мне, а то хана. Бацаю программу для работы с расписанием(проходит процесс тестирования) Когда создавал не обратил внимания на проблему, что user-type не может быть больше 32 кб
      
    Type Raspisanie
         Название_предмета(62) As String * 53
         Практика_Лекция(62) As String * 8
         Имя_преподавателей(62) As String * 50
         Дата(6) As String * 2
         Время1(8) As String * 2
         Время2(8) As String * 2
         Время3(8) As String * 2
         Время4(8) As String * 2
         Время5(8) As String * 2
         Время6(8) As String * 2
         Время7(8) As String * 2
         Время8(8) As String * 2
         Неделя As String * 10
         Месяц As String * 10
    End Type

    Я его конечно подогнал под 32 кб, но хочется что-бы Название_предмета и Имя_преподавателей были бы по больше. Прикинул типа разбить на несколько типов

    Type Raspisanie_a
         Практика_Лекция(62) As String * 8
         Дата(6) As String * 2
         Время1(8) As String * 2
         Время2(8) As String * 2
         Время3(8) As String * 2
         Время4(8) As String * 2
         Время5(8) As String * 2
         Время6(8) As String * 2
         Время7(8) As String * 2
         Время8(8) As String * 2
         Неделя As String * 10
         Месяц As String * 10
    End Type
    Type Raspisanie_b
         Имя_преподавателей(62) As String * 150
    End Type
    Type Raspisanie_c
         Название_предмета(62) As String * 150
    End Type

    И тут поперли проблемы
    Если объявлять в одной процедуре несколько переменных каждого типа пишет что суммарный размер всех переменных не должен превышать 64 кб если они static, или если dim то слишком много Dim'ов. Помогите как мне перебачить и код сильно не ломать.

    Ответ:

    Автор ответа: Максим

    Для таких вещей нужно классы писать, а не user-type.



    Ответ:

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

    А если попробовать объявить и static и dim в одной процедуре.


    Вопрос:

       Можно ли выдернуть из файла иконку и использовать её в программе?

    Ответ:

    Автор ответа: Vlasenko Fedor

    Просьба уточнить, какие именно иконки нужно вытянуть из файла (ассоциированные с расширением (маленькие или большие), или иконки ресурсов файла).



    Ответ:

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

    Public Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long


    Вопрос:

       При работе с базой данных появляется сообщение "Run-time error '7' Out of memory" Как можно перехватить это сообщение или же как очищать эту самую память программно?

    Ответ:

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

    "Память нужно не очищать, а не засорять" (с)
    Это похоже на повисший рекруссивный алгоритм типа такого:

    Public Sub Main()
        BadProcedure
    end sub

    public Sub BadProcedure()
         BadProcedure
    End Sub

    При запускеиз под VB прога выдаст ошибку, тк переполнит стек. А вот при запуске готового exe в определенный момент займет _все_ рессурсы системы.

    Эти ошибки не нужно отлавливать - их нужно полностью исключить, перепроектировав приложение.



    Ответ:

    Автор ответа: Chernov Dmitry

    Во-первых, корректно закрывай все объекты работы с базой данных. Т.е., допустим работаешь с объектом Recordset
      
    dim rs as Recordset
      
    Set rs = OpenRecordset(...)
    ... ' Здесь работаем с базой данных
    rs.Close
    Set rs = Noting
      
    При этом также следует помнить что последние две строки должны также выполняться при включенной обработке ошибок, т.е. структура подпрограмм и функций должна быть следующей
      
    Sub Subroutine(...)
    On Error Goto lblError
      
    ... ' Здесь происходит ошибка
      
    lblExit:
         rs.Close
         Set rs = Noting
         Exit Sub
    lblError:
         ... ' Здесь происходит обработка ошибок
         Resume lblExit
    End Sub
      
    И примерно так-же для остальных объектов. В противном случае от ошибок не избавишся...



    Ответ:

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

    Попробуй закрывать рекордсеты и ставить их в Nothing, т.е. Set RecordsetName = Nothing.


    Вопрос:

       Проблема такая: в чужую программу посылаются данные через SendKeys, сначала посылается SendKeys "{Enter}", чтобы открыть форму, в которую посылаются данные, сгенерированные в цикле, а затем посылеатся SendKeys "{Enter}", чтобы эти данные ввести. Затем в чужой проге появляется MsgBox, сообщающий, что данные введены, в нём и состоит вся проблема, т.к., если посылать на него тоже "{Enter}", то на восьмом прогоне цикла, происходит ошиба на строке, где фокус переходит на самое первое окно чужой проги, с которой нужно открыть форму для ввода данных, но почему то MsgBox с сообщение об успешном вводе остаётся, т.е. "{Enter}" на него почему то не был послан и весь цикл запарывается.

    Ответ:

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

    Используй задержку между посыланием SendKey. Если проблемма не в этом, то надо смотреть, на каком окне в нужный момент фокус.


    Вопрос:

       Как заставить компьютер влючаться и выключаться в заданное время? Безусловно такой вопрос задавался вам не раз но я не нашел код в вашей рассылке, хотя читаю ее довольно давно. Может быть я что и пропустил? Помогите пожалуйста.

    Ответ:

    Автор ответа: Владимир Кирко

    Для того, чтобы компьютер включался в заданное время, он должен иметь соответствующий BIOS, где и задаётся время включения (при этом его ещё от сети отключать не надо).
      
    А выключается компьютер в заданное время таким скриптом, например:
      
    dim OpSysSet, obj
    Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate," & _
    "(Shutdown)}//./root/cimv2").ExecQuery _
    ("SELECT * FROM Win32_OperatingSystem" & _
    " WHERE Primary=true")
    For Each obj In OpSysSet
    obj.Win32Shutdown(8)
    Next
      
    Его надо оформить в виде файла с расширением vbs,например файла poweroff.vbs, и вызывать в Sheduler'е в нужное Вам время.
      
    Кроме того, в XP, думаю, что и в 2000-ом, есть программа shutdown.exe, которая выполняет ту же задачу.




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

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

    наверх


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

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