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


VB Студия VBMania VB Line
Голосование:

Ваш голос отсылается по E-mail владельцу сайта, после чего голоса анализируются и на отдельной странице выводятся результаты.

Subscribe.Ru увеличило максимальный размер рассылки до 100 кб. В связи с этим вопрос:
Какого размера Вы хотели бы получать рассылку?

Менее 20 кб
От 20 до 40 кб
От 40 до 60 кб
От 60 до 80 кб
Выше 80 кб


В какой день (дни) недели Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."?
Понедельник
Вторник
Среда
Четверг
Пятница
Суббота
Воскресение


С какой периодичностью Вы хотели бы получать рассылку "Visual Basic: новости сайтов, советы, примеры кодов."?
Каждый день
2 раза в неделю
Раз в неделю
Раз в две недели
Раз в месяц
Реже


Результаты голосования
Рассылки Subscribe.Ru
Новости сайта VBline и советы программистам
Мир программирования на Visual BASIC 5.0 и HTML.

Доска почёта:

Sergey Y. Tkachev
Кононенко Роман
Sergey Sapozhnikov
Sobic

Ссылки:

  • Улицы VB
  • Использование VB
  • VB Line
  • Азбука VB
  • VB на русском
  • Улицы VB
  • VB - шаг за шагом
  • Кирпичики VB
  • CообЧа VB
  • VB по русски
  • Snoozex Design
  • Несколько слов от автора:

       Не вижу Вашей активности в форуме.
    Теперь в каждом выпуске рассылки Вы сможете узнать новости ещё одного сайта - VBMania.
    Читайте!


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




    О системе Эксперт
    - Привет, Серый.
    - Угу, привет. Ты проходи, садись, я щас, с функцией тут разберусь...
    - Да я на момент. Вопросец имеется.
    - Вопросец, вопросец... Так, тут переменная не объявлена... Вопросец... С вопросами в систему, к экспертам... А тут точку не поставил! Вот она где, соб-бака!!
    - Ты че, какая система? Ты о чем?
    - О! Все, работает... Чего ты говоришь?
    - Ты про каких это экспертов тут заикаешься?
    - А-а. А ты что, первый раз слышишь, что ли? Ты на СообЧа бывал?
    - Где?!!
    - Да вот, гляди. Щас соединимся... Во! http://soobcha.ru, зришь?
    - М-да... Занятно. Так я с вопросом к тебе...
    - А я вот и говорю: туда иди, в систему "Эксперт", там ответят.
    - Это чайники, что ли, ответят?
    - Не сомневайся, ответят. Там у них такое наворочено... Короче, ты по почте вопрос свой задаешь - и все:)))))) Больше не изволь беспокоиться, там они сами будут искать ответ на твой вопрос. А через некоторое время вывалят тебе на ящик не один, а несколько ответов. Пользуйся и радуйся:)
    - А чего это они там такие добрые да услужливые? У них чего, своих проблем нет? Сколько я должен платить за такое трогательное беспокойство?
    - Ну, это немного. Меньше, чем ты думаешь:) Тебе достаточно только подтвердить правильный ответ. Давишь на соответствующую ссылку, дескать, вот этот ответ мне понравился, помог, и я доволен. Просто пустое письмо засылаешь к ним, и вся оплата. А если хочешь у них экспертом стать, то пожалуйста, регистрируйся и отвечай на вопросы.
    - Кем? Экспертом?
    - А что? Что-то ты ведь знаешь, не вчера за комп сел.
    - А на фига мне это надо? Разбираться с чужими проблемами... У меня своих - хоть отбавляй...
    - Ага. Вот ты только что спрашивал: а сколько? И если уж ты со своими проблемами обращаешься к людям, то ведь надеешься, что тебе помогут. А сам-то что, влом, что ли, помочь кому-то? Да ладно! Тебя, вобщем-то, никто и не тянет, не заставляет. А вот те, кому интересно, кому не жаль поделиться, те там и работают. Я, между прочим, давно уже с ними.
    - В смысле, экспертом, что ли, заделался? И сколько тебе платят?
    - А ты не прикалывай. Там никто никому не платит. А вот конкурсы, между прочим, проводят, и не хилые. Представляешь, за лучший ответ дают бесплатно три месяца платного хостинга, да еще домен регистрируют. За просто так. А вот тебе, если ты задашь самый лучший вопрос, тоже приз может выгореть.
    - Это как: лучший? На который никто ответить, что ли, не сможет? Так я щас таких вопро...
    - Причем тут это? Просто ты, если вопрос пишешь к ним, так сподобься хоть запятые в нужных местах поставить, там, грамотно, короче, обрисуй свой трабл.
    - Ну ладно, въехал. Ты мне вот лучше помоги с моим траблом. Мой Фотошоп не хочет по русски работать...
    - Ха, так этот трабл там уже сколько раз появлялся. У них на сайте и ответ есть... Вот, любуйся: Заходим в редактор реестра (regedit.exe). Находим ключ HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\Nls\Codepage В нем изменяем значение параметра 1252 с cp_1252.nls на cp_1251.nls. Перезагружаемся...
    - Понял... погоди, запишу...
    - Да чего записывать? Шагай домой, входи на сайт и копируй...
    - Да я ссылку запишу... Слушай, а как там в эту систему вопрос задать? Вообще, как она работает?
    - Так тут же, на сайте, все есть. А вообще, можешь по почте пустое письмо загнать на mailto:reply.infoexpert@soobcha.ru, и получишь всю необходимую инфу. А вообще, ты лучше в следующий раз с вопросами не ко мне, а туда. Может, я и отвечу там.
    - А не проше тебе здесь ответить?
    - Э-э-э... Там я баллы зарабатываю...
    - А это еще зачем?
    - Ладно, мотай. Дома почитаешь, все о них узнаешь. У меня тут халтурка... Давай, пока.
    - Пока. А как ты экспертом там зарегился?
    - Иди, иди! Инфу читай...

    наверх


    Новости сайта VB Студия

    • 7 декабря 2001 года - Добавил 4 примера. Один копирует в буфер обмена изображение формы. Второй сохраняет изображение формы в bmp файл. Третий отображает список всех подпапок в папке. А четвёртый пример - пример использования API-функций SetCursorPos и ScreenToClient.
    • 3 декабря 2001 года - В раздел Контролы выложил контрол для модифицирования менюшек.
      Пополнение в разделе Юмор.
    • 30 ноября 2001 года - В разделе Утилиты появилась новая версия программы Crimson Help.

      Хочу сообщить ПРЕпреятнейшее известие!

      После продолжительного и напряженного труда над собой, первый on-line журнал о Visual Basic - “VB Мания” вновь открывает свои страницы. Мы изменились, мы повзрослели и созрели для настоящей качественной работы.

      Изменилось буквально все: дизайн, появились новые авторы, новые руководители, новые потрясные статьи, новые классные рубрики, новые сервисы (Моя мания - особенно интересная вещь, обратите внимание), новый адрес - http://www.vbmania.ru/ и многое многое другое, но мы не забыли и старое, самое лучшее осталось от прежнего сайта: новости с различных сайтах о VB, наша рассылка, поисковик по VB сайтам, форум.

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

      Заходите, смотрите, читайте мы всегда Вам рады.
      http://www.vbmania.ru/ - Первый on-line журнал о VB

    • 28 ноября 2001 года - Выложил новые примеры.
      Открыт новый раздел Юмор. В нём расположены анекдоты и юмористические рассказы на компьютерную тематику.
    • 25 ноября 2001 года - Выложил в раздел статьи 4 статьи о Winsock control.


    наверх


    Новости сайта VB Line

       02 декабря 2001 г. Зима пришла, у нас снегу уже море... Итак, обновления, начнем пожалуй с раздела  VB хитрости, там работа Игоря Малиновского, она касается тех, кто хочет устанавливать новые шрифты в систему, в общем, их надо не просто копировать в специальную папку, но и регистрировать, хитрость публикуется с примером. Stas(Sheff) Vorobiov прислал новый пример, и он очень интересный, пример показывает как манипулировать окнами в системе: закрывать, менять заголовки, рисовать на них и т.д. Ну и на закуску пример от Дещенко Дмитрия по поводу Alpha Blending. Да, чуть не забыл, Alex Murygin прислал новый код для совета про кнопку закрытия окна. Он пишет, что его код работает более корректно
       24 ноября 2001 г. Вы уже заметили небольшое изменение дизайна сайта? Так лучше? Предложения и замечания присылайте мне shatrykin@mail.ru. В разделе Примеры положил интересную работу Беляева Данилы, программа выводит список всех запущенных программ и может их "убивать". Там же, очень интересная DLL-ка с примером для работы с LPT портами. И еще, нашел в сети очень забавный пример: игра типа морского боя, принцип простой, плывет корабль, а Вы его ракетами... в общем играл я в нее и время кончилось, поэтому и обновлений маловато.
       12 ноября 2001 г. Решил, что Вам будет интересно узнать, кто сюда ходит и какова аудитория сайта. Все данные оформил в читаемом виде и положил сюда. Смотрите, читайте и изучайте. Конечно, немного, но все же статистика.
       11 ноября 2001 г. Ну вот, 7 ноября мне стукнуло 27 лет. Эх.. время. Ну да ладно, в Примеры положил интересную работу Андрея Перминова - добавление заголовка в обычное меню, думаю, что это будет интересно многим. Наконец-то появился новый совет, все наверное видели окна с недоступной кнопкой закрытия окна, а вот как это сделать, думаю, знают не все. Скажу сразу, что автор мне неизвестен, поэтому, если что, то пишите мне shatrykin@mail.ru. И, напоследок, хочу пожаловаться: что-то Вы мне маловато материала присылаете. Активнее надо быть!

    наверх


    Новости сайта VBMania

    • 27.11 - Наконец-то, после долгих дней и бессонных ночей это свершилось! Сайт объявляется открытым! Непременно прочитайте первый номер нашего журнала. Оцените наши дополнительные проекты. И конечно мы ждем ваших откликов в гостевой книге и по почте.
    • 01.12 - Произошло несколько косметических улучшений, касающихся исключительно удобства работы с сайтом. Во-первых, можно видеть количество записей обсуждения новостей на главной странице; а во-вторых чуточку подправились директории.
      Оценяйте!
    • 02.12 - Наконец-то исправлена ошибка в Моей Мании, которая проявлялась исключительно в Windows XP. Теперь все работает как надо!


    наверх


    Преобразование таблицы из базы данных в HTML файл

    Автор Vincent Zack

    Const T1 = vbTab
    Const T2 = T1 & T1
    Const TR = T1 & "<TR>"
    Const TD = "<TD>"
    Const TDEND = "</TD>"
    Const TABLESTART = "<TABLE BORDER WIDTH=100%>"
    Const TABLEEND = "</TABLE>"


    Function HTMLTable(dbRecord As Recordset) As String


         Dim strReturn As String
         Dim Fld As Field
         On Error Goto Return_Zero
         strReturn = strReturn & TABLESTART & vbCrLf
         strReturn = strReturn & TR


         For Each Fld In dbRecord.Fields
             strReturn = strReturn & TD & Fld.Name & TDEND
         Next Fld

         strReturn = strReturn & vbCrLf
         dbRecord.MoveFirst


         While Not dbRecord.EOF
             strReturn = strReturn & TR


             For Each Fld In dbRecord.Fields
                 strReturn = strReturn & TD & Fld.Value & TDEND
             Next Fld

             strReturn = strReturn & vbCrLf
             dbRecord.MoveNext
         Wend

         strReturn = strReturn & TABLEEND
         Return_Zero:
         HTMLTable = strReturn
    End Function

    наверх


    Используйте оператор With

    Если Вы хотите, чтобы Ваш код легко читался, то используйте в своих программах оператор With. Этот оператор, как говорят, был позаимствован из Паскаля, с некоторой модификацией. Посмотрите на следующий пример:

    MSAgent.Characters("Default").Commands.Caption = "MSAgent Commands"

    MSAgent.Characters("Default").Commands.Visible = True

    MSAgent.Characters("Default").Commands.Voice = "MSAgent Commands"

    MSAgent.Characters("Default").Commands.Add "Bye bye", "Bye bye", "... bye bye ...", True, True

    MSAgent.Characters("Default").Commands.Add "Down", "Down", "... down ...", True, True

    MSAgent.Characters("Default").Commands.Add "Happy", "Happy", "... happy ...", True, True

    MSAgent.Characters("Default").Commands.Add "Hello", "Hello", "Hello Merlin", True, True

    MSAgent.Characters("Default").Commands.Add "Left", "Left", "... left ...", True, True

    MSAgent.Characters("Default").Commands.Add "Move", "Move", "... move ...", True, True

    MSAgent.Characters("Default").Commands.Add "Right", "Right", "... right ...", True, True

    MSAgent.Characters("Default").Commands.Add "Sad", "Sad", "... sad ...", True, True

    MSAgent.Characters("Default").Commands.Add "Up", "Up", "... up ...", True, True

        Ну как? Все разобрались? Думаю, что этот код очень сложно читать. А вот если Вы примените оператор With, то тот же код можно записать в следующем виде:

    With MSAgent.Characters("Default").Commands

        .Caption = "MSAgent Commands"

        .Visible = True

        .Voice = "MSAgent Commands"

        .Add "Bye bye", "Bye bye", "... bye bye ...", True, True

        .Add "Down", "Down", "... down ...", True, True

        .Add "Happy", "Happy", "... happy ...", True, True

        .Add "Hello", "Hello", "Hello Merlin", True, True

        .Add "Left", "Left", "... left ...", True, True

        .Add "Move", "Move", "... move ...", True, True

        .Add "Right", "Right", "... right ...", True, True

        .Add "Sad", "Sad", "... sad ...", True, True

        .Add "Up", "Up", "... up ...", True, True

    End With

        Да, и не забудьте сделать отступы, это сделает Ваш код лучше. Кроме улучшения читаемости кода, оператор With дает ещё одно преимущество: код, при достаточной вложенности, быстрее выполняется. Это происходит потому, что VB кэширует объект и ему не приходится каждый раз просматривать все объекты. Однако, не всё так просто! Я заметил, что если вложенность маленькая два, три объекта, то этот метод может дать и отрицательный результат в производительности. Но, думаю, что преимущество лёгкости чтения должно пересилить соблазн поддаться более производительному коду.

    наверх


    Методика обработки ошибок в программах

    В данном контексте ошибками я буду называть истинные ошибки, т.е. то, что может случиться, а не "жучки" (bags) - вот их то не должно быть. Итак, ошибка это примерно следующее - Вы своей своей процедуре ожидаете параметр X от 1 до 100, а пользователь передает туда число 500, с которым Вы ничего не можете сделать (может Вы ожидаете проценты?). Так вот, что же делать? Существует несколько путей, по которым можно пойти:

    - Первый путь я бы назвал "Да пошли Вы всё к чёрту", немного грубовато, но зато точнее не скажешь. Идя по этому пути мы ничего не делаем, в Visual Basic есть своя система обработки ошибок и мы полностью ей доверяем. Но не думайте, что это кому-то может понравиться. Дело в том, что пользователь, который сделал что-то не так, увидит весьма ясное сообщение о том, что же он сделал, но и программа завершится, а с ней и, может быть, чей-то целый день работы пойдет "коту под хвост". Ну как? Вы еще не передумали следовать этой стратегии? Тогда и флаг Вам в руки, пользуйтесь сами своими программами!

    - Второй путь это запрет ошибок. А что? Вы думаете не пойдёт? Ещё как пойдёт. Если Вам глубоко наплевать что Вам передают, и Вы абсолютно уверены, что ничего плохого не произойдёт с программой, то можно придерживаться этой стратегии. Только не переусердствуйте. Пользователи они ведь бывают умными и смеются над нами, программистами, когда видят на прогресс-баре 102%.

    - Третий путь это стратегия Windows API. Не секрет, что многие (пожалуй половина) функций API возвращают код ошибки. Путь неплохой, но и в нём есть некоторые ограничения - возвращаемое значение всегда зарезервировано под код ошибки. Можно, конечно, возвращать, например, при нормальном завершении нужный результат, а при ошибке код возникшей ошибки как отрицательное число. Если Вас это устроит, то, пожалуйста, используйте этот путь.

    - Четвертый путь также активно применяется в API это передача кода ошибки через специальное свойство (функцию). Для этого, например, в классе объявите свойство, например GetLastMyError, и передавайте туда код ошибки. Если кому-то нужно узнать какая же ошибка произошла в действительности, то пускай получают описание через это свойство. Ну а для того, чтобы сообщить что ошибка произошла, возвращайте всеми своими функциями признак ошибки, например 0.

    - Есть ещё одна очень хорошая стратегия это генерация собственных ошибок. Например Вам передали 500%, вместо числа от 1 до 100? Смело генерируйте ошибку следующим кодом:

    Err.Raise vbObjectError + 1001, "Progress bar generator", "Разве проценты могут быть больше 100?"

    А что это за константа такая vbObjectError? Советую её Вам использовать, и не спрашивайте меня почему, я толком и вам не знаю!

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

    наверх


    Перекодировка текста из DOS в Windows формат

    Демин Антон [http://www.demin52.com] прислал новый совет. Он пишет, что если Вам нужно конвертировать текст формата DOS в Windows (1251), то в API есть на этот случай хорошая функция: OemToChar.

    Объявляется она так:

    Public Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long

    Используют её следующим образом:

    Dim l_lReturn as Long

    Dim l_sSource as String

    Dim l_sDestination as String

    l_lReturn = oemtochar(l_sSource, l_sDestination)

    Кроме этой полезной функции в API имеется и обратная её функция: CharToOem. Она служит для выполнения той же работы, только наоборот, т.е.Windows (1251) в  DOS.

    Declare Function CharToOem Lib "user32" Alias "CharToOemA" (ByVal lpszSrc As String, ByVal lpszDst As String) As Long



    наверх


    Как узнать положение каретки в RTF или TextBox

    Этот совет снова от
    Демина Антона [http://www.demin52.com]. Он посвящен методу определения текущего положения каретки в текстовом окне или RTF. Итак, ниже представлен код, который при каждом нажатии кнопки показывает текущее положение курсора:

    Для начала объявите функцию GetCaretPos и тип POINTAPI для неё.

    Private Type POINTAPI

        X As Long

        Y As Long

    End Type

    Private Declare Function GetCaretPos Lib"user32" (lpPoint As POINTAPI) As Long

    Поместите на форму TextBox1 и в событие KeyPress впишите:

    Private Sub Text1_KeyPress(KeyAscii As Integer)

    Dim XPos As Long 

    Dim YPos As Long

        XPos = GetTCursX

        YPos = GetTCursY

        Me.Caption = "X: " & XPos & " Y: " & YPos 

    End Sub

    А это, собственно, код, отвечающий за выдачу нужных нам данных:

    Public Function GetTCursX() As Long

    Dim pt As POINTAPI

        GetCaretPos pt

        GetTCursX = pt.X

    End Function

    Public Function GetTCursY() As Long

    Dim pt As POINTAPI

        GetCaretPos pt 

        GetTCursY = pt.Y

    End Function



    наверх


    Книги

    Visual Basic 6 для Web

       Предлагаемая книга предназначена для начинающих и профессиональных разработчиков мощных приложений для использования в среде WWW и корпоративных сетях. Содержит введение в интегрированную среду разработки Web-приложений Visual InterDev, подробное описание языка VBScript и принципов его применения при работе с броузером. Изложены методы повышения интерактивности и привлекательности Web-узла с помощью элементов управления ActiveX и технологии Active Server Scripting; большое внимание уделяется средствам доступа к данным из Web-приложений посредством объектов ADO.


    Уильам Мартинер, "BHV-Kиeв" - 2000, 384 стр.
    Стоимость: 104,71 р.
    Формат книги: 70х100/1
    Переплет: нет данных

    Visual Basic 6 приложение

       Книга состоит из 3 частей (34 главы) и предметного указателя. Написанная живо и доходчиво, она позволит освоить множество полезных приемов программирования, в том числе объектно-ориентированного, и научит, как создавать 32-разрядные приложения для Windows 95/98 и Windows NT — от экранных заставок до программ, ориентированных на Интернет. Кроме того, Вы узнаете, как расширить возможности языка за счет функций Win32 API и воспользоваться преимуществами технологии ActiveX.
       Книга предназначена всем программистам, которые имеют базовые знания по элементам языка Visual Basic, желают изучить Visual Basic версии 6.0 и стремятся повысить квалификацию. Она в полной мере оправдывает свое название — это действительно "мастерская разработчика".


    Нет данных по автору(ам), "Русская редакция" - 2001
    Стоимость: 250,93 р.
    Формат книги: нет данных
    Переплет: нет данных

    Visual Basic 6 разработка приложений + приложение

       Данная книга является наиболее полным практическим руководством по конструированию современных полнофункциональных Windows-приложений на базе Visual Basic 6.0.
       В книге рассматриваются основные понятия и приемы программирования на Visual Basic, принципы разработки приложений с помощью методов объектно-ориентированного программирования. Большое внимание уделено работе с базами данных, использованию ActiveX-технологии и средств Windows API и OLE Automation, финансовому анализу, программированию игр, мультипликации. Имеется ряд упражнений повышенного уровня сложности, решение которых Позволит приобрести устойчивые практические навыки.


    Гарнаев А.Ю., "BHV-Санкт-Петербург" - 2001, 448 стр.
    Стоимость: 138,98 р.
    Формат книги: 70х100/16
    Переплет: нет данных



    Остальные книги о VB из магазина Колибри можно найти
    здесь.

    наверх


    Анонсы эхо-конференций СообЧа

    Старые игры

       
    Давным давно, когда компьютеры были большими, а игры - маленькими... Стоп, а как же называлась моя старая игра, в которую я часами играл с друзьями? Да, да, еще с VGA-шной графикой и PC-спикером в качестве звука! Вспомнили? В этой группе вам помогут это вспомнить. Обсуждения старых игр, вопросы их прохождения, секреты и коды - список тем самый разнообразный! Ведь только в старых играх осталась та крупица геймплея, которой так не хватает сегодняшним играм... 1994, 1993, 1992... - отсчет назад пошел, присоединяйся!!!

    Подписаться

    FAQ от системы Эксперт

       
    Теперь каждую пару «вопрос-ответ» система Эксперт отправляет в эту группу. Любой и каждый может свободно сказать: «Здесь в ответе неточность. Здесь нужно вот так…». Иначе сказать, подписавшись на сообщения этой эхо-конференции, вы сможете не только быть в курсе всех без исключения FAQ, формируемых системой, но и откорректировать ответ, поправить и даже открыть обсуждение по его поводу. Следовательно, отныне у вас будет наиболее полные и точные ответы на вопросы, проходящие через систему.

    Подписаться

    Виртуальная гостиная "По Душам"

       
    Виртуальная гостиная, где можно найти друзей или просто поговорить о жизни за чашкой чая или кружкой пива, при этом невзначай оказавшись в Королевстве Амбер, где можно запросто пообщаться с его королем — Рэндомом, попытаться расспросить у кавалера Ордена Бойцового Кота — КоТа про интереснейшую жизнь Васи сНежного, узнать — кто такие «мамонты», полюбоваться видами Байкала и вулкана, попробовать стряпню Бера (если вам удастся уговорить его отложить любимый меч ненадолго в сторонку), и не только это...

    Подписаться

    Почтовые рассылки и конференции

       
    Группа посвящена почтовым рассылкам, конференциям и всему, что связано с ними. Главная тема - обсуждение факторов, влияющих на популярность рассылок - периодичность, тематика, контингент подписчиков и т. п. Приветствуются конструктивные идеи по этому поводу. Также будут обсуждаться вопросы открытия, продвижения рассылок, особенностей дизайна и многое другое. Разрешен обмен подписными формами и анонсы новых рассылок.

    Подписаться

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

       
    Как позвонить на телефон в другом городе через интернет? Какой программой просмотреть файлы *.wmv? Отчего текст печатается закорючками? В этой группе вы сможете задать любые интересующие вас вопросы. Чем сможем — поможем!

    Подписаться

    наверх


    Доска объявлений

       Ищу телеработу.

    • Переводы: английский, украинский, русский.
    • Cipper программист.
    • Assembler программист.
    • PIC разработчик
    • композитор
    • Прогрессивные стили
    • 3D анимация
    • GIF анимация
    Антон Лозовский.

       Объявляется конкурс на лучщий баннер для сайта VB Студия. Приз за лучший баннер - 5000 показов баннерообменной сети TLE. Вопросы и предложения по этому адресу

    наверх



    Мои программы

    BalloonMessage for MS Agent

       BalloonMessage for Microsoft Agent реализует диалог программы с пользователем, используя при этом технологию Microsoft Agent. OCX реализует три типа диалоговых окон: InputBox, MsgBox и MsgLabels.

    Автор: Шатрыкин Иван. Соавтор: Павел Сурменок.
    Подробнее...


    наверх


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

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

    Вопросы:


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

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

       Esli cto sharit v DirectDraw .Pomogite kak mogno zapolnit' surface iz gif fila ???


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

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

       Est' array tipa Byte soderjashiy v sebe kakoyto gif file , kak etot array zakinut' v picture box ????


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

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

       Есть необходимость запускать и модифицировать документы Word & Excel 95 из-под VB. Но MS Word (Excel) 8.0 Object Library не дает такой возможности ("Run-time error 429. ActiveX Component cannot create object.")
    Можно ли это дело объехать?
    Или, может, кто встречал библиотеки MSWORD7.OLB и WSEXCEL7.OLB?


    Автор вопроса: Сергей

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

       Еть массив Arrray(100). Как можно удалить срез массива, например, с 40 по 70 элементы.


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

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

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


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

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

       U menyia programma na Access. V programme (form) forma dla usera . V etoye forme est knopka ili icon katoraya vidiot k kakomu-to destviye ili k drugoye forme. Kak mojna sdelat password dla etoye knopki, to est esli user najimaet knopku poyavitsa obyavlenie vadi vash parol (enter your password).


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

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

       Как с помощью VB сфотопрафировать экран(как PrintScreen)?




    Ответы:


    Вопрос:

       Создал на VB6 приложение для работы с БД в локальной сети. Работает, честно говоря, медленно. Друзья говорят, напиши в Delphi - работать будет быстрее. Действительно ли это так, или это дело вкуса, в чем писать?


    Ответ:

    Автор ответа: Шатрыкин Иван

    А еще говорят, что нужно использовать ADO, который быстрее в сети на порядок. Кроме того, бывают случаи, когда DAO 3.51медленно работает из-за каких то внутренних проблем драйвера на некоторых машинах. Проблема решается использованием DAO 3.6, которая значительно шустрее именно в локальной сети. По поводу Delphi - чушь, дело в том, что в любом случае будут использоваться одни и те же библиотеки DAO или ADO.


    Вопрос:

       Создал на VB6 приложение для работы с БД в локальной сети. Работает, честно говоря, медленно. Друзья говорят, напиши в Delphi - работать будет быстрее. Действительно ли это так, или это дело вкуса, в чем писать?


    Ответ:

    Автор ответа: Sergey Y. Tkachev

        Често говоря, мне это кажется странным. Нет, я не буду спорить с тем человеком, который перепишет ЭТО на VC++, но на Delphi?......
        Вообще, я имею некоторую неприязнь к продуктам Borland (простите употребление устаревших названий :)). Видел, как тормозил тандем C++ Builder5 и MSSQL7. Жутое зрелише. Нет, возможно задержка в 1 сек. на одном запросе для кого-то покажется нормальной, но на VB за это время благополучно
    исполняется 10 запросов!!!

        Я думаю, что Ваша проблема связана с одной из следующих причин:
    1) что-то не то с самой базой
    2) что-то не так написано на VB.

        Для того, чтобы дать совет в Вашей ситуации, расскажите, плз., какую базу Вы используете, какие таблицы и взаимосязи, какие запросы. Что Вы понимаете под "сетевой" базой: какой-нибудь сервер БД или линкованые таблицы MS Access? Какую технологию доступа к данным Вы используете: DAO, ODBC, ADO, RDO etc.?
        Ну вот, получился не ответ, а множество вопросов. Может, это хоть немного Вам поможет, заставит задуматься, поискать и попробовать различные пути. Если нужна более подробная информация - подробнее опишите Вашу задачу. Одно могу сказать точно, т.к. проверено на личном опыте: с Майкрософтовскими БД лучше работать через Майкрософтовскую софту. Я не сторонник шнурков разного цвета.


    Вопрос:

       Если есть у кого-нибудь пример как записывать и считывать данные из ячеек Excel-я в VB не в VBA, пришлите, плиз!!

    Ответ:

    Автор ответа: Шатрыкин Иван

    У немя есть програмка, которая это делает:
    Вот кусочек кода для получения данных:

    'ссылка на объект
         Set XLApp = GetObject(, "Excel.Application")
         'переключиться в Excel
         XLApp.Visible = True
    'сообщение пользователю
         MsgBox "Выделите область с данными и нажмите Ok"
    'значение из таблицы
         DataExcel = XLApp.Application.Selection.Value
      
    Переменная DataExcel будет иметь вид обычного массива данных.


    Вопрос:

       Если есть у кого-нибудь пример как записывать и считывать данные из ячеек Excel-я в VB не в VBA, пришлите, плиз!!

    Ответ:

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

        Чтобы читать и писать данные в файлах Excel из VB можно подключить к проекту библиотеку Excel (Project->References..., библиотека Microsoft Excel x.0 Object Library), потом создать переменную типа Excel.Application и работать с помощью этой переменной как в Excel VBA
        Примерно это может выглядеть так:

    Dim xlApp As Excel.Application
    Dim uniVar As Variant

    On Error Resume Next
    ' если Excel уже запущен, будем использовать его
    Set xlApp = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then Set xlApp = CreateObject("Excel.Application")
    ' если произошла ошибка (Excel не был запущен) запускаем Excel сами
    On Error GoTo 0

    With xlApp
         uniVar = .GetOpenFilename("Excel Workbook (*.xls), *.xls", , "Open file for ...")
         If uniVar = False Then GoTo ExitNode
         .Workbooks.Open FileName:=uniVar
         Set uniVar = .ActiveWorkbook.ActiveSheet
         uniVar.Range("A1").Value = "Huray! This cell filled by VB!"
         ' do some stuff ...
    End With

    ExitNode:
    uniVar = Empty
    xlApp.Quit
    Set xlApp = Nothing

        Единственное ограничение: код будет работать только на машине с установленным Excel'ем.
        Еще можно заморочиться, раздобыть описание формата Excel'евских файлов и написать алгоритм чтения этих файлов самому, но стоит ли так морочиться?


    Вопрос:

       Подскажите пожалуйста как сделать Репорт на основе данных массива.

    Ответ:

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

    Просто на просто запусти вложенный цикл:
      
    Dim Mas(1 to 10;1 to 10)
      
    for i=0 to ubound(mas,1)
         for j= ubound(mas,2)
                 text1.text= text1.text & mas(i,j) & chr(13) & chr(10)
         next
    nex


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

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

    наверх


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

    Сурменок Павел и Шатрыкин Иван