Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

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


Информационный Канал Subscribe.Ru

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


VBNet VBMania
Ссылки:

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

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

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


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




    Проблемы с лицензией

    Вопрос:

    Cтоит ХР Про и ВБ6 и как только открываю проект с Тривью (и другими из того же комплекта или добавляю контрол на форму) вылетает ошибка мол нету лицензии на компонент. На 98 без проблем.

    Ответ:

    О том, как решить эту проблему, написано здесь:
    http://support.microsoft.com/default.aspx?scid=KB;en-us;q194751

        Andrey

    наверх


    Как редактировать таблицу?

    Вопрос:

    Есть талица MSFlexGrid, например, так вот её нужно редактировать, т.е. когда пользователь ткнул на ячейку, то должен появиться курсор и т.д. Как это сделать?

    Ответ:

    Я вышел из положения вот так. Рядом с таблицей сделаешь текстовое поле введи этот код.

    Private Sub MSFlexGrid1_DblClick()
        ВводВЯчейку VbKeySpace
    End Sub

    Private Sub MSFlexGrid_GotFocus()
        If Text1.Visible=False Then Exit Sub
        MSFlexGrid1.Text1.Text
        Text1.Visible=False
    End Sub

    Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
        ВводВЯчейку KeyAscii
    End Sub

    Private Sub MSFlexGrid1_LeaveCell()
    If Text1.Visible=False then Exit Sub
        MSFlexGrid1.Text=Text1.Text
        Text1.Visible=False
    End Sub

    Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
        ВводСимвола KeyCode, Shift
    End Sub

    Private Sub Text1_KeyPress(KeyAscii As Integer)
        If KeyAscii=Asc(VbCr) Then KeyAscii=0
    End Sub

    Sub ВводВЯчейку(KeyAscii As Integer)
        Select Case KeyAscii
            Case 0 To VbKeySpace
                Text1.Text=MSFlexGrid1.Text
            Case Else
                With Text1
                    .Text=Chr(KeyAscii)
                    .SelStart=1
                End With
        End Select
        With Text1
            .Visible=True
            .SetFocus
        End With
        
    End Sub

    Sub ВводСимвола(KeyCode As Integer, Shift As Integer)
        Select Case KeyCode
            Case VbKeyEscape 'Нажатие ESC - сброс ввода
                Text1.Visible=False
                MSFlexGrid1.SetFocus
            Case VbKeyReturn ' Нажатие Enter - ввод данных в
    таблицу
                MSFlexGrid1.SetFocus
        End Select
    End Sub

        Pavel Forkin

    У меня в свое время возникала такая проблема. Мне срочно надо было ввести в MS FlexGrid числа. Сделал я примерно так:

    Private Sub grdTable_KeyDown(KeyCode As Integer, Shift As
    Integer)

    'если жмем на цыфру, то покажем ее в активной ячейке
    If KeyCode <= 57 And KeyCode >= 48 Then grdTable.Text =
    grdTable.Text & Chr(KeyCode)

    'покажем также и точку
    If KeyCode = 190 Or KeyCode = 191 Then grdTable.Text =
    grdTable.Text & "."

    если жмем BackSpace, убираем последний символ     If grdTable.Text = "" Then Exit Sub
        grdTable.Text = Mid(grdTable.Text, 1, Len
    (grdTable.Text) - 1)
    End If
    End Sub

    Можно также добавить ввод буковок, учет регистра,возможность блокировки на ввод букв/чисел/регистр и т.д., скомпилировать в .OCX и будет тебе неплохая табличка, а главное СВОЯ, родная(ну или почти своя). Правда, сделать мигающий курсор и позиционировать его . это уже сложнее, но нет ничего невозможного!!!

        Diesel

    наверх


    Как проиграть определенный звук?

    Вопрос:

    Вопрос глупый, но тем не менее: какой командой можно проиграть звук заданой частотой и длительностью?

    Ответ:

    Если под NT платформой, то Beep (АПИ), если под w9* - наверное, никакой.

    Public Declare Function Beep Lib "kernel32" Alias "Beep" (ByVal
    dwFreq As Long, ByVal dwDuration As Long) As Long

        Savenger

    Лучше сделать такое объявление:

    Public Declare Function ApiBeep Lib "kernel32" Alias "Beep" (ByVal
    dwFreq As Long, ByVal dwDuration As Long) As Long

    Ведь в VB есть оператор beep. При использовании могут возникнуть проблемы. А так просто пиши :
    ApiiBeep Freq, Duration Еще одна странность:
    В Qick Basic это делалось элементарно - функцией Sound. Не понятно, зачем ее исключили из VB...
    Была в QB прекрасная функция Play. Она позволяла сыграть простенькую мелодию. Опять же - в VB таковой нет.

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

    наверх


    Как открыть стандартное диалоговое окно выбора папки?

    Вопрос:

    Как открыть стандартное диалоговое окно выбора папки?

    Ответ:

    Public Type BROWSEINFO
        hOwner As Long
        pidlRoot As Long
        pszDisplayName As String
        lpszTitle As String
        ulFlags As Long
        lpfn As Long
        lParam As Long
        iImage As Long
    End Type

    Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias
    "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As
    Long
    Declare Function SHBrowseForFolder Lib "shell32.dll" Alias
    "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
    Public Const BIF_RETURNONLYFSDIRS = &H1

    Public Function SelectDir() As String
    Dim myBrowseInfo As BROWSEINFO
    Dim execNumderDir As Boolean
    Dim NumderDir As Long
    Dim pos As Integer
    Dim myPath_512 As String
    With myBrowseInfo
        .hOwner = Form1.hWnd
        .pidlRoot = 0&
        .lpszTitle = "Выберите директорию"
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With
    NumderDir& = SHBrowseForFolder(myBrowseInfo)
    myPath_512$ = Space$(512)
    execNumderDir = SHGetPathFromIDList(ByVal NumderDir&, ByVal
    myPath_512$)
    If execNumderDir Then
        pos = InStr(myPath_512$, Chr$(0))
        MyPath = Left(myPath_512$, pos - 1)
    Else: MyPath = Empty
    End If
    SelectDir = MyPath
    End Function

        DedMorozzz

    наверх


    Почему происходит ошибка с типами?

    Вопрос:

    Не могу разобраться..


    Private Sub Command1_Click()
        x = 10: y = 20
        Call Proc1(x, y)
    End Sub

    Private Sub Proc1(a#, b#) 'Вот так вот ошибка не вылазит Private Sub Proc1(a, b)
        Form1.AutoRedraw = True
        Print a, b
    End Sub

    Когда я пишу в коде a# или a%(и соответсвенно с b#,b%), то вылазит ошибка, а если "a", то не вылазит Понять не могу. Ведь a# обозначает объявление переменной сдвойной точность. a% -целое чмсло. Почему Так?

    Ответ:

    Переменные сначала нужно объявить! Если не объявить переменную, то она будет считаться типа Variant, а в Proc ты требуешь Double. Нужно вот так:

    Private Sub Command1_Click()
        Dim x As Double
        Dim y As Double
        x = 10: y = 20
        Call Proc1(x, y)
    End Sub

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

    наверх


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

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

    Вопросы:


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

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

       Как можно определить расположения папки 'Мои документы' для текущего пользователя в win2000 (XP)?


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

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

       В PictureBox загружена картика, формата bmp, необходимо перевести ее в формат gif или jpeg, но при этом не сохрянить результат в файл, а держать его в переменной.


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

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

       Есть досовская прога. Хочу сделать для неё интерфейс.

    Вопросы:

    1. Можно ли отслеживать ошибки (точнее текст ошибки), которые могут происходить при работе этой досовской проги? Например, вот:
    http://wolflife.narod.ru/error.jpg
    Как (если можно) получить текст "While reading level of detail 1 from..." и т.д.?

    2. В CommonDialog 'е при выборе файла для открытия параметр FileName возвращает не только имя файла, но и полный путь к нему. А как можно получить только имя файла, без пути?


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

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

       Почему при использовании ф-ции mciExecute (проигрывается *.мр3) файл первый раз играет, а потом появляется одна из ошибок:
    "MMSYSTEM275 Указанный файл не найден. Проверьте правильность ввода пути и имени файла."
    или
    " MMSYSTEM263 Это устройство не является зарегистрированным устройством MCI"
    ?




    Ответы:


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

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

    наверх


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

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


    http://subscribe.ru/
    E-mail: ask@subscribe.ru
    Отписаться
    Убрать рекламу

    В избранное