Страница: 1 |
Страница: 1 |
Вопрос: Повторяющийся код программы
Добавлено: 06.03.08 19:21
Автор вопроса: Яр
Здравствуйте, люди добрые!
Это опять мы - неместные - просим у вас помощи: "Поможите кто чем может!"
У меня в программе постоянно дублируется один кусок кода, необходимого для перемещения формы за любое место. Из-за этого размер кода вырос о-го-го (код внизу). Как можно эту заразу оптимизировать, чтобы она не повторялась? Спасибочки всем огромное.
Код формы
Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
ReleaseCapture
SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End If
End Sub
Private Sub Label2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
ReleaseCapture
SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End If
End Sub
... и т.д.
Код модуля
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Const HTCAPTION = 2
Public Const WM_NCLBUTTONDOWN = &HA1
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
GeniX
ICQ: 418811267
Вопросов: 40
Ответов: 243
Web-сайт:
Профиль | | #1
Добавлено: 06.03.08 19:24
Вынести в модуль. Или прописать в sub xxx, которую можно вызвать call xxx.
Номер ответа: 2
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #2
Добавлено: 06.03.08 19:41
If bttn = 1 Then
Call ReleaseCapture
SendMessage (wnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End If
End Function
Номер ответа: 3
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #3
Добавлено: 06.03.08 21:46
Как вариант:
If Button = 1 Then
ReleaseCapture
SendMessage hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End If
End Sub
Private Sub Label2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1_MouseDown(Button, Shift, X, Y)
End Sub
=D
Номер ответа: 4
Автор ответа:
Яр
Вопросов: 18
Ответов: 24
Профиль | | #4
Добавлено: 06.03.08 21:58
Ребята, или я что-то не так делаю, или я такой тупой (в VB я не много понимаю), или не работают ваши предложения. Растолкуйте, пожалуйста!!!!
Номер ответа: 5
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #5
Добавлено: 06.03.08 23:14
Кароче я предложил засунуть в модуль функцию(процедуру - правильнее) F1 и вызывать её везде где надо (Label1_MouseDown, Label2_MouseDown)
А ZagZag предложил код записать в Label1_MouseDown и вызывать эту процедуру.
Суть одна и та же (что интереснно я как-то раз пользовался вариантом именно ZagZag)
Номер ответа: 6
Автор ответа:
Яр
Вопросов: 18
Ответов: 24
Профиль | | #6
Добавлено: 07.03.08 00:32
Всем-всем-всем спасибо!!!!!!!!