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

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


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

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


VBNet VBMania
Ссылки:

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

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

       Наисвежайший выпуск рассылки!
    Читайте!


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




    Как поставить CheckBox'ы в дочерних ветвях?

    Вопрос:

    Есть TreeView, в котором есть как "родители", так и "дети". Задача следующая, если в CheckBox'е у "родителя" поставить галочку, то соответственно и у ВСЕХ "детей" они должы проставиться Дело в том, что есть у Node свойство Child, т.е. можно сделать так: node.child.checkes=true, но "галка" появляется только у ОДНОГО "ребенка"

    Ответ:

    Private Sub TV_NodeCheck(ByVal Node As MSComctlLib.Node)
       Dim Nd As Node
       Set Nd = Node
       If Not Nd.Checked Then
          While Nd.Key <> "R"
             Nd.Checked = False
             Set Nd = Nd.Parent
          Wend
          Nd.Checked = False
       End If
          Set Nd = Node
          RecheckTree Nd
    End Sub

    Private Sub RecheckTree(Nod As Node)
       If Nod.Children = 0 Then Exit Sub
       Dim k As Integer
       k = Nod.Child.Index
       While k <> Nod.Child.LastSibling.Index
          TV.Nodes(k).Checked = Nod.Checked
          If TV.Nodes(k).Children <> 0 Then RecheckTree TV.Nodes(k)
          k = TV.Nodes(k).Next.Index
       Wend
       TV.Nodes(k).Checked = Nod.Checked
       RecheckTree TV.Nodes(k)
    End Sub


        Рязанов Андрей

    наверх


    Как получить короткий путь?

    Вопрос:

    Имеем путь: "С:\Program Files\Program\My Folders\program name.exe"
    Нужно получить: "С:\Progra~1\Program\MyFold~1\progra~1.exe"

    Ответ:

    Public Declare Function GetShortPathName Lib "kernel32" Alias _
    "GetShortPathNameA" (ByVal lpszLongPath As String, ByVal lpszShortPath _
    As String, ByVal cchBuffer As Long) As Long


        Savenger

    наверх


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

    Вопрос:

    Вопрос такой: На форме расположено TreeView (TV) и CommandButton (cmdOK) на TV заведена некая древовидная структура с активнами CheckBox'ами. Как по нажатию на cmdOK определить, у каких элементов "галочка" стоит, а у каких - нет. Если знаешь структуру "дерева" в TV, то можно и перебором, а если ты ее не знаешь, то как?

    Ответ:

    Private Sub cmdOK_Click()
       Dim tNode As Node
       For Each tNode in TV.Nodes
          If tNode.Checked Then MsgBox "Node " & tNode.Text & " is checked."
       Next tNode
    End Sub

        Andrey Shchekin [darXeth]

    наверх


    Как очищать оперативную память?

    Вопрос:

    Можно ли на VB отчищать оперативную память на VB? Если можно, то как это сделать?

    Ответ:

    Нужно Использовать API. Возможно, API-функцию ZeroMemory. Эта функция заполняет определенный участок памяти нолями. Использовать примерно так:

    ZeroMemoty ПервыйБлок, КоличествоБлоков
    где
    ПервыйБлок - первый блок памяти, значение которого будет присвоено нолю
    КоличествоБлоков - количество блоков памяти, значения которых будет присвоено нолю, начинаю с первого блока.

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

    наверх


    Как с помощью Winsock отправить структуру?

    Вопрос:

    Подскажите пожалуйста как с помощью Winsock отправить структуру типа:

    Type Meseg
        Stroka1 As String
        Stroka2 As String
        Stroka3 As String
    End Type

    Возможно ли это? Если да, то как это делается?

    Ответ:

    Либо делай их определённой длинной, потом создаёшь буффер определённой длинны, копируешь туда структуру через copymemory и передаёшь, после приёма делаешь обратное преобразование.

    Либо передавай по одной строке

    Либо

    Type Meseg
        Stroka1 As String
        len1 as long
        Stroka2 As String
        len2 as long
        Stroka3 As String
        len3 as long
    End Type

    Далее как в первом варианте, но при приёме декодировать сложнее

        IvanR

    наверх

       На сайте www.mista.ru есть бесплатный онлайн-учебник по 1С:Предприятие, который в доступной форме объясняет базовые принципы программирования на встроенном языке 1С. Рассылка "Волшебство программирования на 1С:Предприятие 7.7 и 8.0" выходит каждую неделю, содержит новости, статьи, уроки. Подписаться на рассылку можно на главной странице сайта www.mista.ru

       На сайте работает "живой" форум www.forum.mista.ru. Регистрация не требуется, удобный дизайн, быстро грузится. Обсуждаются информационные технологии. Форум обновляется каждый день. На форуме постоянно присутствуют профессионалы 1С, которые с радостью ответят на ваши вопросы.



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

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

    Вопросы:


    Автор вопроса: Tаrаs_Prikhodko

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

       Как перехватывать административные сообщения типа netsend и отпралять их в textbox?


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

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

       Как можно посчитать, сколько в числе символов?


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

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

       Как органияовать контроль за файлом при его копировании, с помощью прогресс бара, как это делает Windows?


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

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

       В моей программе на VB 6.0 используются шрифты, не входящие в состав Windows. Подскажите пожалуйста, как программно на VB установить шрифт в систему, может быть простым копированием в папку с:\Windows\Fonts, либо как-то по-особенному?
    Как быть при инсталляции программы на другой компьютер с проблемой шрифта? Может быть есть возможность поместить шрифт в папку с программой и подгружать его когда нужно. Покажите пожалуйста, на примерах кода.


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

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

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


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

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

       Есть файл (электронной таблицы) со списком учащихся разных классов и школ. В таблице указаны: ФИО, класс, школа(4 школы и в каждой школе разное количество классов и учащихся). Необходимо сформировать по группам в несколько человек (из разных школ и разных классов). Входной файл *.xls, группы сформированные должны записываться на отдельный лист книги *.xls.

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

    1. Как сделать так, чтобы группы формировались из ребят разных классов (например по 2-6 человек)?

    2. Как сделать так, чтобы сформированные группы записывались на отдельный лист в электронной таблице? Например формировали книгу из 25 страниц.

    Есть ли возможность написать все это на VBASIC?


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

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

       Как програмно нажать кнопку "Print Scrn"? Или к-нить другой способ занесения видимого изображения в буфер обмена.


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

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

       Как удалить надпись из ListBox по индексу, т.е. есть кнопка, листбокс и текстовое поле, надо ввести, ну например 0, и нажать кнопку, а из листа должна удалиться первая строчка.


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

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

       А вот с плагинами никто не угадал. И не для овиса, и не для винампа. Требуется прога, которая будет находить эти плагины (сборник функций) и работать с ними, и метод написания этих самых плагинов. Я допускаю, что это может быть DLL, но как вызывать функции из этой ДЛЛ без предворительной инициализации, которая обычно проходит во время загрузки проги. Постоянно переписывать главную прогу, естественно, не канает.




    Ответы:


    Вопрос:

       Как сгенерировать случайное число, состоящее из 5 чисел, все из которых будут единицы или нули?

    Ответ:

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

    Кинь на форму Кнопку и Текстбокс. Вставь этот код. При нажатии Кнопки в Текстбоксе будет генерится число.

    Option Explicit
      
    Private Sub Command1_Click()
    Dim I A byte
    Randomize Timer 'чтоб всегда генерилось новое
    for I = 1 To 5'цикл...
    Text1.Text = Text1.Text & Int(Rnd * 2)
    'тут к значению Техт прибавляем то что сгенерилось
    'а сгенерилось число от 0 до 1
    Next
    End Sub


    Вопрос:

       Каким способом можно считывать переменные из файла (например *.txt)? Я только знаю оператор Open, но он мне не подходит, потому что он считывает только одну строчку или файл целиком. Может можно использвать этот файл как-то по другому? В файле у меня написано:

    chislo=1
    nomer=51
    siename="Иванов"

    Как мне присвоить переменным эти значения?

    Ответ:

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

    Также как и в ИНИ-файле. Используй спец. модуль:

    'API - обьявления
    Declare Function GetPrivateProfileString Lib "kernel32" Alias _
         "GetPrivateProfileStringA" (ByVal lpApplicationName _
         As String, ByVal lpKeyName As Any, ByVal lpDefault _
         As String, ByVal lpReturnedString As String, ByVal _
         nSize As Long, ByVal lpFileName As String) As Long

    Declare Function WritePrivateProfileString Lib "kernel32" Alias _
         "WritePrivateProfileStringA" (ByVal lpApplicationName _
         As String, ByVal lpKeyName As Any, ByVal lpString As Any, _
             ByVal lpFileName As String) As Long

    Public Function sGetINI(ByVal sINIFile As String, ByVal sSection As String, ByVal sKey _
             As String, ByVal sDefault As String) As String
         Dim sTemp As String * 256
         Dim nLength As Integer
         sTemp = Space$(256)
         nLength = GetPrivateProfileString(sSection, sKey, sDefault, _
         sTemp, 255, sINIFile)
         sGetINI = Left$(sTemp, nLength)
    End Function

    Public Sub sSetINI(ByVal sINIFile As String, ByVal sSection As String, ByVal sKey _
             As String, ByVal sValue As String)
         Dim n As Integer
         Dim sTemp As String
         sTemp = sValue
         'заменим символы CR/LF на пробелы
         For n = 1 To Len(sValue)
         If Mid$(sValue, n, 1) = vbCr Or Mid$(sValue, n, 1) = vbLf _
             Then Mid$(sValue, n) = ""
         Next n
         n = WritePrivateProfileString(sSection, sKey, sTemp, sINIFile)
    End Sub

    А теперь используй ф-цию:
    Sname=sGetINI(sINI, "Param","siename","Boban")
    где:
    Sname - имя переменной
    sGetINI - имя ф-ции
    sINI - глобальная переменная, хранящая путь к ИНИ-Файлу
    "Param" - имя раздела
    "siename" - имя ключа
    "Boban" - значение по умолчанию (т.е. если ключ ничего не хранит,
    или его не существует, то будет присвоено это значение)

    Процедура записи ключа:
    sSetINI(sINI, "Param", "siename", "Иванов")
    где:
    sSetINI - имя процедуры
    sINI - глобальная переменная, хранящая путь к ИНИ-Файлу
    "Param" - имя раздела
    "siename" - имя ключа
    "Иванов" - значение, которое будет присвоено ключу

    Для хранения данных такой структуры обычно исп. ИНИ-файлы
    (*.INI)
    Структура этого файла:
    [Param]
    Siename="Ivanov"
    Name="Ivan"
    Otchestvo="Ivanovich"
    [RazdelNO_2]
    Key1=10
    Key2="qwe"
    ...
    и т.д.


    Вопрос:

       Label1.caption = "somename@somehost.ru".

    Как при клике на Label1 запустить почтовую прогу по умолчанию и писать письмо на этот e-mail?

    Ответ:

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

    Впиши в процедуре обработки клика по Лейблу:

    dTaskID = Shell("Explorer mailto:somename@somehost.ru", vbHide)

    Ф-ция Shell аналогична комманде "Пуск=>Выполнить..." в Виндовсе. "Explorer" означает, что все остальные параметры передаются ему (проводнику, Эксплореру, Обзору и т.п.)
    vbHide скрывает окно почтовика. На экране появится окно письма с уже заполненым полем "Кому:".


    Вопрос:

       Делаю html редактор. C помошью common dialog делаю выбор цвета и перевожу с помошью hex() в 16-ую систему. Но код цвета состоит почему-то ия трех, четрыех и т.д количества раярядов, а html требует обяяательно шесть раярядов. Что можно сделать, если поняли о чем речь?

    Ответ:

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

    Попробуй так

    ActiveForm.txtText.SelText = ConvertColorFromHTML(iC)

    Public Function ConvertColorFromHTML(iColor As Long) As String
         Dim iRed As Integer, sRed As String
         Dim iGren As Integer, sGren As String
         Dim iBlue As Integer, sBlue As String
         
         Select Case iColor
             Case &H0:
                 GetColorToHTML = "Black"
             Case &HC0C0C0:
                 GetColorToHTML = "Silver"
             Case &H808080:
                 GetColorToHTML = "Gray"
             Case &HFFFFFF:
                 GetColorToHTML = "White"
             Case &H80:
                 GetColorToHTML = "Maroon"
             Case &HFF:
                 GetColorToHTML = "Maroon"
             Case &H800080:
                 GetColorToHTML = "Purple"
             Case &HFF00FF:
                 GetColorToHTML = "Fuchsia"
             Case &H8000:
                 GetColorToHTML = "Green"
             Case &HFF00:
                 GetColorToHTML = "Lime"
             Case &H8080:
                 GetColorToHTML = "Olive"
             Case &HFFFF:
                 GetColorToHTML = "Yellow"
             Case &H800000:
                 GetColorToHTML = "Navy"
             Case &HFF0000:
                 GetColorToHTML = "Blue"
             Case &H808000:
                 GetColorToHTML = "Teal"
             Case &HFFFF00:
                 GetColorToHTML = "Aqua"
             Case Else:
                 iRed = iColor Mod 256
                 iGren = (iColor \ 256) Mod 256
                 iBlue = (iColor \ 65536) Mod 256
         
                 sRed = Right("00" & Hex$(iRed), 2)
                 sGren = Right("00" & Hex$(iGren), 2)
                 sBlue = Right("00" & Hex$(iBlue), 2)
                 
                 GetColorToHTML = "#" & sRed & sGren & sBlue
         End Select
    End Function

    Кстати, по поводу шести разрядов для HTML. Если цвет записывается в виде #rrggbb, то его можно записать в более коротком варианте #rgb (где r, g,
    b - одна из шестнадцатиричных цифр).




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

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

    наверх


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

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


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


    В избранное