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

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


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

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


VBNet VBMania
Ссылки:

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

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

       Прочитайте информацию о конкурсе...
    Читайте!


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




    Конкурс

    20 августа 2004 года завершился конкурс на лучшую статью о .NET. К сожалению, было представлено лишь 3 работы двух авторов. Но, надо признать, статьи очень интересные и полезные.

    Мы не стали распределять места, так как все работы достойны высшей оценки. Участники конкурса награждаются книгами от Microsoft Press и программным обеспечением, предоставленным компанией 9Rays!

    Также напоминаем, что продолжается конкурс на лучший пример на Visual Basic! Свои примеры для конкурса присылайте ведущему раздела Примеры.

    О новых конкурсах мы сообщим вам позже... Внимательно следите за новостями сайта и объявлениями в официальной рассылке сайта!



    наверх


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

    Дата: 13.09.2004 11:40 | Раздел: Примеры кода | Автор: Анатолий Жуков

    Пример продвинутого VB меню - "Пример иллюстрирует возможности использования ресурсов Windows для создания из стандартных меню VB пользовательских меню с практически неограниченными возможностями по оформлению внешнего вида (любые картинки, любые картинки чеков, любые цвета оформления...). Код исходника на VB 6. Исходник прилагается..."

    Дата: 07.09.2004 12:38 | Раздел: Примеры кода | Автор: Tracktor

    MP3Shell - Программа - оболочка для мр3 - дисков. Пример на тему работы с WinAmp.

    Дата: 07.09.2004 12:38 | Раздел: Примеры кода | Автор: AWP

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

    Дата: 07.09.2004 12:36 | Раздел: Примеры кода | Автор: CyRax

    Colored List - Цветной настраиваемый список. Написан полностью на VB без использования API.



    Последние 20 тем форума на VBNet.Ru:

    11:38 / 14 сен.  Почта... | Хитов: 22 |  Ответов: 6
    05:51 / 14 сен.  Помогите разобраться... | Хитов: 22 |  Ответов: 2
    03:34 / 14 сен.  Преобразование чисел... | Хитов: 29 |  Ответов: 5
    00:36 / 14 сен.  Алгоритм генерации древовидной структуры... | Хитов: 18 |  Ответов: 1
    00:32 / 14 сен.  Поверх всего... | Хитов: 18 |  Ответов: 1
    18:54 / 13 сен.  Самоуничтожение файла... | Хитов: 38 |  Ответов: 4
    18:14 / 13 сен.  Уменьшение окна - минимум | Хитов: 36 |  Ответов: 5
    17:06 / 13 сен.  Считывание и запись в USB | Хитов: 16 |  Ответов: 0
    16:47 / 13 сен.  FAT | Хитов: 31 |  Ответов: 3
    15:56 / 13 сен.  Help!!! с SQL запросом | Хитов: 26 |  Ответов: 5
    12:28 / 13 сен.  Компиляция приложения | Хитов: 36 |  Ответов: 6
    07:50 / 13 сен.  Сворачивание приложения в панель задач | Хитов: 47 |  Ответов: 3
    00:37 / 13 сен.  Как заставить ScrollBar работать в DesignMode ??? | Хитов: 21 |  Ответов: 3
    20:09 / 12 сен.  Конвертация в GIF | Хитов: 59 |  Ответов: 11
    15:04 / 12 сен.  Звук на каналы | Хитов: 26 |  Ответов: 3
    12:02 / 12 сен.  Word-ChangeFileOpenDirectory | Хитов: 21 |  Ответов: 4
    12:00 / 12 сен.  Примеры | Хитов: 54 |  Ответов: 4
    10:46 / 12 сен.  Все на помощь!!!!! | Хитов: 89 |  Ответов: 10
    03:37 / 12 сен.  Win 2003 Server | Хитов: 30 |  Ответов: 3
    00:25 / 12 сен.  Школьный проект | Хитов: 103 |  Ответов: 10


    Последние поступления в Библиотеку кодов:



    наверх


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

    • Решение для единого информационного пространства школы
      Построение единой информационной среды самарской школы № 42 явилось первым проектом, реализованном в России Всемирным союзом ОРТ и Департаментом образования и науки Администрации Самарской области в рамках международной программы «Технология для всех».
    • Технологии Microsoft в крупнейшем российском проекте корпоративного обучения
      Проект, реализуемый учебным центром Микроинформ, является блестящим примером создания уникального комплексного решения в области обучения ИТ-персонала и различных категорий пользователей внутрикорпоративной информационной системы.
    • Пакет разработчика (EN) для планшетных компьютеров Microsoft Windows XP Tablet PC Edition Development Kit 1.7, с поддержкой рукописного ввода и речи.
    • Пакет обновления для Web Services Enhancements (WSE) 2.0 SP1 for Microsoft .NET (EN). Пакет WSE предназначен для создания защищенных веб-сервисов и распространяется свободно.
    • Семинары «Дни разработчика 2004»
      В рамках программы «Дни Майкрософт» в сентябре—октябре 2004 года в разных городах России мы проводим серию бесплатных семинаров «Дни разработчика», предназначенных для разработчиков и других ИТ-специалистов.
    • Партнерский форум Microsoft 2004
      Приглашаем вас принять участие в ежегодном Партнерском форуме Microsoft 2004, который состоится 8 октября 2004 года в Москве.
    • День Microsoft на Softool 2004
      Выставка Softool 2004 проходит с 28 сентября по 2 октября в павильоне № 69 Всероссийского выставочного центра в Москве. Конференция «День Microsoft на Softool 2004» состоится 1 октября 2004 года в Большом и Малом конференц-залах павильона № 69.


    наверх


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

    • 30.09.2004 - Скоро! Чаты на GotDotNet
      Начиная с октября на нашем сайте будут проходить чаты с разработчиками Microsoft.
    • 24.09.2004 - Семинары «Дни разработчика 2004»
      Приглашаем вас принять участие в бесплатных семинарах «Дни разработчика 2004», которые состоятся в рамках серии семинаров Microsoft в городах России.
    • 20.09.2004 - Первая встреча Ростовской User Group
      20 сентября в Институте Управления, Бизнеса и Права (Ростов-на-Дону) состоится первая встреча сообщества.
    • 16.09.2004 - Третья конференция разработчиков ПО ISDEF'2004
      16-19 сентября 2004 года в подмосковной гостинице "Holiday Inn" состоится 3-я международная конференция ISDEF (Independent Software Developers Forum), посвященная вопросам разработки и продажи программного обеспечения
    • 13.09.2004 - MSDN Flash - Aggies, XP SP2, Visual Studio Beta 1 Refresh...
      Важнейшие материалы, новые веб-ресурсы, продукты и технологии наших партнеров, веб-презентации, общение в режиме реального времени, мероприятия для разработчиков


    Новые статьи:



    наверх


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

    Новые статьи:

    • Практическое использование классов .NET Framework для разработки «корпоративного мессенджера»
      Описываются способы разработки сетевых приложений, на примере разработки корпоративного мессенджера (некий очень облегченный вариант аськи для локальной сети), с серверной частью и соответственно с клиентской.
    • Метрика, ведущая к гибкости
      Данная статья, от одного из авторов экстремального программирования Рона Джеффриса, поможет найти ответы на давно уже наболевшие вопросы: "Почему XP лучше?" и "Зачем платить больше?"
    • Объектно-компонентная платформа создания приложений БД.
      Примеры реализации объектного подхода к созданию приложений БД.


    Новые примеры:



    наверх


    Один момент из жизни форума: Как правильно сохранить?

    Адерес темы: http://vbnet.ru/forum/show.aspx?id=54684

    Вопрос:
    Автор вопроса: danser

       
    Dim T As New ArrayList()
    Dim Str As String = "Sasha"
    Dim Arr As New ArrayList()
    Arr.Add(Str & Str)
    T.Add(Str)
    T.Add(Arr)

    Dim B As New ArrayList()
    B = CType(T.Clone, ArrayList)


    Dim C As New ArrayList()
    C.Add(B)

    'теперь изменим масив Т
    T.Item(0) = "Wasa"
    CType(T.Item(1), ArrayList).Item(0) = "None"

    With CType(C.Item(0), ArrayList)
    MsgBox(CType(.Item(0), String))
    '= "Saha"
    MsgBox(CType(CType(.Item(1), ArrayList).Item(0), String))
    '= "None"
    End With

    С етого кода можно увидеть что при изменении елементов масива Т изменяются по разному значения элементов масива С:

    -Если мы изменим первый элемент(строку) масива Т->(T.Item(0) = "Wasa"), то это не отобразится на первом элементе (строке) масива С;
    но стоить нам изменить второй елемент масива Т(тоже масив в котором мы изменим первый его элемент -> (CType(T.Item(1), ArrayList).Item(0) = "None")) то второй элемент масива С тоже будет изменен

    ВОПРОС: Как присвоить масиву В масив Т так, чтобы при последуещем изменении масива Т масив B (и соответственно масив С) не изменялся.
    Должно быть:

    With CType(C.Item(0), ArrayList)
    MsgBox(CType(.Item(0), String))
    '= "Saha"
    MsgBox(CType(CType(.Item(1), ArrayList).Item(0), String))
    '= "SashaSasha"
    End With


    Ответы:

    Автор: Павел
       А зачем нужен такой гемморой с кучей ArrayList'ов?

    > то второй елемент масива С тоже будет изменен
    Судя по коду, в объекте C только 1 элемент:

    Dim C As New ArrayList()
    C.Add(B)

    Откуда там может взяться второй?


    P.S. Некорректно называть ArrayList массивом. Массив - это класс Array, объявляется массив примерно так:

    Dim b(25) As String

    А ArrayList - это коллекция.

    Автор: danser
       Этот геморой нужен для обяснения проблемы, в чистом виде этот код не используется.

    > то второй елемент масива С тоже будет изменен
    -Имелось ввиду первый (запутаешся со словами, в коде более понятно)

    Как сохранить обект Т в колекции С, чтобы при последуещем изменеии обекта Т эти изменеия не касались обекта сохраненного в колекции С?
    Предложен вариант:

    B=Ctype(T.Clone, ArrayList)
    C.Add(B)

    В примере видно, что в одном случае это помагает но к сожалению только в одном...

    Автор: Павел
       Как показало изучение потрохов ArrayList, метод Clone действует вполне корректно:

    'System.Collections.ArrayList.Clone
    Public Overridable Function Clone() As Object Implements System.ICloneable.Clone
    Dim _arrayList As System.Collections.ArrayList = New System.Collections.ArrayList(_size)
    _arrayList._size = _size
    _arrayList._version = _version
    System.Array.Copy(_items, 0, _arrayList._items, 0, _size)
    Return _arrayList
    End Function

    Он делает полную копию исходного объекта, копируя элементы из внутреннего массива.

    Далее... Если Вы меняете ссылку на объект в элементе коллекции, то на исходном оъекте T это никак сказаться не должно:

    T = New ArrayList
    T.Add "a"
    B=Ctype(T.Clone, ArrayList)
    B(0) = "b"
    Console.WriteLine T(0)

    Но если меняется, к примеру, поле объекта-элемента, то эти изменения будут видны в объекте T, так как метод Clone не создает копии ссылочных элементов коллекции.

    Public Class Test
    Public a As String
    End Class

    '...

    T = New ArrayList
    Dim test As New Test
    test.a = "a"
    T.Add test
    B=Ctype(T.Clone, ArrayList)
    B(0).a = "b"
    Console.WriteLine T(0).a

    Вы это имели в виду?

    Автор: danser
       Да мы это имели ввиду... только немножко измени(изменяется обект Т):

    B=Ctype(T.Clone, ArrayList)
    T(0).a = "b"
    Console.WriteLine B(0).a

    Как я понял ссылочние елементи колекции это всякого рода структуры (ArrayList, Structure, пользовательськие обекти...) и на ети елменти-обекты в колекции находятся только ссылки...
    Но что мне делать если надо зафиксировать колекцию Т(и все ее елементы-обекти)?

    Автор: Павел
       Можно для каждого элемента отдельно создавать копию:

    Dim B As New ArrayList

    For Each obj As Object In T
    CType(B, IClonable).Add obj.Clone
    Next

    Тут только нужно повнимательнее рассмотреть вариант, если элемент коллекции не реализует или неправильно реализует интерфейс IClonable.

    Автор: danser
       Это вариант только одчасти решает проблему, я думал о нем, но если елементи обекты из колекци имеют довольно сложную структуру(в примере обект Тest имеет не одно поле типа String, а поле типа <Пользовательський обект> которий в совю очередь тоже имеет поле <Пользовательський обект> и так несколько раз) что тогда делать?

    Автор: Павел
       Если все классы в этой структуре имеют атрибут Serializable, то можно сериализовать и десериализовать объект. Тогда будет создана автономная точная копия данных.

    Автор: danser
       Да класи сереализированы. Это нужно для последуещего сохранения обекта в файле.
    Но вроде метод Serializable должен иметь в аргументе обект типа FileStream которий в свою очередь связан с физическим файлом...предлагаешь использовать физический файл?...
    Как сохранить в другой(конкретного типа например Test) структуре(по возможности без использования физического файла)?

    Автор: Павел
       Используй MemoryStream.

    Dim Stream As New IO.MemoryStream()
    Dim formatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
    formatter.Serialize(Stream, Errors)

    Далее передвигаем позиию стрима в начало и десериализуем объект из того же стрима. После этого стрим можно закрыть.



    наверх


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

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

    Вопросы:


    Автор вопроса: Hr. Кудрявцев

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

       Помогите с алгоритмом! Нужно посчитать оптимальное размещение хаба(ов) по этажам здания. Т.е. есть здание с произвольным количеством этажей и квартир на этажах (на каждом не больше N), нужно разместить хабы так, чтоб их совокупная стоимость была как можно меньше (5 портов - 22$; 8-36$; 12-53$ и т.д. (цены могут менятся)) и кол-во провода было бы минимальным.


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

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

       Как изменить иконку программе в vb6, которая не имеет ни одной формы?


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

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

       Загружаю в WebBrowser html документ:

    WebBrowser1.Navigate "C:\test.html"

    Как из WebBrowser1 сделать сохранение этого html файла в txt формате?




    Ответы:


    Вопрос:

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

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

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

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

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

    Ответ:

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

    Option Explicit
    Dim m_col As New Collection
    Dim m_record(2) As String
    Dim m_colSpiski() As String
    Dim m_colGroup As New Collection
    Dim m_Kol_voInGroup As Byte
    Sub RUN()
         AddToCollection
         GetSredneeKol_vo
         Group
         SheetsWork
    End Sub
    Sub SheetsWork()
         Dim i As Integer
         Dim j As Integer
         Dim n As Integer
         For i = 1 To m_colGroup.Count
             Sheets.Add
             For j = 0 To m_Kol_voInGroup - 1
                 For n = 0 To 2
                     Cells(j + 1, n + 1) = m_colGroup(i)(n, j)
                 Next n
             Next j
         Next i
    End Sub
    Sub AddToCollection()
         Dim i As Integer
         Dim j As Byte
         i = 1
         Do Until Len(Cells(i, 1)) = 0
             i = i + 1
         Loop
         Range("A1:C" & i).Select
         Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("C1") _
             , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
             False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
             :=xlSortNormal
             'Вызовом этой функции мы упрощаем себе задачу, т.к выбрать учеников из одного класса возможно только теоретически
             'и то врятли
         i = 1
         Do Until Len(Cells(i, 1)) = 0
             For j = 0 To 2
                 m_record(j) = Cells(i, j + 1)
             Next j
             m_col.Add m_record
             i = i + 1
         Loop
         
    End Sub
    Sub Group()
         Dim NextEl As Integer
         Dim n As Byte
         Dim i As Integer
         Dim j As Integer
         NextEl = m_col.Count / m_Kol_voInGroup
         ReDim m_colSpiski(2, m_Kol_voInGroup - 1)
         For i = 1 To m_Kol_voInGroup
             For j = 0 To m_Kol_voInGroup - 1
                 For n = 0 To 2
                     m_colSpiski(n, j) = m_col(i + j * NextEl)(n)
                 Next n
             Next j
             m_colGroup.Add m_colSpiski '(i - 1, n)
         Next i
    End Sub
    Sub GetSredneeKol_vo()
         Dim i As Integer
         i = m_col.Count
          MsgBox 9 / 2
         MsgBox Round(9 / 2, 0)
         If (i Mod 6) = 0 Then m_Kol_voInGroup = 6: Exit Sub
         If (i Mod 5) = 0 Then m_Kol_voInGroup = 5: Exit Sub
         If (i Mod 4) = 0 Then m_Kol_voInGroup = 4: Exit Sub
         If (i Mod 3) = 0 Then m_Kol_voInGroup = 3: Exit Sub
         If (i Mod 2) = 0 Then m_Kol_voInGroup = 2: Exit Sub
         m_Kol_voInGroup = 5 'Если найдется какое-либо число не делится без
         остатка на эти числа, хотя это врятли(но вдруг)
    End Sub

    Если нужен пример, пиши, пришлю файл.


    Вопрос:

       В VB6 есть Resource Editor, как сделать смену языков через файл Project1.RES, при выборе установки самой программы или в самой программе при выборе формы свойств?

    Ответ:

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

    Каждому объекту на формах (в которых выводится текст) присваиваешь
    уникальный номер (в поле tag), при загрузки программы пишешь:

    Private Sub Command1_Click()
    Dim aa As Object
    For Each aa In Me.Controls
         If Len(aa.Tag) <> 0 Then
             Select Case Mid(aa, 1, 3)
                 Case "lbl": aa.Caption = LoadResString(aa.Tag)
                 Case "txt"
             End Select
         End If
    End If
    Next
    End Sub

    Причем этот номер должен совпадать с номером ресурса текст которого ты хочешь загрузить.


    Вопрос:

       Подскажите код для удаления строки из базы в ASP.NET в режиме выполнения.

    Для добавления я использую этот код:

    Dim sqlContactBaza As New
    SqlClient.SqlConnection("server=(local);database=H_dreambib;
    Trusted_Connection=yes")

             '2 Cоздать обьект адаптера данных

             Dim sqlAdapter As New SqlClient.SqlDataAdapter("SELECT * FROM
    NaimKomn", sqlContactBaza)

             '3 Cоздать набор данных

             Dim dsContact As New Data.DataSet

             sqlAdapter.SelectCommand.CommandText = "SELECT * FROM NaimKomn"

      

             'сгенерировать команды для добавления , удаления , обновления данных


             Dim cmdContact As SqlClient.SqlCommandBuilder = New
    SqlClient.SqlCommandBuilder(sqlAdapter)

      

             '4 Заполнить набор данных

             sqlAdapter.Fill(dsContact, "NaimKomn")

             ' Создать новую строку

             Dim RowInsert As Data.DataRow = dsContact.Tables("NaimKomn").NewRow

             'записать значения полей строки

             RowInsert("Komnata") = txtNewKomnt.Text

             'добавить строку к набору данных

             dsContact.Tables("NaimKomn").Rows.Add(RowInsert)

             'записать данные в базу

             sqlAdapter.Update(dsContact.Tables("NaimKomn"))

             Obnovlenie()

    Ответ:

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

    DataSet.Tables(0).Rows([Номер строки]).Delete

    Или если надо на SQL:

    DELETE FORM таблица WHERE условие


    Вопрос:

       Как сделать на toolbare комбобокс, где можно было бы шрифты выбирать?

    Ответ:

    Автор ответа: Хатламаджиян

    Ставишь Toolbar на форму, а затем в Toolbar'е (в пределах контрола) ставишь ComboBox. Но оно будет "несовсем родное", т. е. если будешь добавлять новый кнопки, то они будут пересекаться с ComboBox'ом.

    Есть другой вариант - у одной из кнопок свойство Style ствишь в '5 - Dropdown'. В ButtonMenus создаешь один элемент Insert....

    В коде, где будет перечисление динамически создаешь новые пункты.

    Toolbar1.Buttons(1).ButtonMenus(1).Text = Screen.Fonts(1)
    For i=2 to Screen.FontCount
         Load(Toolbar1.Buttons(1).ButtonMenus(i))
         Toolbar1.Buttons(1).ButtonMenus(1).Text = Screen.Fonts(i)
    Next i




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

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

    наверх


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

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

    http://subscribe.ru/
    http://subscribe.ru/feedback/
    Подписан адрес:
    Код этой рассылки: comp.soft.prog.vbnewsadvices
    Отписаться

    В избранное