Показать полную графическую версию : Visual Basic 2008
Страниц :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[
17]
18
Приветствую TomSoyer.
В простейшем случаи
Protected Overrides Sub OnMouseClick(ByVal e As System.Windows.Forms.MouseEventArgs)
MsgBox("Координаты клика мыши в области формы: " & e.Location.ToString, MsgBoxStyle.Information, "Отслежен клик мыши")
End Sub
TomSoyer
08-03-2010, 17:17
Всё это понятно. Только вот как в проект добавить этот обработчик? Просто прописать - скорее всего ничего не получится. Где-то должен быть ещё и вызов этого обработчика. Я сужу по С++, просто так случилось что нужно именно на VB 2008.
TomSoyer, это общий случай, если сама форма является самим объектом, на которую и выводится графика. Данный код как раз достаточно добавить в пределах видимости класса данной формы. Обработчик вызывается получив событие на окно (детали скрыты средой).
Если область какой-то элемент управления, нужно выбрать аналогичное событие, если такое имеется, для него. Или в конструкторе класса формы назначить ему такое (если это возможно).
TomSoyer
08-03-2010, 18:00
Да, действительно. Механизм работает. Только в областях окна формы. Часть формы занята элементом PictureBox. Вот на этой области и нужен перехват клика мыши. Как на нём заставить работать этот механизм. Я уже голову сломал над этой проблемой, перерыл все менюшки/свойства, но так и не понял, как в VB добавлять обработчики событий.
TomSoyer, событие для PictureBox называется аналогично (без On).
http://i025.radikal.ru/1003/bd/e4243e8e9dbb.png
Private Sub PictureBox1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseClick
TomSoyer
08-03-2010, 19:24
Спасибо большое за оперативную помощь. После VC добавление событий в VB как-то не совсем удобно. Хотя, может это дело привычки... :up
andreyucrf
01-04-2010, 20:17
Доброго времени суток!
Занимаюсь изучением vb2008 совсем недавно, на форуме похожих тем не нашел, посему вопросик, скажите пожалуйста, вот есть MDI формы, открываю одну, разворачиваю/сворачиваю, открываю вторую и она автоматом разворачивается, как сделать так чтобы вторая при открытии имела нормальный вид?
Заранее спасибо!
О. Хорошая темка.
У меня назрел вопрос. Я тут недавно начал изучать Visual Basic 2008 и никак не могу найти нормального самоучителя... Приходится по справке, из за этого никак не могу понять некоторые вещи: Классы, сабы и д.р. Никто не знает нормального хорошего самоучителя?
И еще... никто не может предложить модуля архивирования\разорхивирования файлов? Я нашел под C# и не могу преобразовать под VBA
Medic84 Чарльз Петцольда - Программирование для Microsoft Windows на Microsoft Visual Basic .NET, в 2-х томах.
Очень рекомендую. Насчёт актуальности должен предупредить, книга по .NET 1.1 (сегодня уже .NET4.0 наступает).
Но такие вещи как классы, сабы там рассмотрены достаточно хорошо (про классы в самом начале книги есть весьма хороший пример (про календарь)).
Насчёт непосредственно VBA не скажу. Но если есть код на C#, то получить его вариант в VB можно с помощью ОнЛайн "переводчика" - http://www.developerfusion.com/tools/convert/csharp-to-vb/
Специфические примеры может корректно и не перенесёт, а так вполне пригодный.
Большой Кол
24-04-2010, 01:52
Доброй ночи, вы писали :
В простейшем случаи
Код:
Protected Overrides Sub OnMouseClick(ByVal e As System.Windows.Forms.MouseEventArgs)
MsgBox("Координаты клика мыши в области формы: " & e.Location.ToString, MsgBoxStyle.Information, "Отслежен клик мыши")
End Sub
А нельзя ли уточнить, я хочу получить координаты X Y курсора мыши . Координаты мыши на экране получить достаточно просто :
Dim X1 As Integer
Dim Y1 As Integer
X1 = MousePosition.X.ToString
Y1 = MousePosition.Y.ToString
Но мне нужны координаты относительно формы(или какого-либо объекта) откуда их извлечь? Т.е. как мне кажется должно быть какое-то свойство объекта которое их показывает, что-то типа - Объект.Мышь.координаты.Х но какой точный синтаксис? Или я ошибаюсь?
Большой Кол, нужно преобразовать координаты экрана в координаты клиентской формы (см. метод PointToClient).
А обратное преобразование осуществляется методом PointToScreen.
Большой Кол
24-04-2010, 12:55
Простите пожалуйста , а нельзя ли привести пример кода, с PointToClient , так чтобы получить в переменные X1 и Y1 типа Integer координаты мыши на Windows Form ? Просто я только азы изучаю,вот сейчас до графики добрался, читаю я про PointToClient на MCDN , но там примеры мудреные(для меня) . Например я так понял, что тут замешен тип данных Point , я пока не сообразил как его в Integer преобразовать.
Большой Кол в большинстве случаев перевод значений с Point в две переменные Integer не требуется. Point это две переменные Integer объединённые в одну структуру.
Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
'MsgBox(PointToClient(e.Location).ToString, MsgBoxStyle.Information, e.Location.ToString)
MsgBox(PointToClient(Cursor.Position).ToString, MsgBoxStyle.Information, Cursor.Position.ToString)
'Dim X As Integer = PointToClient(e.Location).X
'Dim Y As Integer = PointToClient(e.Location).Y
End Sub
В этом примере координаты в сообщении согласно клиентской формы, а в самом заголовке в координатах экрана.
Координаты e.Location уже даны относительно формы на экране, по этому для примера PointToClient взят Cursor.Position.
Если же в PointToClient подставить e.Location то метод может вернуть отрицательные координату(ы).
В сообщении 330 для перевода в переменную Integer применять ToString не требуется.
Большой Кол
24-04-2010, 16:24
Огромное спасибо. PointToClient(Cursor.Position).ToString показывает именно то что мне нужно, осталось лишь придумать как выцедить из них цифры. PointToClient(e.Location) , по моему показывает данные от балды, но это не страшно, разберусь.
Всем привет!
можете помочь?
при открытии веб страницы на WebBrouser надо сделать так что бы Вертикальный и горизонтальные Бары двинулись и показали одну точку
или какой то блок
XPEHOMETP
10-10-2014, 11:24
Пардон, как Вы это (указание единственной, и при том, похоже, наперед заданной точки посредством скролл-баров) представляете на практике? Типа, хоть картинку можете нарисовать? А то я весь в неведении!
Devils0411
26-12-2014, 18:00
Может кто подскажет, где ошибся?
Есть форма ввода данных. При попытке внести данные, нажав на кнопку, выскакивает сообщение (в отладке VS): "Общий член "SetPassword" для типа Object не найден"
Public Class FormPass
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Label1.Text = "Смена пароля для пользователя: " & vbCrLf & (FormLentaAD.ListBox2.SelectedItem)
Me.CheckBox_chg.Checked = False
End Sub
Public Sub Buttonchg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonchg.Click 'Кнопка "Сменить"
Dim objUser As New Object
If newpwd IsNot confimpwd Then
objUser.SetPassword(Me.newpwd.Text.ToString)
objUser.AccountDisabled = False
'Установка смены пароля при первом входе
If CheckBox_chg.Checked Then objUser.Put("pwdLastSet", 0)
Else : MsgBox("Пароли не совпадают")
End If
End Sub
End Class
Devils0411, вы уверены, что у класса "Object" есть св-во SetPassword ?
Что-то мне подсказывает, что Object - это исходный класс для всех объектов. Т.е. довольно то таки типовая "болванка", из которой можно сделать что то интересное.
Dim objUser As New Object
создать объект objUser из класса Object
objUser.SetPassword() - ?
Devils0411
29-12-2014, 13:44
lxa85,
Убрал переменную ObjUser, как класс. Подправил код
Public Sub Buttonchg_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonchg.Click 'Кнопка "Сменить"
If newpwd Is confimpwd Then
CurentUserObj.SetPassword(Me.newpwd.Text.ToString)
CurentUserObj.AccountDisabled = False
'Установка смены пароля при первом входе
If CheckBox_chg.Checked Then CurentUserObj.Put("pwdLastSet", 0)
MsgBox("Пароль для пользователя изменен")
Else : MsgBox("Пароли не совпадают")
End If
End Sub
End Class
Но сравнения не происходит. Если я в форме, указываю пароль и подтверждение одинаковыми - выдается сообщение, что пароли не верны.
Т.е. сравнение переменных newpwd, confimpwd происходят некорректно.
Переменные задаются в TextBox'ах
Devils0411
29-12-2014, 18:53
Проблему решил. Вот таким образом:
Select Case String.Compare(newpwd.Text, confimpwd.Text, False)
Case Is = 0
CurentUserObj.SetPassword(Me.newpwd.Text)
CurentUserObj.AccountDisabled = False
'Установка смены пароля при первом входе
If Me.CheckBox_chg.Checked Then CurentUserObj.Put("pwdLastSet", 0)
MsgBox("Пароль для пользователя изменен")
Me.Close()
Case Is <> 0
MsgBox("Пароли не совпадают")
End Select
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.