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


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!!!

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

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


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




    Как програмно найти процесс и поставить ему приоритет (например, высокий)?

    Вопрос:

    Как програмно найти процесс и поставить ему приоритет (например, высокий)?

    Ответ:

    Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
    Private Declare Function SetPriorityClass Lib "kernel32" (ByVal hProcess As
    Long, ByVal dwPriorityClass As Long) As Long
    Private Declare Function GetPriorityClass Lib "kernel32" (ByVal hProcess As
    Long) As Long

    Public Enum Priority
       IDLE_PRIORITY_CLASS = &H40
       NORMAL_PRIORITY_CLASS = &H20
       HIGH_PRIORITY_CLASS = &H80
       REALTIME_PRIORITY_CLASS = &H100
    End Enum

    Public Sub SetPriority(pParam As Priority)
       SetPriorityClass GetCurrentProcess(), pParam
    End Sub

        .::Savenger::.

    наверх


    Какую АПИ-функцию нужно использовать для диалогового окна выбора шрифта?

    Вопрос:

    Хочу написать модуль для выбора шрифтов, такой как находится в Common Dialog, но немогу найти API функцию. Кто чем может помочь?

    Ответ:

    ChooseFont

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

    наверх


    Как в VBA выравнять текст по центру?

    Вопрос:

    Как в VBA выравнять текст по центру?

    Ответ:

    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

        Rustam F.Yusupov

    наверх


    Как в VBA добавить несколько Enter'ов?

    Вопрос:

    Как в VBA добавить несколько Enter'ов?

    Ответ:

    Private Function EnterTab(ByVal n As Long)
         Dim i As Long = 0
         For i = 0 To n
             objDoc.ActiveWindow.Selection.InsertParagraphAfter()
         Next i
    End Function

        Евгений

    наверх


    Как в ListBox показывать последнее добавленное значение?

    Вопрос:

    Как в ListBox показывать последнее добавленное значение?

    Ответ:

    ListBox.additem "New Item"
    ListBox.listindex =listbox.newindex

        Сергей Л.

    наверх


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

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

    Вопросы:


    Автор вопроса: Корик

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

       Функция Time() возвращает время на компьютере, а как можно получить время на другом компе в локальной сети?


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

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

       Как можно изменить текущий принтер по умолчанию? Например, Set printer = "Canon1000".




    Ответы:


    Вопрос:

       В своей проге испольяую объект ADOX.Catalog для получения в контроле ListBox списка всех таблиц, содержащихся в баяе. При установке соединения c БД все гладко:

    Set Cnct = New ADODB.Connection
    Call Cnct.Open(Connect_Path)

    Но как только идет инициалияация обекта ADOX.Catalog:

    Set Ctlg = New ADOX.Catalog
    Set Ctlg.ActiveConnection = Cnct

    выдается ошибка 429 "ActiveX component can't create object", причем это происходит только на отдельных компах.
    Пробовал подключать к проекту разные версии библиотек, попробовал даже поставить на один из тех компов VB - не помогло. В чем тут дело?

    Ответ:

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

    ADOX появилось только в MDAC 2.7. Попробуй его скачать с сайта Microsoft и поставить.


    Вопрос:

       Имеется форма в acceess'e. Данные сохраняются естественно в таблицу. На форме имеется комбо со значениями, которые берутся из таблицы "адреса" (3 столбца код [цифровой] район [цифровой], адрес [текстовой]), необходимо чтобы при выборе адреса на форме в текстовом поле отображался район, для этого имеется таблица с районами (код [цифровой], район [текстовой]). Как это сделать я не могу связать это цифровое значение с текстовым, как заставить его брать значение района если известен его код?

    Ответ:

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

    К сожалению, в предыдущем ответе я не обратил внимание, что у вас на руках Access и дал длинную инструкцию для VB6.
    В Accesse всё гораздо проще. Но для начала вы должны в свойствах столбца таблицы установить подстановку. Точно не хочу вспоминать. Всё отлично работает.


    Вопрос:

       Как сделать, чтобы программа висела в памяти и при нажатии определенной комбинации клавиш (напр. Ctrl+F8) выводилась на экран? Причем она должна ловить нажатия этих клавиш при работе пользователя совершенно в другом приложении.

    Ответ:

    Автор ответа: Сан Саныч

    Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
    Const KEY_DOWN As Integer = &H1000

    'По таймеру делаешь проверку:
    Private Sub Timer1_Timer()
         If (GetKeyState(vbKeyF8) And KEY_DOWN) And (GetKeyState(vbKeyControl) And KEY_DOWN) Then MsgBox "Ctrl+F8 pressed"
    End Sub


    Вопрос:

       Как сделать чтобы прога считывала при загрузке значения из ini файла, добавляла в lisbox листы с этими значениями;
    как осуществить такое: если значение из ini равно 1 то выполняется то-то, если 0 -выполняется что-то другое?

    Ответ:

    Автор ответа: Сан Саныч

    Private Const cFile As String = "C:\prog.ini"
    Private Declare Function GetPrivateProfileString& Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpszSection$, ByVal lpszKey$, ByVal lpszDefault$, ByVal lpszReturnBuffer$, ByVal cchReturnBuffer&, ByVal lpszFile$)
    Private Declare Function WritePrivateProfileStringByKeyName% Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lplFileName As String)

    'читаем из ИНИ-файла
    Public Function Rid(ByRef SubSector As String, ByRef Sector As String, ByRef DefVal As String) As String
    Dim TMP55 As String * 1024
    Dim Rt As String

         Call GetPrivateProfileString(Sector, SubSector$, DefVal$, TMP55, 1024, cFile)
         Rt = InStr(TMP55, vbNullChar)
         If Rt > 0 Then Rid$ = Left$(TMP55, Rt - 1)
    End Function
    'пишем в ИНИ-файл
    Public Sub Wri(ByRef SuSek As String, ByRef val As Variant, ByRef Sec As String)
         Call WritePrivateProfileStringByKeyName(Sec, SuSek, val, cFile)
    End Sub
    Private Sub Form_Load()
         If Rid("Optons", "Param", 0)= val(1) then MsgBox "Param =1" Else MsgBox "Param =0"
    End Sub


    Вопрос:

       Никак не пойму, почему при переносе документа Excel на другой комп с такой же ОС и таким же офисом, пересала работать встроенная функция MkDir в VBA?

    Ответ:

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

    Проверь ссылки (Tools->References) на новой машине. Может быть некоторые потерялись при переносе.



    Ответ:

    Автор ответа: Сан Саныч

       Используй АПИ:
    Private Declare Function CreateDirectory Lib "kernel32" Alias "CreateDirectoryA" (ByVal lpPathName As String, lpSecurityAttributes As SECURITY) As Long


    Вопрос:

       Как сделать OptionButton или CheckBox прозрачным? Наподобие BackStyle property Label control.

    Ответ:

    Автор ответа: Сан Саныч

    Написать свой юзер-контрол.


    Вопрос:

       Как добавить заставку к программе, т.е. сначала идёт запуск заставки, а после сама программа?

    Ответ:

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

    Для этого даже не нужно знать программирование.

    1. Делаешь форму с BorderStyle = None.Кидаешь на нее Image с картинкой.
    2. В sub Main пишешь
         frmImage.Show 'показываешь заставку
         Load frmMain 'загружаешь главную форму
         frmImage.Visible = False
         frmMain.Show 'и показываешь ее



    Ответ:

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

    В модуле пишешь процедуру:

    Sub Main
         frmSplash.show
         frmMain.load
         ' здесь можно и притормозить чем нибуть например Sleep 1000
         unload frmSplash
         frmMain.show
    End Sub

    И в свойствах проекта указываешь, чтоб программа стартовала с этой процедуры.



    Ответ:

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

    1. Создать заставку.
    2. Создать форму, которая будет запускаться потом.
    3. Создать программный модуль ОТДЕЛЬНО, т.е. "Add-Module"
         В этом модуле создай Sub, например, Main, которую выбери затем в свойствах "Project-Properties-General-Startup Object".
         В этом и есть главное отличие.
         Далее структура вызовов Main:
             ....
             Заставка.Show
             Открыть необходимые файлы, базы и т.п.
             Открыть 1-ю форму
             Unload Заставка
    4. Далее как обычно
      




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

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

    наверх


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

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