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


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

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

       Мда... А материалов не видать! Никто не желает возглавить раздел "Библиотека кодов" на vbnet.ru?
    Читайте!


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




    Как сделать правильное объявление функции PtInRect?

    Вопрос:

    Обнаружил в файле Win32API.txt ошибку - АПИ-шная функция PtInRect в этом файле объявлена неправильно. И VB выдает ошибку, что неправильно объявлна функция.

    Так вот вопрос: объявление в файле Win32API.txt такое:

    Public Declare Function PtInRect Lib "user32" (lpRect As RECT, pt As _
    POINTAPI) As Long

    Почему оно не работает? И как сделать правильное объявление?

    Ответ:

    У Аппельмана так:
    Public Declare Function PtInRect Lib "user32" (lpRect As RECT, ByVal ptx As _
    Long, ByVal pty as Long) As Long

        Алексей Вишневский

    наверх


    Как установить фокус на первую строчку в TreeView после заполнения?

    Вопрос:

    Заполняю TreeView програмно. Как установить фокус на первую строчку в нем после заполнения?

    Ответ:

    TreeView1.Nodes(1).Selected = True

        Дмитрий

    наверх


    Где в инете можно найти информацию о VBScript?

    Вопрос:

    Где в инете можно найти информацию о VBScript?

    Ответ:

    От Microsoft:
    http://msdn.microsoft.com/library/en-us/script56/html/vtoriVBScript.asp?frame=true

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

    наверх


    Как быстро очистить TreeView?

    Вопрос:

    Как быстро очистить TreeView? А то вручную долго.

    Ответ:

    TreeView1.Nodes.Clear

        Алексей Вишневский

    наверх


    Почему в VB.NET не работает Imports?

    Вопрос:

    Вопрос по VB.NET
    Пишу
    Imports System.Drawing.Drawing2D
    -выдаёт ошибку. Что я сделал не так?

    Ответ:

    Писать это надо в самом верху (выше объявления класса (Class ...).

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

    наверх


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

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

    Вопросы:


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

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

       Есть программа, написанная на VB. Как сделать ее ShareWare, т.е. как организовать временное ограничение так, что бы над его снятием человеку пришлось бы довольно долго повозиться и все же согласиться заплатить оговоренную сумму?
    Вопрос тот же, но теперь он относиться в DLL - компонентам. Если можно, то расскажите про методы постановки защиты и методах ее обхода.
    Согласен что все это тянет на приличную статью, но может есть линки на уже готовую доку (можно даже с примерами)


    Автор вопроса: Игорь

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

       Как изменить формат бумаги для принтера в VB6 в операционнной среде win2000NT?


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

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

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


    Автор вопроса: Andrew Momotov

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

       Как в VB пользоваться сервисом Telnet? Winsock выдает что-то вроде "яэ.яэ.яэ#яэ'яэ$"


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

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

       У меня ACCESS-овская база данных в одной из таблиц которой имеется поле MySound типа OLE Object. Как с помощью SQL запроса произвести изменения в этом поле, если новое значение я имею в виде байтового массива?




    Ответы:


    Вопрос:

       В функцию передаю указатель на картинку и выполняю следующее:

    hBitmap = LoadImage(App.hInstance, strPath & strBitmap, IMAGE_BITMAP, 320, 200, LR_LOADFROMFILE)
    MsgBox BitBlt(imHandle, arrSkin(0), arrSkin(1), arrSkin(2), arrSkin(3), hBitmap, arrSkin(0), arrSkin(1), vbSrcCopy)

    Не работает! Помогите!

    Ответ:

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

    Смотри, что за функция LoadImage – проблема в ней. И вообще, если хочешь узнать нарисовалось или нет лучше:

    Dim q as long
    Q= BitBlt(imHandle, arrSkin(0), arrSkin(1), arrSkin(2), arrSkin(3), hBitmap, arrSkin(0), arrSkin(1), vbSrcCopy)
    If q<>0 then msgbox “ok”


    Вопрос:

       Понадобилось мне документы вордовские клепать... Всё конечно хорошо, но работа идёт в основном с таблицами. Типа такого:

    set doc=wrd.documents.add
    set tbl=doc.tables.add(doc.range,2,11)
    ...
    ...
    ...
    for i=1 to msfg1.rows-1
         tbl.rows.add
         tbl.cell(tbl.rows.count,0).range.text=msgf1.textmatrix(i,0)
         tbl.cell(tbl.rows.count,1).range.text=msgf1.textmatrix(i,1)
         ...
         ...
    next

    msfg1 - это просто flexgrid. Пример полностью отражает то, что я делаю... Но вот проблема - всё происходит ОЧЕНЬ медленно...
    Приблизительно по полсекунде на строку, может немного меньше. А иногда ведь бывает и по 500 строк...
    Вопрос такой: можно ли как-то уменьшить время выполнения данной задачи методом отключения каких-то лишних фигней в вордовской аппликации или вообще есть какой-то другой способ?

    Ответ:

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

    Процесс будет идти значительно быстрее, если перед заполнением отключить визуальный мониторинг, типа .Visible=false, а затем его включить

    .Visible=true.

    Есть и универсальный метод (.visible всё равно у меня работал быстрее):

    Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As
    Long) As Long
    ...
    LockWindowUpdate .hWnd ' ускорение (выключить обновление окна)
    <действия по заполнению>
    ...
    LockWindowUpdate 0 ' включить обновление окна

    и затем, вероятно,

      <>.refresh


    Вопрос:

       Вопрос по ADO
    На серваке MSSQL2000 есть база. Есть хранимая процедура.
    Хочу открыть рекордсет с возможностью перемещения по записям вверх-вниз.
    Вот такой код.

    Dim rs As ADODB.Recordset, cm As ADODB.Command, param As ADODB.Parameter, dDate As Date
    Set cm = New ADODB.Command
    Set cm.ActiveConnection = cn
    cm.CommandType = adCmdStoredProc
    cm.CommandText = "usr_repWSP"
    Set param = cm.CreateParameter("dDate", adDate, adParamInput, , dDate)
    cm.Parameters.Append param
    Set rs = New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.CursorType = adOpenStatic
    Set rs = cm.Execute

    После выполнения последней строки, рекодсет почему то становится ForwardOnly и adUseServer (как по умолчанию), игнорируя предыдущие установки и естессно метод rs.moveprevious вызывает ошибку. Если же я открываю рекордсет таким образом:

    rs.Source = "sql-запрос такой как в хранимой проц. на серваке"
    rs.activeconnection = cn
    rs.Open

    то он чудесно открывается как и надо в соответствие с установленными свойствами.
    Статический курсор использую из-за того, что запрос с групповой операцией. Помогите разобраться в чём дело? Перепробовал всякие варианты. Неужели через объект ADO.Command невозможно так сделать?

    Ответ:

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

    Угу, так оно и есть. cn.Execute "SQL-запрос" возвращает ReadOnly recordset. В
    MSDN об этом пишется :-(


    Вопрос:

       Использовать функции GDI в GDI+ не катит. Мне нужно что-нибудь аналогичное getpixel/setpixel. И createbitmap с selectobject. В общем, это нужно перевернуть картинку. Не удивлюсь, если в .net уже есть класс для этой беды. Но мне еще нужно будет копировать это на поверхность DirectDrawSurface7! Трюк с методом getCD не пройдет. А может directdraw сам может отразить зеркально? Посоветуйте как решить задачу!

    Ответ:

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

    В принципе, в виндах можно только через GDI работать, или через DX. Писать напрямую в видеопамять тебе никто не даст.




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

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

    наверх


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

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