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

Компьютерный форум 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

 

Аватара для Uzvern

Старожил


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

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


Admiral, а если я добавлю ещё TextBox и при нажатии на кнопку, чтобы вылетало сообщение с текстом из текст бокса. Как это сделать?

Отправлено: 18:17, 23-07-2008 | #181



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

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


Ветеран


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

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


Я так понимаю TextBox на каждую вкладку
Код: Выделить весь код
        For x As Integer = 0 To TabControl.TabCount - 1
REM ... код из предыдущего поста
            Dim t As New TextBox
            TabControl.TabPages(x).Controls.Add(t)
            t.Name = "TextBox" & x + 1
            t.Text = 1000 * (x + 1)
        Next

    End Sub

    Protected Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs)
        If TypeOf (sender) Is Button Then ' check to make sure that the sender is actually a Button
            MsgBox(TabControl.SelectedTab.Controls.Item(1).Text) 'Говорим что бы вывело текст контрола размещённого в выделенной вкладке по индексом 1, под 0 ушла кнопка
        End If
    End Sub

Отправлено: 19:33, 23-07-2008 | #182


Аватара для Uzvern

Старожил


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

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


Admiral, блин, точняк там же можно выводить из контрола. чет я совсем затупил. Спасибо, Чувак!

Отправлено: 22:16, 23-07-2008 | #183


Аватара для Uzvern

Старожил


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

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


А можно как-то писать и использовать в VB dll?

Отправлено: 01:19, 24-07-2008 | #184


Ветеран


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

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


С переходом на NET VB утратил базовую возможность писать ActiveX DLL.
Писать всё же можно, но среда аналогичной вкладки Придётся немного помудрить, что б сделать всё же DLL Writing an ActiveX Control in VB.NET
И их правильное использования.
DLL на VB.NET (точка входа)
Microsoft всё же надеется что среди богатых возможностей .NET FrameWorks найдутся классы которые прямо из коробки подойдут к проге, так что б смысла писать DLL у разработчиков не было.
В тоже время наибольший интерес представляют уже написанные DLL (не обязательно на NET). И в этой теме, когда необходимо было использовать WinApi функции, как раз использовались вызовы из системных библиотек.
Есть удобное средство позволяющие узнать, как вызывать функции из написанных DLL (тех что входят в базу проги, преимущественно системные, так что WinAPI) ApiViewer (en)

Отправлено: 01:56, 24-07-2008 | #185


Аватара для Uzvern

Старожил


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

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


Как можно добавить таймер на форму?
Код: Выделить весь код
        Dim Timer As New Timer
        Controls.Add(Timer)
так не хочет.

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

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


Ветеран


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

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


Таймер, в отличие от VB6, помещается не на саму форму, а среда сама показывает, что он есть в проекте, но не добавляет его на форму.
Timer Class (по ссылке пример)
По указанным причинам так нельзя, кроме таймера, MainMenu или ContextMenu так как эти контроли не входят в класс Control.ControlCollection. >>

Отправлено: 13:56, 24-07-2008 | #187


Аватара для Uzvern

Старожил


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

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


Как можно перевсти фокус с одно текст бокста на другой, ну или на кнопку например.
Все. нашел :
Код: Выделить весь код
.Focus()
Как можно сделать обрашение к нужному текст боксу по кнопке, например :
Код: Выделить весь код
Public Class Form1

    Dim x As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        x += 1
        TextBox(x).Focus()
    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 n As Integer
        Dim l As Integer
        Dim s As Integer
        Do Until n = 4
            n += 1
            Dim tb As New TextBox
            tb.Size = New Size(55, 20)
            tb.Location = New Point(12 + l + s, 12)
            tb.MaxLength = 4
            s = tb.Size.Width
            l = tb.Location.X
            AddHandler tb.TextChanged, AddressOf T
            Controls.Add(tb)
            Me.Size = New Size(tb.Location.X + 30 + 55, 78)
        Loop
    End Sub

    Dim v As TextBox
    Dim ti As Integer

    Private Sub T(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If TypeOf sender Is TextBox Then
            v = sender
            If v.Text.Length = 4 Then
                ti = v.TabIndex
                ti += 1
                Debug.Print(ti)
                Try
nachalo:            If TypeOf Controls.Item(ti) Is TextBox Then
                        Debug.Print(ti)
                        Controls.Item(ti).Focus()
                        Debug.Print(Controls.Item(ti).Name)
                    Else
                        ti += 1
                        GoTo nachalo
                    End If
                Catch
                    Dim TB As TextBox
                    For Each x As TextBox In Controls
                        If TypeOf x Is TextBox Then
                            TB = x
                            TB.Enabled = False
                        End If
                    Next
                End Try
            End If
        End If
    End Sub
End Class
Правда надо немного подшаманить, чтобы ошибки не лезли

Не могу понять как обращаться к объектам из BackgroundWorker. Прочитал этот пост, но ничего путного не нашел.
вот сам код :
Код: Выделить весь код
На форму кинул 3 TextBox'a, BackgroundWorker, ProgressBar, Кнопку

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        BackgroundWorker1.RunWorkerAsync()
    End Sub

    Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        If TextBox1.Text <> "" And TextBox2.Text <> "" Then
            If TextBox1.Text <> "0" Or TextBox2.Text <> "0" Then
                TextBox3.Text = Math.Round(Val(TextBox1.Text / TextBox2.Text / 60), 2) & " мин."На это сторке начинает "орать" : "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "TextBox3" не из того потока, в котором он был создан."
            End If
        End If
    End Sub

    Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
        ProgressBar1.Value = e.ProgressPercentage
    End Sub
End Class
Как работать с модулями?

Последний раз редактировалось Uzvern, 25-07-2008 в 19:42.


Отправлено: 23:12, 24-07-2008 | #188


Аватара для Uzvern

Старожил


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

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


Hash
А можно как-то получить обратный результат?
Код: Выделить весь код
"qwertyuiopasdfgh".GetHashCode = 1377243374
А мне бы хотелось наоборот получить не "1377243374", а "qwertyuiopasdfgh"

Отправлено: 23:52, 25-07-2008 | #189


Ветеран


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

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


Получить символы по его хешу не возможно в принципе!

Хеш (Hash) - комбинация символов, полученная с помощью безвозвратных математических операций. Если б можно было, то все пароли зная их хешы, которые не скрывают, на раз бы раскрывались. >>
В Интернете есть сайты которые составляют хеш таблицы соответствий, что б легче было "вспоминать" пароли.

Отправлено: 00:50, 26-07-2008 | #190



Компьютерный форум 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




 
Переход