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


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

Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом.



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

Ссылки:

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

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

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


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




    Как сделать, чтобы дейстие происходило при нажатии трёх кнопок?

    Вопрос:

    Подскажите, пожалуйста, как сделать так, что бы событие возникало при нажатие трех клавиш. Например: shift+ctrl+m.

    Ответ:

    Создаешь процедуру MouseDown (мышь) или KeyDown (клава) для нужного объекта Например для формы (свойство формы "KeyPreview" должно быть "True") :
     
      Мышь :
      Sub Form_MouseDown (Button As Integer, Shift As Integer, x As Single, y As Single)
       ' Button это код нажатой на мышке клавиши
       ' 1 - левая кнопка
       ' 2 - правая кнопка
       ' 4 - средняя кнопка
       ' Shift это код нажатой на клавиатуре клавиши
       ' 1 - Shift
       ' 2 - Ctrl
       ' 4 - Alt
      If Button = 2 And Shift = 6 Then frmAbout.Show vbModal
       ' Если над формой нажать правую мышки , Ctrl и Alt ( 2+4=6), то откроется форма
      End sub

      Клава :
      Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
      ' KeyCode это код нажатой клавиши
      ' vbKeyF1 - "F1"
      ' vbKeyF2 - "F2"
      ' vbKeyM - "M"
      ' vbKeyX - "X"
      ' и так далее
      ' Shift это код нажатой на клавиатуре клавиши
      ' 1 - Shift
      ' 2 - Ctrl
      ' 4 - Alt
      If KeyCode= vbKeyM And Shift = 6 Then frmAbout.Show vbModal
      ' Если над формой нажать "M" , Ctrl и Alt ( 2+4=6), то откроется форма
       End Sub

    Vamp

    наверх


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

    Вопрос:

    У меня есть основная форма. Как мне по нажатию какой-нибудь функциональной клавиши (например F3) запускалась другая форма?

    Ответ:

    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
       If KeyCode = vbKeyF3 Then NewForm.Show
    End Sub

    Sergey Y. Tkachev

    наверх


    Как лучш реализовать программу для создания чертежей?

    Вопрос:

    Пользователь в поля вбивает координаты и размеры заготовок (досок толщ. 16 мм.) а прога должна их показать в два и трухмерном пространстве (выполнить так сказать чертеж и распечатать). Вот не знаю как сделать (проще). Мои варианты: создать свой трех движок, найти чужой, подключать МАХ, остыть и заняться чем нибудь другим - ). Можете что посоветовать?

    Ответ:

    Я бы попробовал автоматизировать Autocad. Благо в нем есть возможность поддержки VBA.

    Shemyakin, Dmitry

    наверх


    Как загрузить в run-time изображение из БД Access?

    Вопрос:

    Как загрузить в Run-Time картинку (bmp) в приложение из файла mdb? Картинка линкуется в поле не из готового файла, а через Create New.

    Ответ:

    Только что прочитал одну рассылку, в которой приведен пример работы с картинками в базе данных http://msa.km.ru/msa/vb/article.asp?id=324. Всё очень просто - функция для чтения, функция для записи. Если же речь идет об mdb, то отобразить картинку из базы данных в простейшем виде можно при помощи Picture Box или Image, которые привязаны на Data Control или ADO Data Control

    Сам же я, когда работаю с MS SQL7, то применяю следующую ф-цию для записи изображения:

    Function AddLongRaw(ByVal strFileName As String, ByRef objRecSet As
    ADODB.Recordset, ByVal strFieldName As String) As Boolean
       On Error GoTo ERRHANDLER
       AddLongRaw = False
       Dim objStream As Stream
       Set objStream = New ADODB.Stream
       objStream.Type = adTypeBinary
       objStream.Open
       objStream.LoadFromFile strFileName

       objRecSet.Fields(strFieldName).Value = objStream.Read
       objStream.Close
       Set objStream = Nothing
       AddLongRaw = True
       Exit Function
    ERRHANDLER:
       AddLongRaw = False
       Set objStream = Nothing
    End Function

    Для считывания изображения предпочитаю пользоваться привязанным к элементу Data PictureBox'ом.

    Sergey Y. Tkachev

    наверх


    Почему происходит ошибка при попытке создать объект Outlook.Application?

    Вопрос:

    Я хочу создать е-майл сообщение и отправить его из своей формы. Пишу как обычно:

    Dim out As Object
    Set out = CreateObject("Outlook.Application")

    Но на это отладчик говорит, что ActiveX компонент не может создать объект, ошибка 429. Подскажите пожалуйста, как быть?

    Ответ:

    Честно говоря, я не вижу особого смысла городить огород подобным образом.
    Раз Microsoft Outlook, значит MAPI. Так почему бы не использовать Microsoft
    MAPI Controls? Это самый простой и самый удобный и вообще, самый-самый
    способ посылать или читать почту. Кроме того, можно работать и с адресной
    книгой. В MSDN примеров - море. В самом примитивном виде это может выглядеть
    вот так:

    MAPISession.UserName = ""
    MAPISession.Password = ""
    MAPISession.SignOn

    MAPIMessages.SessionID = MAPISession.SessionID
    MAPIMessages.Compose
    MAPIMessages.RecipDisplayName = strNameToDisplay
    MAPIMessages.RecipAddress = strAddress
    MAPIMessages.MsgSubject = "MySubject"
    MAPIMessages.MsgNoteText = "Test Message"
    MAPIMessages.AttachmentPathName = strFileToAttach
    MAPIMessages.sEnd False

    Sergey Y. Tkachev

    наверх


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

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

    Вопросы:


    Автор вопроса: Вадим К

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

       Как произвести конвертирование текста из DOS в Win (or UniCode)?


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

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

       Как на visual basic обратится к свойствам объектов находящихся в другом приложении и изменить их.
    Например есть приложение запущенное в нем есть скрытые окна как получить список этих окон и обратится к их свойству и изменить эти свойства чтобы они стали видимыми.


    Автор вопроса: Ромик

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

       Кто знает как в программно узнать данные о текущей температуре процессора?


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

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

       Как на VBA занести определенную информацию в определенные места документа WORD? То есть как бы заполнить шаблон.


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

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

       Пишу макрос на VB для word.
    У меня стоит такая задача: внутри документа должна при определенных
    условиях появлятся или не появлятся определенная форма (страница).
    Вопрос: Как с помощью VB в word выделять часть текста, а также его удалять,
    копировать и вставлять в другое место или в другой файл. В том числе и
    как удалить из текста таблицу. Подскажите пожалуйста.


    Автор вопроса: Данила

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

       Как через хэндл окна добраться до контролов, которые находятся в этом окне?


    Автор вопроса: Данила

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

       Какой наиболее эфективный способ передать кучу параметров в функцию?
    Задача: на форме куча информации (тексты, списки), которые нужно передать в функцию, которая добавит их в базу.


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

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

       Как в Word и Excel перехватить вывод диалога печати документа? То есть пользователь нажимает кнопку "Печать", а вместо вывода диалога печати документа - выскакивает MessageBox.


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

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

       VB6. Почему следующий код вылетает с ошибкой GPF?

    Private Declare Function SetTimer& Lib "user32" _
    (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, _
    ByVal lpTimerFunc As Long)
    Private Declare Function KillTimer& Lib "user32" _
    (ByVal hwnd As Long, ByVal nIDEvent As Long)
    Private Const WM_USER& = &H400
    Private Const WM_TIMER& = &H113
    Private Const WM_MYTIMER& = WM_USER + 1

    Public lpPrevWndProc As Long
    Public gHW As Long
    Public lEvent As Long

    Sub TimerProc(hw As Long, uMsg As Long, idEvent As Long, dwTime As Long)
    Dim lResult As Long

    Select Case hw
         Case gHW
             Select Case uMsg
                 Case WM_TIMER
                     If idEvent = WM_MYTIMER Then Debug.Print dwTime
             End Select
         Case Else
    End Select
    End Sub

    Создается таймер. Вызов осуществляется из формы

    Sub CreateTimer()
    SetTimer gHW, WM_MYTIMER, 3000&, AddressOf TimerProc
    End Sub

    Уничтожается таймер. Вызов осуществляется из формы

    Sub DestroyTimer()
    KillTimer gHW, WM_MYTIMER
    End Sub


    Автор вопроса: Ромик

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

       Как в VB работать с реестром (создавать каталоги и присваевать значения параметрам)?


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

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

       Дан одномерный массив А, сост. из 10 элементов. Как написать программу нахождения максимального отрицательного элемента массива А и определения его индекса?


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

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

       У меня база в которой строковыу данные набирались на русском языке частями в Windows разных локализаций (русская, центральноевропейская-чешская, западноевропейская-германская). Данные просматриваются и сейчас должны редактироваться программой которая бежит под Windows (English US). Русский текст набраный с помошью этой программы отображается правильно, но старый - нет. Установка Font.Charset=204 не помогает. Как корректно отображать данные при прохождении по базе?


    Автор вопроса: Tibor Ferencig

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

       Хотелось бы поиметь список API с параметрами, для реализации следующих задач:

    - включить ActiveDesctop;
    - поиметь его хендл;
    - изменить хендл сторонней проги.
      
    Может неправильно выразился, но суть такая: я хочу заставить работать вместо десктопа свой любимый ScreenSaver.


    Автор вопроса: Роганов Владимир

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

       Как открыть документ Word?


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

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

       Как при выходе из программы выключить windows, а если возможно то и компьютер?


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

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

       Как записать текст в файл *.txt через VB?


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

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

       Нужно чтобы программа просматривала текстовый фаил и при соответствующем значении, выполняла действие


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

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

       Есть объект Data, подключенный к FILE.DBF(содержит поля KOD и SUM), есть Text1 и Text2.
    Как осуществить поиск в поле KOD всех значений Техт1 и вывод в Техт2 суммы соответствующих значений поля SUM.
    Если использую SEEK в цикле, находит только первую запись с указанным кодом и суммирует, пока не закончится цикл.


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

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

       В папке есть куча рисунков с расширением bmp и jpg, а могут быть и не только рисунки. Рисунки не индексированы. С помощью CommonDialog открываю первый рисунок, который заносится в Picture. Подскажите, пожалуйста, как мне передать в CommonDialog1.FileName следующий рисунок, чтобы отобразить его в Picture. Такая штука есть в ACDTree и в XP-шном просмотрщике.




    Ответы:


    Вопрос:

       Скажите пожалуйста, как загрузить рисунок (из Picture Box-a) в память (не Винчестер), и наоборот из памяти загрузить рисунок в Picture Box?

    Ответ:

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

    Private Sub Command1_Click()
    'определяем переменную
    Dim picMemory As IPictureDisp
    'запоминаем рисунок Из Picture1.Picture
    Picture1.AutoRedraw = True
    Set picMemory = Picture1.Picture
    'вставляем рисунок Из Picture1.Picture
    Picture2.AutoRedraw = True
    Set Picture2.Picture = picMemory
    Set picMemory = Nothing
    End Sub




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

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

    наверх


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

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