Страница: 1 |
Вопрос: Опять Объекты | Добавлено: 31.05.04 09:26 |
Автор вопроса: ![]() |
private type Xtype
CheckB as CheckBox end type private MasObj() as Xtype private sub XXX ...... if ??? then masobj(lng1).checkox=controls.add ("VB.Checkbox","Check" & UnicalID) end if ...... end sub мне надо обрабатвать события этих Check'ов, как видите, динамичеси создаваемых. |
Ответы | Всего ответов: 4 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #1 | Добавлено: 31.05.04 09:49 |
1. Если нужно создать массив объектов - сделай через Load
2. В твоем варианте все просто - используй сабклассинг. Вот примерно так: 'код формы Option Explicit Private Type Xtype CheckB As CheckBox End Type Private MasObj() As Xtype Private Sub XXX() ReDim MasObj(1) Dim UnicalID As Long UnicalID = 35235 'Trash Set MasObj(1).CheckB = Controls.Add("VB.Checkbox", "Check" & UnicalID) MasObj(1).CheckB.Move 20, 20 MasObj(1).CheckB.Visible = True End Sub Private Sub Form_Load() Call XXX PrevProc = SetWindowLong(MasObj(1).CheckB.hwnd, GWL_WNDPROC, AddressOf CheckProc) End Sub Private Sub Form_Unload(Cancel As Integer) SetWindowLong MasObj(1).CheckB.hwnd, GWL_WNDPROC, PrevProc End Sub 'код модуля Option Explicit Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Declare Function SetClipboardViewer Lib "user32" (ByVal hwnd As Long) As Long Public Const GWL_WNDPROC = (-4) Public PrevProc As Long Private Const WM_LBUTTONUP = &H202 Public Function CheckProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long CheckProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam) If uMsg = WM_LBUTTONUP Then MsgBox "Left click" End Function Все просто... |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 321 |
Профиль | Цитата | #2 | Добавлено: 31.05.04 10:24 |
Во уж спасибо!
Не думал что так быстро получу ответ(да и вообще получу). |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 334781088 Вопросов: 108 Ответов: 2822 |
Профиль | Цитата | #3 | Добавлено: 31.05.04 10:49 |
Все, теперь все заработало? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 321 |
Профиль | Цитата | #4 | Добавлено: 31.05.04 19:01 |
Ага! То что надо. |
Страница: 1 |
|