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

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


С Праздничком!

EOF(1) - End Of File (конец файла) под номером один. Номер может быть от 1 и до 255, цикл длится от начала до конца.
& - читается как аппендикс. В данном конкретном случаи означает прибавить символы к другим символам, и сохранить строчку результат в переменной AllText.

Я так понимаю, что под "строками для бинарных файлов" подразумеваются те, которые показывает блокнот при открытии не текстового файла? Так вот, это блокнот их бьёт на строчки. На самом деле бинарный файл это одна сплошная строчка, так как в нём не включены коды "перевода каретки" (обозначается в Бейсике как vbCrLf) и Бейсик представляет такой файл как одно целое. Кодеру же в таком режиме нужно чётко знать, какие группы данных ему необходимо считать. Можно считать первые 3 байт, далее следующие за ним 5 байт. Также возможно считывание в произвольном месте, указав необходимую ячейку, с которой необходимо начинать чтение/запись.
Бинарный формат более компактный для программы, но не такой прозрачный кодеру как текстовый, на первых порах.

Насчёт первой конструкции, это не цикл. Кстати в нём возможна ещё и конструкция ElseIf (без пробела) также как и в VB 6.0 , по которому Vazdaew когда-то подсказал.

Но она может быть в роле цикла, если добавить не совсем рекомендуемый книгами, оператор GoTo:
Код: Выделить весь код
StartCicl: A = A + 1
        If A = 10 Then
            GoTo EndCicl
        Else
            GoTo StartCicl
        End If
EndCicl: TextBox1.Text = A
        A = 0
While не выполнится ни разу, если не выполнится указанное условие;
Until выполнится хоть бы раз, а уже начиная со второго раза будет интересоваться дальнейшим условием выполнением (например, так можно установить примитивную защиту, на ознакомление с программным продуктом);
For ... Next удобный тем, что в нём изначально встроенный счетчик переменной, которую можно использовать в цикле. В других конструкциях цикла такую переменную необходимо вносить самостоятельно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:21, 27-04-2008 | #11



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

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


Аватара для Uzvern

Старожил


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

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


Изображения
Тип файла: png Untitled-2.png
(168.2 Kb, 19 просмотров)

Цитата Admiral:
& - читается как аппендикс. В данном конкретном случаи означает прибавить символы к другим символам, и сохранить строчку результат в переменной AllText. »
Т.е. это что-то типа заменителя And?

Как минимизировать форму (свернуть в пуск)? Просто нарисовал оформление, отключил все кнопки в Свойствах формы, поставил FixedSingle, убрал название формы. Вот теперь надо чтобы при нажатии на кнопку она (форма) сворачивалась в пуск и в пуск было написано, например "123" а в названии формы ничего небыло. Думая мало кто поймет смысл данного сообщения, поэтому даю скрин какой я хочу получить результат.

Или может как-то можно переписать оформление? А то стандартные кноппки (Свернуть, Развернуть, Закрыть) как-то не катят.

Последний раз редактировалось Uzvern, 27-04-2008 в 20:01.


Отправлено: 18:25, 27-04-2008 | #12


Ветеран


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

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


Да.

По простому, можно в событи на сворачивания установить возврат форме заголовка с названием 123, а на разворачивании обратно прятать.

Отправлено: 20:08, 27-04-2008 | #13


Аватара для Uzvern

Старожил


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

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


Admiral, а как это сделать? Дай код плз. + При несвернутой форме желательно тоже чтобы название было.

Как её при нажатии на кнопку ( не стандартную, а на форме ) сворачивать?

Цитата Admiral:
Можно считать первые 3 байт, далее следующие за ним 5 байт »
И на это тоже код плз

Последний раз редактировалось Uzvern, 27-04-2008 в 20:34.


Отправлено: 20:15, 27-04-2008 | #14


Ветеран


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

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


Код: Выделить весь код
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        WindowState = FormWindowState.Minimized
        Me.Text() = "123"
    End Sub

    Private Sub Button1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.GotFocus
        Me.Text() = ""
    End Sub
Хм.. Что б когда активным было и название было? Это уже не по простому.
Я бы взял за основу код проги для VB6 из этой статьи
Разработка окна в стиле Windows XP
Тут и стандартное окно подменяют своим, и название когда оно не свёрнуто есть.

P.S.
Код: Выделить весь код
        Dim Some3Bytes As String
        Dim Some5Bytes As String
        FileOpen(1, "C:\Boot.ini", OpenMode.Binary)
        Some3Bytes = New String(" ", 3)
        Some5Bytes = New String(" ", 5)
        FileGet(1, Some3Bytes)
        FileGet(1, Some5Bytes, RecordNumber:=3)'читать начиная с 3го байта
        FileClose(1)
Кстати, при бинарном чтении текстовых файлов с более чем одной строчкой, в нём есть переходы каретки vbCrLf.

Последний раз редактировалось Admiral, 27-04-2008 в 21:39. Причина: Добавил код для считывания первых 3х байт и далее следующие за ними 5ти


Отправлено: 20:56, 27-04-2008 | #15


Аватара для Uzvern

Старожил


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

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


Как сделать чтобы при зажатии Label1 и перетаскивании мыши позиция формы менялась относительно мыши, т.е. если сказать проще, то у меня Form1.FormBorderStyle=None + есть Label1, нужно организовать, чтобы при зажатии Label1 и перетаскивании мыши, окно передвигалось в сторону мыши. Вообщем сделать функцию перетаскивания.

Отправлено: 16:00, 30-04-2008 | #16


Аватара для Uzvern

Старожил


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

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


Вот ещё :


Timer1.Tick
Dim i
i=i+1

как сделать так : если i=четному числу(2,4,6 и т.д.), то вылетает MsgBox(123), а если не четному(1,3,5 и т.д.), то вылетет MsgBox (098)

P.S. Процесс может прдолжаться до бесконечности, проэтому прописывать все значения бесполезно

Отправлено: 16:26, 30-04-2008 | #17


Аватара для Uzvern

Старожил


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

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


Ещё вопросик: Как при помощи VB8 можно запускать файлы, т.е. нажал на кнпку и запустился файл?!
И можно ли как-то реализовать комманду : Пуск=>Выполнить, т.е. есть текстовое поле и кнопка. Вводим например cmd, жмем на кнопку и заускается коммандная строка.

Отправлено: 17:36, 30-04-2008 | #18


Ветеран


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

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


Примитивно, можно сделать вот так
Код: Выделить весь код
    Private Sub Label1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseDown
        A = 1
    End Sub
    Private Sub Label1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseMove
        If A = 1 Then
            Me.Left = Me.Left + e.X
            Me.Top = Me.Top + e.Y
        End If
    End Sub
    Private Sub Label1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label1.MouseUp
        A = 0
    End Sub
Кстати в VB6 было аналогично было, но учитывалась и не пиксельная системе измерений.
Код: Выделить весь код
'Код для VB6го
Dim A As Integer
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
A = 1
End Sub
Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If A = 1 Then
Form1.Left = Form1.Left + X \ Screen.TwipsPerPixelX
Form1.Top = Form1.Top + Y \ Screen.TwipsPerPixelX
End If
End Sub
Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
A = 0
End Sub
Форма, при начале движения один раз прыгает (не далеко, но зависит от размеров Формы и Лейбла). Главное понять принцип. Просто ещё нужна проверка, куда пользователь питается её двигать.

Во первых, предложенный код не будет работать по задуму, так как объявление (считай обнуление) переменной будет каждый раз при срабатывании таймера. Вынести её надо в секцию
General Declaration

Во вторых, размещать MsgBox в событиях на Таймере не лучшая идея.
А в остальном, как и в VB6 есть такая функция Mod, результат которой - остача от деления на её аргумент. В твоём случаи код такой
Код: Выделить весь код
Dim i
...
        If i Mod 2 = 0 Then
            MsgBox("123")
        Else
            MsgBox("098")
        End If
Так же как и в VB6, есть такая команда Shell .
Достаточно строчки кода Shell ("cmd.exe")

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

Отправлено: 16:57, 01-05-2008 | #19


Аватара для Uzvern

Старожил


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

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


ооо, спс.

Цитата Admiral:
Во первых, предложенный код не будет работать по задуму, так как объявление (считай обнуление) переменной будет каждый раз при срабатывании таймера. Вынести её надо в секцию
General Declaration »
А вот тут можно попродробней?

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



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




 
Переход