Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Visual Basic 2008

Ответить
Настройки темы
VBA - Visual Basic 2008

Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Uzvern
Дата: 24-04-2008
Описание: Забыл дописать название темы. Прошу простить.
Подскажите как сделать так : допустим, если нажать на форме правой кнопкой мыши, то вылетет MsgBox(123), а если нажать левой, то MsgBox(098).

Спасибо за внимание.

>>Блин, не дописал в названии темы : Действие при нажатии правой кнопки

Отправлено: 17:47, 24-04-2008

 

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Самый близкий к For Each ... Next цикл For ... Next вот на примере их сравнивание и покажу разницу.
For Each ... Next удобен, когда необходимо проделать действия с каждым элементом массива, не задумываясь о количестве его элементов
Код: Выделить весь код
Sub AddNamesToList(ByVal ParamArray NamesArray() As Object)
Dim x As Object
For Each x In NamesArray
ListBox1.Items.Add(x)
Next x
End Sub
после этого в коде пишем AddNamesToList("A", "B", ...."Пока не надоест ")
Для цикла на базе с For ... Next потребуется уточнения про количество параметров, которые передаются
Код: Выделить весь код
Sub AddNamesToList(ByRef I As Integer, ByVal ParamArray NamesArray() As Object)
Dim x As Integer
        For x = ListBox1.Items.Count + 1 To ListBox1.Items.Count + I
        ‘ListBox1.Items.Add(NamesArray(Rem...))
        Next x
End Sub
AddNamesToList(3, "A", "B", "Теперь указанно, что три элемента ")
и намного больше времени на адаптацию самого кода добавления в список, что б получить тот же эффект что и в предыдущем коде.
С другой стороны иногда требуется сделать выборку не по всем элементам массива, тогда удобнее For ... Next. Да можно и в For Each ... Next указать через If/Select Case и т.д. какие элементы интересуют, но это уже усложнения, проще взять For ... Next, например указывая только чётные элементы
Код: Выделить весь код
For iCounter = 0 to 10 Step 2
...
Next iCounter
Вот ещё два примера сравнений двух структур
Код: Выделить весь код
Dim i As Integer
For i = 0 To ListBox1.Items.Count - 1
{ statements to process item ListBox1.Items(i) }
Next
...
Dim itm As Object
For Each itm In ListBox1.Items
{ process the current item, represented by the itm variable }
Next
http://www.askit.ru/custom/progr_adm...ript_loops.htm страница хоть и про VbScript но объяснение про циклы катит.

Отправлено: 16:08, 25-06-2008 | #141



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


У меня есть перменная.
Код: Выделить весь код
Dim AllDrive() As ArrayList
Мне нужно сделать, чтобы в неё добавлялись пареметры. Как это сделать?

Отправлено: 18:00, 26-06-2008 | #142


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
        AllDrive.Add("a")
        AllDrive.Add("b")
        AllDrive.Add("c")
'...
ArrayList.Item Property

Отправлено: 18:59, 26-06-2008 | #143


Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
Debug.Print("Element {0} is ""{1}""", 2, stringList(2))
Хы, прикольная штука. А её ещё где-нить можно применить?

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

Последний раз редактировалось Uzvern, 27-06-2008 в 19:48.


Отправлено: 21:45, 26-06-2008 | #144


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


http://msdn.microsoft.com/en-us/libr...ics.debug.aspx
Только в отладке разработчиком, пользователю оно не доступно.

Это когда проводишь курсором на кнопке, что б он по центру выскакивал, или когда где-то на форме и нужно указать его положение по центру кнопки?
В любом случаи команда
Windows.Forms.Cursor.Position = New System.Drawing.Point(Button1.Location.X + Me.Location.X + 50, Button1.Location.Y + Me.Location.Y + 30)
в первом случаи её нужно указать в событии на движении по нужной кнопке, а во втором по движению на форме.
Вспомогательные координаты необходимо будет подрегулировать в зависимости от размеров кнопки.

Отправлено: 18:18, 27-06-2008 | #145


Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Admiral, о, спасибо. Вот ещё задачка :

Как мне во вторую колонку добавить текст?
Код: Выделить весь код
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim ListView1 As New ListView

        Controls.Add(ListView1)
        ListView1.Dock = DockStyle.Fill
        ListView1.View = View.Details

        With ListView1.Items
            .Add("1")
            .Add("2")
            .Add("3")
            .Add("4")
            .Add("5")
        End With

        ListView1.Columns.Add("1", 70)
        ListView1.Columns.Add("2", 70)

    End Sub
End Class
На первый вопрос - решение найдено :
читать дальше »
Код: Выделить весь код
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim ListView1 As New ListView

        Controls.Add(ListView1)
        ListView1.Dock = DockStyle.Fill
        ListView1.View = View.Details

        ListView1.Columns.Add("Name", 50)
        ListView1.Columns.Add("Item : Name", 78)

        Dim Col As ListViewItem

        Col = ListView1.Items.Add("A")
        Col.SubItems.AddRange(New String() {"Item : " & ListView1.Items.Item(ListView1.Items.Count - 1).Text})
        Col = ListView1.Items.Add("B")
        Col.SubItems.AddRange(New String() {"Item : " & ListView1.Items.Item(ListView1.Items.Count - 1).Text})
        Col = ListView1.Items.Add("C")
        Col.SubItems.AddRange(New String() {"Item : " & ListView1.Items.Item(ListView1.Items.Count - 1).Text})
        Col = ListView1.Items.Add("D")
        Col.SubItems.AddRange(New String() {"Item : " & ListView1.Items.Item(ListView1.Items.Count - 1).Text})
        Col = ListView1.Items.Add("E")
        Col.SubItems.AddRange(New String() {"Item : " & ListView1.Items.Item(ListView1.Items.Count - 1).Text})


    End Sub
End Class


Как можно создать ярлык?

Последний раз редактировалось Uzvern, 28-06-2008 в 13:57.


Отправлено: 19:48, 27-06-2008 | #146


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Ещё как вариант
Код: Выделить весь код
With ListView1
            .Items(0).SubItems.Add("1")
            .Items(1).SubItems.Add("2")
            .Items(2).SubItems.Add("3")
            .Items(3).SubItems.Add("4")
            .Items(4).SubItems.Add("5")
End With
Повторное использования кода добавит указанные значения в третью колонку, при условии, что она существует. В VB.NET принято заполняют ряды, а потом разбивать их по колонкам.
ListView.Columns Property

Create shortcuts with a .NET application*
*Примечание

Вроде простое дело - создать ярлык. Но встроенного в .Net Framework средства нет. Во всяком случаи я такой возможности не нашёл, и приходится использовать COM объэкт. В литературе использование COM в .NET крайне не рекомендуется в связи с повышенным ресурсо потреблением. Может при создании ярлыка оно и не заметно, но в больших проектах использования связки COM в .NET жутко забивает оперативную память, так что можно использовать такие приложения как бенчмарк.

Не использовать COM в .NET при создании скриншота можно, если воспользоваться мастером создания установщиков
Walkthrough: Deploying a Windows-based Application
How to build an installer by using Visual Basic .NET or Visual Basic 2005
How to create shortcuts for a Visual Studio 2005 or Visual Studio .NET setup and deployment project
Adding and Removing Shortcuts in the File System Editor
Доступен в не Express редакциях.

Отправлено: 16:00, 28-06-2008 | #147


Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Как узнать номер выделеного эллемента в ListView1?

Отправлено: 16:48, 02-07-2008 | #148


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


ListView1.SelectedItems.Item(0)

Отправлено: 20:24, 02-07-2008 | #149


Аватара для Uzvern

Старожил


Сообщения: 161
Благодарности: 4

Профиль | Сайт | Отправить PM | Цитировать


Admiral, этот код позволяет щелкнуть 1 раз, дальше выдает ошибку :
Код: Выделить весь код
InvalidArgument=Value of '0' is not valid for 'index'. Parameter name: index
Код: Выделить весь код
Public Class Form1

    Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
        Me.Text = ListView1.SelectedItems.Item(0).Text
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        With ListView1.Items
            For a As Integer = 1 To 10
                .Add(a)
            Next
        End With
    End Sub
End Class

Отправлено: 17:55, 03-07-2008 | #150



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - Visual Basic 2008

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - MS Visual Basic 2008 Expres Edition файлы проекта Anton Naumov Программирование и базы данных 7 14-05-2010 14:09
VBA - Visual basic 2008 Anton Naumov Программирование и базы данных 1 02-01-2010 22:35
visual basic 6 иоанн Хочу все знать 1 27-04-2009 18:51
visual basic 6 guma Программирование и базы данных 1 26-04-2007 20:41
Visual basic carlos Программирование и базы данных 1 04-08-2003 02:03




 
Переход