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

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


В VB2008м (кроме General Declaration как и в VB6, есть так называемая Form1 - Declaration) используется модель классов, сама Form1 к классу, так вот сразу здесь можно объявить переменны/константы и т.д. относящиеся ко всей форме этого класса.
Код: Выделить весь код
Public Class Form1
    Dim A As Integer
End Class
А объявление в таймере существует только в момент исполнения/срабатывания таймера.

Отправлено: 17:55, 01-05-2008 | #21



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

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


Аватара для Uzvern

Старожил


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

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


Цитата Admiral:
так вот сразу здесь можно объявить переменны/константы и т.д. относящиеся ко всей форме этого класса. »
Это я знаю. Мне интерестно что там с таймером...

Отправлено: 17:58, 01-05-2008 | #22


Ветеран


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

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


Таймер запустился, обозначил переменную i прибавил к ней единицу и закончил работу, и никто про i так и ничего не узнал. Заново запустился и по новой i объявил…

Отправлено: 18:01, 01-05-2008 | #23


Аватара для Uzvern

Старожил


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

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


ааа....ну это то я знаю как бы ещё с самого начала как только увидел VB.

Вот ещё сабж :

у меня 8 ТекстБосов. В каждый текстбокс генерируется произвольльное число от 0 до 1 (Int(rnd(1))). Получается, если в каждый ТекстБокс сгенерируется 1, значит во всех ТекстБоксах будет 1, а мне надо чтобы в 4 (не меньше и не больше) каких-то (произвольных) ТестБокса сгенерировалось 1 или 0, точно так же если значение стоит 5, то генерируется либо 5 "0", либо 5 "1". кажется подробно объяснил.

Кстати, Admiral, посоветуй хорший учебник по VB6 (на советском), просто у меня есть, но там все урезано по максимуму.

Отправлено: 20:09, 01-05-2008 | #24


Аватара для Uzvern

Старожил


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

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


Сделал вот так, но это не вариант. Нужно чтобы высчислялось сколько "0" будет писаться, например из 9 ТекстБокса, т.е. в 9ТекстБокс ввел "6" - получил в 6 предыдущих ТекстБоксах "0"

Код: Выделить весь код
Public Class Form1

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

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim v
        v = Int(Rnd() * 8) + 1
        If v Then
            If v = 1 Then TextBox1.Text = Int(Rnd(1))
            If v = 2 Then TextBox2.Text = Int(Rnd(1))
            If v = 3 Then TextBox3.Text = Int(Rnd(1))
            If v = 4 Then TextBox4.Text = Int(Rnd(1))
            If v = 5 Then TextBox5.Text = Int(Rnd(1))
            If v = 6 Then TextBox6.Text = Int(Rnd(1))
            If v = 7 Then TextBox7.Text = Int(Rnd(1))
            If v = 8 Then TextBox8.Text = Int(Rnd(1))
        End If
    End Sub
End Class

Отправлено: 20:33, 01-05-2008 | #25


Аватара для Uzvern

Старожил


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

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


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

Me.Opacity и что нужно дальше писать чтобы работало?
Просто мне нужно, если переменная i = 1 , тогда прозрачность равна 90%. Если i = 2 , тогда прозрачность равна 80% и т.д. до 0%


А нет. Все. Разобрался значение должно быть в виде : 90% = 0.9 ; 80% = 0.8 и т.д.

Последний раз редактировалось Uzvern, 01-05-2008 в 21:44.


Отправлено: 21:23, 01-05-2008 | #26


Ветеран


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

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


Незачем генерит каждый раз, лучше один раз занести результат в переменной и потом с ней проводить операции.
Код: Выделить весь код
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Nuli As Integer
        Dim Edinicu As Integer
        Dim NulOdin As Byte
        For I As Integer = 1 To 8
            NulOdin = Rnd(1)

            If NulOdin = 0 Then
                Nuli = Nuli + 1
            ElseIf NulOdin = 1 Then
                Edinicu = Edinicu + 1
            End If

            If Nuli >= 5 Then
                NulOdin = 1
            ElseIf Edinicu >= 5 Then
                NulOdin = 0
            End If

            Select Case I
                Case 1
                    TextBox1.Text = NulOdin
                Case 2
                    TextBox2.Text = NulOdin
                Case 3
                    TextBox3.Text = NulOdin
                Case 4
                    TextBox4.Text = NulOdin
                Case 5
                    TextBox5.Text = NulOdin
                Case 6
                    TextBox6.Text = NulOdin
                Case 7
                    TextBox7.Text = NulOdin
                Case 8
                    TextBox8.Text = NulOdin
            End Select
        Next I
    End Sub
Я бы заменил всю структуру Select Case на что-то типа TextBox(I).Text = NulOdin, но здесь не получил как в VB6 получить массив элементов, может не нашёл где или не знаю как, но в VB6 при копипаст уже просится создать массив, а не просто молчаливо создавал новый тексбокс.
По остальному, я считаю нули и единицы, если количество одного из них станет равно/больше 5, то далее заполнять переменную сохраняющую результат генерации нуль/один противоположным числом.

Самоучитель Visual Basic 6.0 А. Ананьев, А. Федоров
Микаэл Хальворсон Microsoft Visual Basic 6.0 для профессионалов Шаг за шагом

Из электронных (в печатном виде продукт не выходил) приглянулся
VISUAL BASIC 6 и VBA. Для профессионалов
Ну и конечно же
Сайты о Visual Basic
+ к той теме ресурс из современности http://vbnet.ru/
Так же McDAK подсказал, как правильнее всего изучать Бейсик этой ссылкой
Конечно, историю нужно помнить, но останавливаться на ней долго не стоит нужно идти вперёд и как сказал ivank: VB6.0 и VB.Net это _абсолютно_ разные язики >>. Но в дело вмешалось Microsoft и прекращает поддержку VB 6 тем самим призвало применять vb.net там, где ранее достаточно было vb6
Так что вот ещё тема Visual_Basic 2005 выбор литературы
По 2008й ещё очень мало переведено литературы, впрочем как и по любым другим компонентам студии 2008.
Какая б не было книга, главное желание.

P.S.
На счёт прозрачности и книг, то в источнике VISUAL BASIC 6 и VBA. Для профессионалов сведенья натолкнули на мысль как использовать прозрачность в VB6 без GDI+. Официально, через файл Microsoft Visual Studio 6.0\Common\Tools\Winapi\WIN32API.TXT объявления данной функция Бейсику не полагалось, так что как бы не документированная функция для Бейсика.
Код: Выделить весь код
'Прозрачность в Visual Basic 6
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" ( _
ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private Declare Function SetLayeredWindowAttributes Lib "user32" ( _
ByVal hwnd As Long, _
ByVal crKey As Long, _
ByVal bAlpha As Byte, _
ByVal dwFlags As Long) As Long

Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYERED = &H80000
Private Const LWA_ALPHA = &H2

Private Sub SetTrans(ByVal lhWnd As Long, ByVal lAlpha As Byte)
SetWindowLong lhWnd, GWL_EXSTYLE, GetWindowLong(lhWnd, GWL_EXSTYLE) Or WS_EX_LAYERED
SetLayeredWindowAttributes lhWnd, 0&, lAlpha, LWA_ALPHA
End Sub

Private Sub Command1_Click()
SetTrans hwnd, 100
End Sub
На практике прозрачность не очень популярная функцыя.

Последний раз редактировалось Admiral, 01-05-2008 в 22:21. Причина: Добавил код по Visual Basic 6 с прозрачностью

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:04, 01-05-2008 | #27


Аватара для Uzvern

Старожил


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

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


Вложения
Тип файла: rar 777.rar
(43.6 Kb, 7 просмотров)


зачет!
А что такое Select Case?
И как можно добавлять значения из текстового файла в ComboBox?

Вот кстати с вашей помощью сделал игровой аппарат. Я начинающий, поэтому для меня это была одна не из лёгких задач.

Отправлено: 22:18, 01-05-2008 | #28


Ветеран


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

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


Select Case это выбор по определённому значению. Все равно не совсем там катит, лучше через массив работать. Кстати, там действительно необходимо такое число ТекстБоксов, может лучше подойдут массивы?
Вместо того что б писать
Цитата Uzvern:
If v = 1 ....
If v = 2 ... »
Достаточно
Код: Выделить весь код
Select Case v
Case 1
...
Case 2
...
Можно и целые группы значений
Код: Выделить весь код
Dim number As Integer = 8
Select Case number
    Case 1 To 5
        Debug.WriteLine("Between 1 and 5, inclusive")
        ' The following is the only Case clause that evaluates to True.
    Case 6, 7, 8
        Debug.WriteLine("Between 6 and 8, inclusive")
    Case 9 To 10
        Debug.WriteLine("Equal to 9 or 10")
    Case Else
        Debug.WriteLine("Not between 1 and 10, inclusive")
End Select
*взято со справки по Visual Basic 2008 Express

Считать в переменную или сразу построчно считывать через свойство ComboBox1.Items().Add
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:37, 01-05-2008 | #29


Аватара для Uzvern

Старожил


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

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


Цитата Admiral:
Считать в переменную или сразу построчно считывать через свойство ComboBox1.Items().Add »
А по подробней можно?

Считывать из переменной будет так : ComboBox1.Items().Items(*перемнная*) ? Или как-то по другому?
Что это значит : ComboBox1.Items().Add ? Добавлятьв перменную? ComboBox1.Items().Add(*перемнная*) ?

Отправлено: 22:58, 01-05-2008 | #30



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




 
Переход