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


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

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

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


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




    Как задать моординаты для вывода текста на формы методом Print?

    Вопрос:

    Как задать моординаты для вывода текста на формы методом Print?

    Ответ:

    Задать координаты вывода текста и не только, можно при помощи свойств CurrentX и CurrentY, где CurrentX-координата верхнего угла(относительно формы), а CurrentY-координата левого угла(относительно формы). Вот,пример, использующий эти свойства:

    Private Sub Form_Load()
    Show
    CurrentX = 0
    CurrentY = 1500
    Print "Rafis"
    End Sub

    Rafis

    наверх


    Как отобразить анимацию?

    Вопрос:

    Очень хочу узнать с помощью чего можно отобразить у себя на форме амимацию (формат avi).

    Ответ:

    Проигрывать файлы типа avi на форме можно с помощью элемента Animation находится в библиотеке Microsoft Windows Common Controls-2 6.0.

    Jumanjee

    наверх


    Как отправить из программы на VB письмо на email?

    Вопрос:

    Хочу, чтобы из моей программы можно было послать электронное письмо (пользователь задает адрес, текст и т.д.) Как это сделать?

    Ответ:

    Для отправки письма, кликаешь по кнопке или метке (вообще по чему хочешь (и лучше над этим объектом менять курсор)) и запускается почтовик установленный по умолчанию с указанными параметрами через API, остается только отправить мыло. Параметры можешь определить чем хочешь: списком, текстовым полем и т.д.
    -----------------
    Private Declare Function ShellExecute& Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long)
    Private Declare Function GetDesktopWindow Lib "user32" () As Long

    Private Sub Label1_Click()
    'Вызываем маил с адресом
    Call ShellExecute(0&, "Open", "mailto:" + "ЛОГИН@СЕРВЕР.ru" + "?Subject=" + "'Здесь описана тема...'", "", "", SW_SHOWNORMAL)
    End Sub
    ------------------
    Вот и все.

    Сергей Гуров

    наверх


    Почему в MS Word первый запуск макроса занимает много времени?

    Вопрос:

    Почему исполнение в MS Word любого пользовательского макроса на VB, даже не очень объемного, занимает слишком много времени. Причем это происходит только при первом его запуске. В дальнейшем работа любого существующего макроса происходит с завидной скоростью.

    Ответ:

    Дело в том, что при первом запуске код макроса предварительно компилируется и храниться в так называемом пи-коде. Это и требует некоторого времени. В дальнейшем используется только этот скомпилированный код. Когда кто либо вносит изменения в макрос, код перекомпилируется.

    Shemyakin, Dmitry

    наверх


    Почему функция API ExitWindowsEx не завершает работу или не выключает компьютер, а завершает сеанс?

    Вопрос:

    Почему функция API ExitWindowsEx не завершает работу или не выключает компьютер, а завершает сеанс данного пользователя и предлагает войти под новым именем?

    Ответ:

    Возможно, что у тебя используется константа = 0 (см. ниже), она равносильна входу в систему под другим именем.
    Нужно делать так:

    Private EWX_LOGOFF = 0 'Входит в систему под другим именем.
    Private EWX_SHUTDOWN = 1 'Завершает работу и выключает питание
    Private EWX_REBOOT = 2 'Перезагружает компьютер
    Private EWX_FORCE = 4 'Закрывает все программы не сохраняя файлы
    Private EWX_POWEROFF = 8 'Завершает работу системы и если есть возможность выключает компьютер

    Пример:

    Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

    Private Sub Form_Load ()
    ExitWindowsEx EWX_REBOOT 'Перезагружаем компьютер
    End Sub

    Игорь

    наверх


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

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

    Вопросы:


    Автор вопроса: Мартынова Н. В.

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

       Как открыть книгу.xls из текущего каталога, название которой задано с помощью формулы СЦЕПИТЬ () в ячейке A1 рабочего листа?


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

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

       Как в ImageCombo создать список системных цветов, ну прям как в VB при выборе цвета контрола?


    Автор вопроса: Владимир

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

       Скажите пожалуйста, как реализовать функцию переноса слов, как в Блокноте. Использовать свойство txtText.ScrollBar не получается, оно только для чтения, хотя в Блокноте именно так и делали.


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

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

       Как с помощью компонента Microsoft Common Dialig Control 6.0 открыть сразу несколько файлов (клавиши Shift или Cfrl) и поместить их в ListBox?


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

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

       Надо достать и загрузить в ComboBox список всех шрифтов установленых на системе.


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

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

       Срочно нужен ответ на вопрос:
    Существует запись объявленная в модуле как глобальная:

    private type aaa
         dim j() as string
    end type
    Public v as aaa

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

    v.j()

    неиспользуя redim v.j(0) ?


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

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

       Как сделать, чтобы датчик случайных чисел выдавал целые числа в заданных интевалах (например, от 1 до 30)?


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

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

       Как правильнои передать фокус от одной форме к другой?
    Имеются 2 формы.
    Сначала с формы1 вызывается модальная форма2.

       Private Sub Command1_Click(Index As Integer)' код в форме1
       Select Case Index
       Case 0
         Form1.Visible = False
         Form2.SetFocus ' вызов формы 2
       End Select

    После выполнения необходимых процедур форма2
    закрывается командой "unload form2" и при попытке
    передать фокус обратно форме1 происходит ошибка
    выполнения.

    Private Sub Form_Unload(Cancel As Integer) ' код в форме2
      Form1.Visible = False
      Unload Form2
      Set Form2 = Nothing
      Form1.Visible = True
      Form1.SetFocus


    Т.е. команда form1.setfocus выполняется,
    осуществляется переход (как видно при пошаговом выполнении)
    обратно в форму1 на строку "Form2.SetFocus" с которой ранее
    вызывалась форма2 и при этом происходит ошибка (№364).
    Ошибка происходит потому что форма форма2 уже закрыта, но как
    предотвратить это не могу понять. Ведь команда "Form2.SetFocus"
    уже отработала и переход должен был произойти на следующую за ней
    строку.

    Пожалуста подскажите в чем ошибка или дайте ссылку на пример кода.


    Автор вопроса: Мартынова Н. В.

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

       Как добавить в Word таблицу с переменным числом строк, которая будет загружаться из формы)? (Т.е. вопрос скорее такой: как создать форму, в которую надо будет вносить таблицу с переменным числом строк, так чтобы очередная строка в форме добавлялась, например, если нажимаешь ins?)


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

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

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




    Ответы:


    Вопрос:

       Можно ли как - нибудь убрать выбранные байты из файла не перезаписывая весь файл?
    Например:

    1111
    2222
    3333

    Как убрать 2222 чтобы в файле получилось

    1111
    3333

    ?

    Ответ:

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

    В цикле переписываеш весь файл в TMP

    open "xxx.tmp"...... as #1
    do until EOF(#1) 'точно не помню может LOF
    i=i+1
    get #1,i,aa
    if aa<>2 then ii=ii+1:put #1,ii,aa
    loop
      
    kill "MyFile.dat"
    name "xxx.tmp","MyFile.dat"


    Вопрос:

       Я пишу прогу и она занимает 1.93 МВ. Когда я запаковываю туда, с помощью VB-PowerWrap1.7, OCX и dll-ы, то размер становится 3.34 МВ, при архивировании WinRar-ом, размер становится 3.31 МВ. Кто может, подскажите любые методы, чтобы как можно сильнее уменьшить размер!

    Ответ:

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

    VB-POWERWRAP итак тебе сжимает все что может. Если ты посмотришь сколько весят OCX отдельно то убедишься. А уменьшить код позволяет оптимизация кода (убрать повторяющиеся функции...).


    Вопрос:

       Как на vb.net осуществить чтение данных из текстового файла? Никак не могу найти аналог команды vb6: input #1, var1, var2 и т.д. Процедуры из классов StreamReader и BinaryReader не помогают.

    Ответ:

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

    Вообше, если ты нармально поискал, то нашел:

    FileOpen(number,patch,mode)
    Input(file_number,var)
    LineInput(file_number)


    Вопрос:

       У меня на форме куча textbox`ов, данные в них связаны.
    Например:

    txtName(0) - имя '
    txtSoName(0) - фамилия ' это все как-бы ячейка
    txtLastName(0) - отчество '
    'и так повторяется до 62
      
    Вопросы такие:
    1. Как мне реально сделать Отмену последнего действия (причем отменяется во всей ячейке)?
    2. Как сделать, чтобы можно было выделять несколько ячеек и получить из них данные?


    P.S. Прим. Павла: господа, может нам в рассылке раздел обучения русскому языку открыть? Я уже устал править сообщения местных "грамотеев"!

    Ответ:

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

    А не проще ли использовать грид?


    Вопрос:

       Каким образом можно добраться из программы на VB6 до изменения формата ячеек в Excel? При передаче информации типа 01/03 Excel воспринимает ее как дату, а необходимо, чтобы она воспринималась как текст.

    Ответ:

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

    Когда будеш debug`ить код поставь точку останова на строчку xx.cells="XXX" и добавь xx.cells в watch и там можеш посмотреть все доступные свойства и их значения
    Если не хочеш таким гемором страдать
    Запусти Excel
    Сервис->Макрос->Начать запись
    Сделай нужные операции(изменение формата)
    Стопай макрос
    И выбери радактировать код
    В коде будет прописаны нужные параметры и их значения


    Вопрос:

       Что возвращает функция VarPtr?

    Ответ:

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

    Адрес переменной в памяти.



    Ответ:

    Автор ответа: Александр Юрьевич

    Функция VarPtr возвращает адрес переменной. Обычно эту функцию используют в вызовах API.


    Вопрос:

       Как определить, установлен ли в системе принтер, и если установлен, то в каком он находится состоянии - "вкл." или "выкл". Если можно, то кусок кода.

    Ответ:

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

    В книге Аппельмана есть куча API функций по работе с принтером, эл. версия книги весит около 55Мб.


    Вопрос:

       Можно ли в TextBox выделить не все, а несколько знаков? К примеру 4-ый и 5-ый справа?

    Ответ:

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

    TextBox1.SelStart = 4 ' nachal'nyj simvol
    TextBox1.SelLenght = 2 ' dlinna vydeliaemogo teksta
      
    Dim str As String
    str = TextBox1.SelText ' poluchish vydelennyj tekst



    Ответ:

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

    txtMain.SelStart=4
    txtmain.sellength=2

    Выделятся 4-1 и 5-й символы.



    Ответ:

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

    Private Sub Text1_GotFocus()
       Text1.SelStart = 4
       Text1.SelLength = 2
    End Sub




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

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

    наверх


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

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