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


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). Правильная ссылка: http://vbnet.ru/profile/subscribe.asp
    Читайте!


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




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

    Вопрос:

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

    Ответ:

    Создай обычную формочку (Splash)
    Добавь в проект модуль кода (Add Module)
    В этом модуле создай процедуру Sub Main() из которой показывай свою формочку

    Sub Main()
         Form.show
    end sub

    В Меню VB Project --> Project Properties в StartUp Object установи Sub Main
    А далее из этой формы по истечение определенного времени (можно по таймеру) запускай основную форму программы, а эту выгружай.

        Сергей Л.

    наверх


    Как узнать на каком элементе TreeView был сделан Right click?

    Вопрос:

    Как узнать на каком элементе TreeView был сделан Right click?

    Ответ:

    В событии NodeClick дерева нет параметра Button. Поэтому чтобы отслеживать нажимаемые кнопки в этом событии можно использовать следующий код:

    Option Explicit
    Dim vButton As Integer

    Private Sub TreeView1_MouseDown(Button As Integer, Shift As Integer, x As
    Single, y As Single)
         vButton=Button
    End sub

    Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
         'В переменной vButton хранится номер нажатой клавиши мыши.
         'Можете добавить код для его обработки.
    End sub

    Работает все так: событие MouseDown происходит раньше NodeClick. Перед событием NodeClick положение клавиши запоминается в событии MouseDown, все просто.

        Дмитрий

    наверх


    Как текст отправлять по SMTP?

    Вопрос:

    Как текст отправлять по SMTP? Мне надо чтобы VB .Net забирал текст из текстбокса и, по SMTP, отправлял его на e-mail.

    Ответ:

    Можно и без знания протокола SMTP. Взгляни на пространство имён System.Web.Mail. Класс SMTPMail - собственно, для отправки письма. Там указывается smtp-сервер. Класс MailMessage (могу ошибиться в названии) - это само письмо. Задаются поля Тема, От, Куда, Копия, Скрытая копия, приоритет и т.д.

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

    наверх


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

    Вопрос:

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

    Ответ:

    Function FileDateTime(PathName As String)
         Member of VBA.FileSystem
         Returns the date and time stamp of a file

        .::Savenger::.

    наверх


    Как из одной формы открыть другую?

    Вопрос:

    Как из одной формы открыть другую?

    Ответ:

    1. Form1.show [ vbModal]
    2. Dim form as new Form1
            form.show

        Viaceslavas Kaleda

    наверх


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

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

    Вопросы:


    Автор вопроса: Сан Саныч

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

       Есть такой Active-X компонент: MS Internet Controls (SHDOCVW.OCX). Добавил я его на форму и попытался узнать значение его хендла (hwnd). И тут возникает ошибка: "Method 'HWND' of object IwebBrowser2 failed.". Спрашивается - какого ему надо? И как узнать ентот хендл?


    Автор вопроса: Дмитрий

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

       Есть числа 5,10,15,20 и т.д. (100 и более). Программа выполняет действие и выдает число, допустим, 7. Как узнать ближайшее меньшее число и большее?


    Автор вопроса: Евгений

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

       Как сохранить OLE-объект в бд ACCESS и затем его вычитывать?


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

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

       Есть ли какой-нибудь грид, в поле которого можно вставлять картинку?


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

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

       Что нужно сделать, чтобы на гриде работал скролл мыши?


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

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

       На одной форме вызываю контекстное меню командой "popupmenu МОЕ_МЕНЮ". Из одного пункта этого меню вызываю форму, на которой тоже есть свое контекстное меню. Так вот, на этой форме не удается вызвать это меню. Проверял, если с первой формы вызывать вторую не через меню, а, например, через Button, то второе меню работает. В MSDN напимано, что одновременно 2 меню не могут быть активизированы. Может кто сталкивался с данной проблемой и смог ее решить?


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

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

       Как при помощи SendKeys послать Enter на чужую прогу?




    Ответы:


    Вопрос:

       Как сделать импорт ия БД Access в текстовый файл?

    Ответ:

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

    Наверно обратно экспорту из текстового файла :-( Вопрос на каком-то непонятном диалекте...


    Вопрос:

       Кто может в меня кинуть ASPack или UPX?

    Ответ:

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

    На vbnet.ru в разделе полезных программ.


    Вопрос:

       Как сделать чтобы в systemtray были видны числа, которые задаются моей переменной?

    Ответ:

    Автор ответа: @HT0X@

    В смысле чтобы в трэе были числа? Первый способ - вставлять в трэй иконки с нарисованными числами. Второй способ - вставить в трэй иконку, а числа менять в ее ToolTipText (при наведении на нее мышью появится подсказка с числом). Это все делает мой Tray Icon Control, который можно скачать с сайта vbnet.ru в разделе "ActiveX контролы".



    Ответ:

    Автор ответа: Кирилл "Walnuts" Винокуров

    Где-то на сайте VBNet был исходник, описывающий работу ProgressBar'а в трэе. Скачай, может пригодится.

    Если хочешь, могу выслать.


    Вопрос:

       Как сделать инсталлятор для своей проги, (Package Wizard какой-то глючный и не русский к тому же), а может уже есть готовые?

    Ответ:

    Автор ответа: @HT0X@

    Лично я пользуюсь Wise Install Wizard, который делает msi файлы, к тому же там уже есть готовые сценарии инсталляции, правда их надо русифицировать.



    Ответ:

    Автор ответа: Дима

    Очень рекомендую InstallMaster 8.1 - Может почти все и все под твоим контролем. Умненький инсталлятор. Я сам под ним клепаю дистрибутивы.



    Ответ:

    Автор ответа: Кирилл "Walnuts" Винокуров

    Да, есть. Посмотри на сайте VBNet (в разделе исходных кодов) или на www.sources.ru.


    Вопрос:

       У меня 4 вопроса по MSHFlexGrid:

    1. В таблице БД есть поле типа boolean. При привязке грида к запросу из таблицы в соответствующем столбце отображается True/False. Есть ли свойство колонок у грида, изменив которое можно было представлять значения поля как CheckBox (так делает Access)? Если свойства у грида нет, тогда как привязать к каждой ячейке грида CheckBox, да так, чтобы можно было бы изменять его значение?

    2. В запросе из таблицы производится форматирование полей. Например для поля даты - format(DateOp,'dd.mm.yyyy'), или для поля суммы - format(Summ,'#,0.00'). При этом перестает правильно работать свойство грид.Sort. Если преобразование типов в запросе не делать, то все нормально. КАК ПОБЕДИТЬ? Сейчас делаю так, определяю колонку, по которой сортируют, если по ней грид отсортирует верно (т.е. поле не форматировано), то сортирую гридом, иначе переписываю запрос и обновляю грид заново. Выполняется естественно медленнее.

    3. Как сделать так, чтобы видимая часть пустого грида была заполнена строками, но полоса вертикальной прокрутки бы не появялось, даже если меняется размер грида? Так делает ListView в табличном представлении.

    4. Есть ли возможность фильтрации строк грида свойствами самого грида (без фильтрации запроса, к которому привязан грид)?

      Если есть грид позволяющий все это делать, дайте точную ссылку на
    него.

    Ответ:

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

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

    По поводу сортировки - у меня возникала проблема только с датами. Так как я по идее заранее знаю, какой тип данных находится в определённом столбе, то со строками и числами проблем не было:

    select case msfg1.col
         case 1,2,4: msfg1.sort=5 '(строки)
         case 3,5 to 8: msfg1.sort=3 '(числа)
         case 9: msfg1.sort=9 '(что-то своё)
    end select

    При использовании sort=9 есть евент сравнивания строк, там всё и пишешь, там я даты и сравнивал.


    Вопрос:

       Нужно сделать программу,которая имела бы полный доступ к другой программе, но не из стандартного пакета Windows (типа Калькулятор), а собственной или сделанной кем-то другим. SendKeys для нажатия клавиш тут не подходит. Можно пример на C++ или Visual Basic.

    Ответ:

    Автор ответа: @HT0X@

    Не знаю как другие, но я не понял формулировки вопроса. Но если нужно управлять другой программой, и не просто передавать в буфер клавиатуры скан-коды нажатых клавиш, а именно управлять ею, то, наверное, подойдет термин "работать с ее объектной моделью", т.е. создавать и управлять объектами данной программы. То есть, тут поможет OLE Automation. Загрузи VB и посмотри в project/references есть ли возможность подключить в проект ее объектную модель (посмотри в окошке есть ли она в списке доступных). Если нет - попытайся в том же окне подключить библиотеки данной программы, если они есть. Ну и прочти в хелпе по данной программе поддерживает ли она OLE Automation (есть ли там что связанное с VBA).



    Ответ:

    Автор ответа: Кирилл "Walnuts" Винокуров

    Небольшой пример использования DDE. DDE - это механизм для обмена данными между приложениями.
    Создайте 2 проекта (с именами "Project1" и "Project2"). В первом проекте у формы установить свойства LinkTopic="SYSTEM" и LinkMode=1. Добавьте на форму Label и установите свойство LinkItem="DDE".
    Во втором проекте добавьте TextBox и CommandButon (имена не изменяйте).
    Добавьте в проекты расположенный ниже код.
    Запустите первый проект (сервер DDE), затем второй (клиент DDE). Нажмите на кнопку - в TextBox на форме первого проекта появится строка, переданная из второго проекта.
      

    'Код первого проекта
      
    Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
          MsgBox "Received " & CmdStr, vbInformation
          Cancel = False
    End Sub
      

    'Код второго проекта
      
    Private Sub Command1_Click()
          Text1.LinkMode = vbLinkNone
          Text1.LinkTopic = "Project1|SYSTEM"
          Text1.LinkItem = "DDE"
          Text1.LinkMode = vbLinkManual
          Text1.LinkExecute "Hello World"
    End Sub


    Вопрос:

       У меня есть прога на VB, типа библиотеки кодов. Для хранения кодов я использую небольшой HTML редактор, т.е. слева в "дереве" разделы, справа - содержание в виде HTML документа. База на Access. Вопрос такой: можно ли в самом тексте HTML вместо тэга IMG для показа изображений использовать не указание на дисковый ресурс, а что-то, что могло бы считывать картинки из базы? А то приходится таскать все изображения за собой, а я хочу положить их в БД. Варианты есть, но они мне кажутся не очень эффективными. Буду признателен за дельный совет.

    Ответ:

    Автор ответа: Александр Качанюк

    А ты используй не страницы HTML, а архивы HTT. Попробуй в експлорере сохранить так страницу и все поймешь.



    Ответ:

    Автор ответа: Chernov Dmitry

    Нужно использовать тег IMG, однако вместо ссылки на картинку можно указать ссылку на скрипт на сервере с параметрами, типа:
      

      
    При этом серверный скрипт должен правильно вернуть браузеру заголовки, которые описывают изображение, вынуть изображение из БД и послать его броузеру. При этом язык скрипта может быть любой, лиш бы он принципиально поддерживал подобные процедуры. Примеров в INet'е наити можно достаточно. Если же требуется хранить подобные вещи на локалином компьютере, который не является сервером, то тут подобные вещи не пройдут.



    Ответ:

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

    А что мешает таскать картинки в базе? Очень удобно! Я занимаюсь подобным проектом и пока никаких траблов не встречал...


    Вопрос:

       Кто раъяснит мне раяличие между ключевыми словами Public и Global?

    Ответ:

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

    Ключевое слово Global нужно лишь для совместимости со старыми версиями ВБ, т.е. чтоб в ВБ 6 можно было открыть проект, написанный в ВБ 2,3,4...
    Используй Public!



    Ответ:

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

    Global - устаревшее ключевое слово для определения глобальной переменной.
    Public - пришедшее ему на замену ключевое слово с идентичным значением.


    Вопрос:

       Подскажите, какие символы НЕ могут присутствовать в электронном адресе (я имею ввиду из клавиатурного набора)? Ну и аналогичный вопрос по поводу доменов: какие символы НЕ могут присутствовать в доменном имени (насколько я понимаю, те же, что и в электронном). Я прав?

    Ответ:

    Автор ответа: Alexander V. Babich

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



    Ответ:

    Автор ответа: @HT0X@

    Могут присутствовать только большие и маленькие латинские буквы. И все.


    Вопрос:

       У меня одноранговая сеть. Что нухно сделать, чтобы часть кода htm станички выполнялось на машине, на которой она непосредственно находится?

    Ответ:

    Автор ответа: Chernov Dmitry

    Необходимо установить WEB (HTTP) сервер, типа Apache или MS PWS, ну а к нему что нибудь типа Perl или PHP. В MS PWS встроена технология ASP.


    Вопрос:

       Как можно "связать" ProgressBar с копированием файлов?

    Ответ:

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

    А чё... Вычисляешь общий размер всех файлов, загоняешь это число (можно поделить на 1000 если слишком большое) в pb1.Max (pb1 - progress bar), а в цикле, в котором перегоняешь файлы, прибавляешь к pb1.Value размер перегнанного файла.



    Ответ:

    Автор ответа: @HT0X@

    Используя FileSystemObject, можно связать все файлы и количество скопированных файлов.


    Вопрос:

       .Net
    Когда я сохраняю текст, и перехожу на новую строку (vbcrlf / ControlChars.CrLf), в тексте отображается какой-то символ-квадратик. Как перейти на новую строку без этого?

    Ответ:

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

    Попробуй воспользоваться vbNewLine.



    Ответ:

    Автор ответа: @HT0X@

    Может быть нужно проверить свойство .MultiLine=True.




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

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

    наверх


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

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