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

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


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

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


VBNet VBMania
Ссылки:

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

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

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


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




    Как сделать ScrollBar у MDI-формы определённого цвета?

    Вопрос:

    Может быть кто подскажет, как сделать ScrollBar у MDI-формы определённого цвета?

    Ответ:

    ИМХО, средствами ВБ это неосуществимо.

    Возможно, это реализуется субклассингом, но какие сообщения ловить, не знаю.

    Можно попробовать написать контрол-скроллбар, у которого можно менять цвет, повесить на мди-форму и перемещать дочерние окна по клиентской области мди-формы. Но сильно криво и сложно будет...

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

    наверх


    Как заблокировать у MDI-формы кнопки "свернуть" и "во весь экран"?

    Вопрос:

    Как заблокировать у MDI-формы кнопки "свернуть" и "во весь экран"?

    Ответ:

    У "нормальных" окон это реализовывалось установкой свойств BorderStyle, ControlBox, MinButton, MaxButton. У мди-форм таких свойств, естественно, нет. Но можно попробовать сделать так:

    'Получим индентификатор системного меню окна
    hMenu = GetSystemMenu(frmHwnd, 0&)

    'Удалим первый элемент (Восстановить)
    Call DeleteMenu(hMenu, 0, MF_BYCOMMAND)

    'Удалим четвертый элемент (Развернуть)
    Call DeleteMenu(hMenu, 4, MF_BYCOMMAND)

    'Удалим третий элемент (Свернуть)
    Call DeleteMenu(hMenu, 3, MF_BYCOMMAND)



    Пишу по памяти, поэтому не уверен, что сработает

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

    наверх


    Что обозначает второй параметр QueryUnload?

    Вопрос:

    Что обозначает второй параметр QueryUnload(Cancel As Integer, UnloadMode As Integer)?

    Ответ:

    Второй параметр показывает каким способом ты выгружаешь форму, например -
    нажимаешь крест (=Alt-F4) - равен 0, Unload Me - равен 1 и т.д.

        Дмитрий Данелия

    наверх


    Почему форма во время анимации имеет черный фон?

    Вопрос:

    В проге использую функцию AnimateWindows, прописываю её при загрузке, почему при загрузке формы она имеет чёрный фон?

    Ответ:

    Насколько мне известно, пока выполняется анимация, окно не получает никаких сообщений, поэтому отрисовка не происходит. Думаю, реализовать отрисовку во время выполнения нельзя.

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

    наверх


    Каким образом можно запретить "всплывающее" по правой кнопке меню d Internet Control?

    Вопрос:

    Вставляю на форму "окно" IE. Есть некоторые недовольства его поведением. Каким образом можно запретить "всплывающее" по правой кнопке меню, а лучше, как-то его отредактировать или заменить своим?

    Ответ:

    Данный пример покажет, как можно заблокировать стандартное контекстное меню элемента TextBox. Расположите на форме TextBox, а также создайте невидимое меню mnuText и как минимум одно подменю. Запустите проект, нажмите правой клавишей мыши на TextBox'е... элемента TextBox. Расположите на форме TextBox, а также создайте невидимое меню mnuText и как минимум одно подменю. Запустите проект, нажмите правой клавишей мыши на TextBox'е...

    Private Declare Function LockWindowUpdate Lib "User32" (ByVal hwndLock
    As Long) As Long
    Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As
    Single, Y As Single)
    If Button = vbRightButton Then
    LockWindowUpdate Text1.hWnd
    Text1.Enabled = False
    DoEvents
    PopupMenu mnuText
    Text1.Enabled = True
    LockWindowUpdate 0&
    End If
    End Sub

        AlexGL

    наверх


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

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

    Вопросы:


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

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

       Почему у объекта Printer нет метода Print? VB6 OS WinXP.


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

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

       Есть Recordset c N записями. В Wordе есть таблица, состоящая из одной строки. В ячейках таблицы вставлены специальные коды, которые впоследствии заменяются на значения полей Recordseta конкретной записи. Нужно сделать так, чтобы строк в таблице было столько, сколько записей в Recordsetе, и каждая строка в таблице содержала значение определенной записи Recordsetа.
    М-да, прочитал и сам ничего не понял. Короче, заморочка с обёктом Wordа - Table. Я не могу скопировать правильно текст из предыдущей ячейки в вновь вставленную ячейку.


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

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

       Как сделать нечто на подобие проверки орфографии? Есть список слов, есть текстовое поле, туда вводят какое-то слово с ошибкой. Её нужно исправить (т.е. подобрать наиболее похожее слово из списка и предложить его).


    Автор вопроса: Тим

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

       Помогите с MDI интерфейсом плиз!
      
    Есть MDI форма, на ней панель инструментов.
    Есть MDI child, на ней тоже есть панель инструментов.
    Задача обычная: при загрузке дочерней формы надо отобразить обе панели инструментов в родительской форме.
    Сделал как написано в MSDN. установил в род. форме NegotiateToolbar=true.
    Но всё равно тулбары отображаются каждый на своей форме. Если развернуть дочернюю форму , то между тулбаром чилда и тулбаром родителя появляется какой то промежуток, наверное на толщину бордера формы.
    Причём абсолютно независимо от того какое значение NegotiateToolbar, NegotiateMenu всё остаётся на своих местах.
      
    Что ещё необходимо сделать, что бы всё было как в нормальных MDI интерфейсах?


    Автор вопроса: Олег

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

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


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

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

       Акцесс2000 самостоятельно добавляет квадратные скобки и "мусорное" имя для вложеной выборки в SQL запросах.
    Например, было:

         SELECT format(mn,"00") & "." & yr AS dt FROM
         (SELECT month([date]) AS mn , year([date]) AS yr FROM nach)
         GROUP BY yr, mn;

    стало:

          SELECT format(mn,"00") & "." & yr AS dt FROM
          [SELECT month([date]) AS mn , year([date]) AS yr FROM nach]. AS [%$##@_Alias]
          GROUP BY yr, mn;

    Приведеный пример в 1 варианте работает, но всегда исправляется Акцессом на 2-й вариант при начале редактирования и не работает. Кто знает, как отключить любые автоисправления Акцеса в SQL?


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

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

       Как расположить картинку (значок) на кнопке, слева от надписи?


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

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

       Можно ли на объекте Label отоброзить значок ярлыка? Если нельзя, то как в объекте Picture?


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

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

       Как можно увеличить высоту пункта меню (Menu Editor)?


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

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

       Как в SQL сравнить дату из базы данных с системной датой?


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

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

       Создаём игру. По форме ездят два имаджа с картинками и стреляют друг в друга. Как сделать попадание в цель ну и исчезновение одной из сторон. Буду рад если кто рабочий исходник пришлёт.




    Ответы:


    Вопрос:

       На форме 2 елемента Line: Line1 и Line2.
    Надо узнать точку их пересечения.

    Ответ:

    Автор ответа: Корик

    Ну к программированию это имеет мало отношения, это простая математика...

    Функция выражается как y=a*x+b, где а=(y1-y2)/(x1-x2), а b=y1-a*x1.

    Вычислить точку пересечения можно, прировняв две функции:

    a1*x+b1=a2*x+b2 => (a1-a2)*x=(b2-b1) => x=(b2-b1)/(a1-a2)

    Ну там кучу всего можно сократить наверняка, получится что-нибудь более короткое.... А y нахожится методом подставления найденного x в одну из функций. Как видно из формулы, если а1=а1, то нифига не получится, так как линии параллельные...


    Вопрос:

       А где можно взять описание по Webbrowser, т.е. что пишется после:
    WebBrowser.Document. ...

    Ответ:

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

    В MSDN - что-то вроде Web Workshop или HTML Reference.



    Ответ:

    Автор ответа: Корик

    Лично я ставил после WebBroweser.Document всё то, что можно поставить после Document объекта в Jscripte / VBScripte... То есть всё это ты можешь найти в МСДНе на предмет "Document object". Я этого точно не знаю, сам изучал, но WebBrowser.Document.getElementsByName вполне неплохо работало.


    Вопрос:

       Как в RichTextBox управлять VScrollBar-ом, т.е. узнать его положение и потом вернуть (после перезагрузки текста) его на место (вместе с скролингом текста).

    Ответ:

    Автор ответа: C...R...a...S...H

    У него может быть свойство TabIndex как у ListBax'a воспользуйся им, если оно есть :)
    Если его нет то есть свойство отвечающее за позицию курсора попробуй через него.


    Вопрос:

       Как организовать поиск в базе данных Access с помощью обекта Data? Пробовал с помощью Seek "=", но для него нужно вводить полное значение ячейки, а мне нужно по первым нескильким буквам. А потом построить список из значений ячеек, удолетворяющих условию.

    Ответ:

    Автор ответа: C...R...a...S...H

    Можно сделать запрос
    "SELECT * FORM XXX WHERE XX LIKE 's%'"
    поиск значений начинающихся с s. Если не работает, то попробуй % поменять на *.



    Ответ:

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

    sSQL="SELECT *(все поля) FROM _имена_таблиц(ы)_ WHERE _поле_ LIKE _значение_"

    Например:

    "SELECT * FROM MyTable WHERE ID > 10 AND Name LIKE '*вано*'"

    Звездочки после LIKE указывают на возможные символы, как в маске файла. Потом:

    Data.recordset=sSQL
    Data.refresh


    Вопрос:

       Как сохранить файл поверх другого файла?

    Ответ:

    Автор ответа: CaptW@avtograd.ru

    Точно так же, как и при сохранении не поверх другого файла.



    Ответ:

    Автор ответа: C...R...a...S...H

    Сначала удаляешь файл при помощи kill, а потом записываешь заново. Если переписать необходимо при открытии файла то пишешь:

    open "c:\1.txt" for output as #1



    Ответ:

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

    sFile = "C:\AUTOEXEC.BAT"

    If Dir(sFile, vbHidden) <> "" Then
        MsgBox "Файл существует"
        Kill sFile 'Удаляем
        Open sFile ...
             ...
             Записываете новый файл
        Close ...
    End If


    Вопрос:

       Как получить список папок, находящихся в определенной папке?

    Ответ:

    Автор ответа: C...R...a...S...H

    Можешь воспользоваться контролом DirList.



    Ответ:

    Автор ответа: Данила

    С помощью dirlistbox.



    Ответ:

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

    Project--References--Microsoft Scripting Runtime

    Dim FSO As New FileSystemObject
    Dim fFolder As Folder
    Dim fSubFolder As Folder

    Set fFolder = FSO.GetFolder("C:\")
    For Each fSubFolder In fFolder.SubFolders
        Me.Print fSubFolder.Name
    Next


    Вопрос:

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

    Ответ:

    Автор ответа: Данила

    Добавляешь форму MDI. У дочерней формы ставишь MDIChild=true В главной форме пишешь:

    Load Форма1




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

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

    наверх


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

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


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

    В избранное