Страница: 1 |
Страница: 1 |
Вопрос: Как вам вот это не слабо
Добавлено: 22.03.06 08:27
Автор вопроса: Боцман | Web-сайт:
Я тут баловался с масивами и получился такой код
Private Sub Form_Load()
Dim Button(32) As VB.CommandButton
Dim № As Integer
Me.Width = 300
Me.Height = 300 * 33
For № = 0 To 32
Set Button(№) = Controls.Add("VB.CommandButton", "Button" & №, Form1)
Button(№).Top = № * 300
Button(№).Visible = True
Button(№).Width = 300
Button(№).Height = 300
Button(№).Caption = (Chr(192 + №))
Button(№).ToolTipText = №
Next №
End Sub
А как еще и заставить реагировать на клик пока не пойму.
Может пообсуждаем?
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #1
Добавлено: 22.03.06 08:42
Мож не надо, а? Боян страшный...
Номер ответа: 2
Автор ответа:
AVD
Вопросов: 4
Ответов: 9
Профиль | | #2
Добавлено: 22.03.06 13:00
В VB.net такое мутить - легко. А вот в VB6 - GSerg прав, не надо. Да и, я думаю, не получится. По крайне мере я не нашел как.
Номер ответа: 3
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #3
Добавлено: 22.03.06 13:55
Вообще-то, под словом "боян" понимается тот факт, что обработка событий от коллекции динамических чего-то - вопрос настолько измусоленный, что...
http://bbs.vbstreets.ru/viewtopic.php?p=37547#37547, к примеру...
Номер ответа: 4
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #4
Добавлено: 22.03.06 14:01
Да, собсно, и на этом форуме его достаточно обсосали.
С кнопочками даже проще, можно замутить не только враппер, но и сабкласс
Номер ответа: 5
Автор ответа:
Боцман
ICQ: 295725312
Вопросов: 53
Ответов: 830
Web-сайт:
Профиль | | #5
Добавлено: 22.03.06 14:42
Спасибо за vbstreets изучю.
Ая через hwnd решал сейчас, думаю брошу лучше
использовать опыт знающих.
Еще раз спасибо
Номер ответа: 6
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #6
Добавлено: 22.03.06 21:52
Ууух! Множественный сабклассинг на VB? КАААК?
Номер ответа: 7
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #7
Добавлено: 23.03.06 04:33
Подряяяяд! Всех в одну addressooooof!
Номер ответа: 8
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #8
Добавлено: 23.03.06 16:45
Тю. А как вы собрались из AdressOf получить имя. Имеется ввиду метод без перебора.
Номер ответа: 9
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #9
Добавлено: 23.03.06 17:12
Нафиг имя. Есть hWnd - тот же Index.
Номер ответа: 10
Автор ответа:
Боцман
ICQ: 295725312
Вопросов: 53
Ответов: 830
Web-сайт:
Профиль | | #10
Добавлено: 24.03.06 11:00
Зашел сюда вижу еще обсуждают. В принцепе я бросил на этом можно и продолжить, если кому интересно.
Dim mousepos As POINTAPI ' координаты курсора мыши
Dim wintext As String, slength As Long ' текст заголовков окна и его длина
Dim handWnd As Long ' дескриптор окна,находящегося в точке
Dim retval As Long ' возвращаемое значение
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As KeyCodeConstants) As Integer
Public Function MButtonDown(btButton As Byte) As Boolean
MButtonDown = CBool(GetKeyState(vbKeyLButton) And &H8000)
End Function
Private Sub Form_Load()
Dim Button(32) As VB.CommandButton
Dim № As Integer
Me.Width = 1300
Me.Height = 300 * 33
For № = 0 To 32
Set Button(№) = Controls.Add("VB.CommandButton", "Button" & №, Form1)
Button(№).Top = № * 300
Button(№).Visible = True
Button(№).Width = 300
Button(№).Height = 300
Button(№).Caption = (Chr(192 + №))
Button(№).ToolTipText = №
Next №
End Sub
Private Sub Timer1_Timer()
Dim bukba As String
Dim PosCur As Long
Dim DlinaTexta As Long
Dim WindowCaption As String
PosCur = GetCursorPos(MouseCoordinat)
HandleWin = WindowFromPoint(MouseCoordinat.X, MouseCoordinat.Y)
WindowCaption = Space(256)
DlinaTexta = GetWindowText(HandleWin, WindowCaption, 255)
Form1.Caption = Left(WindowCaption, DlinaTexta)
bukba = Left(WindowCaption, DlinaTexta)
If MButtonDown(1) Then MsgBox "нажата буква " & bukba
End Sub
А это код модуля
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Type POINTAPI
X As Long
Y As Long
End Type
Public MouseCoordinat As POINTAPI
'получить заголовок окна
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Declare Function WindowFromPoint Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Public Function GetControlNameFromWindow(ByVal hwnd&
Dim formnum%
Dim ctlnum%
For formnum% = 0 To Forms.Count - 1
If Forms(formnum.hwnd = hwnd& Then
GetControlNameFromWindow = Forms(formnum.Name
Exit Function
End If
For ctlnum% = 0 To Forms(formnum.Controls.Count - 1
On Error Resume Next
If Forms(formnum.Controls(ctlnum.hwnd = hwnd& Then
If Err.Number = 0 Then
GetControlNameFromWindow = Forms(formnum.Controls(ctlnum.Name
Else
GoTo Next_Ctrl
End If
Exit Function
End If
Next_Ctrl: Next ctlnum%
Next formnum%
End Function
и незабудте расположить таймер интервал 1
Номер ответа: 11
Автор ответа:
Боцман
ICQ: 295725312
Вопросов: 53
Ответов: 830
Web-сайт:
Профиль | | #11
Добавлено: 24.03.06 21:23
А вот так лучше
[CODE]Private Sub Form_Load()
Dim Button(33) As VB.CommandButton
Dim № As Integer
Me.Width = 600
Me.Height = 300 * 34
For № = 0 To 32
Set Button(№) = Controls.Add("VB.CommandButton", "Button" & №, Form1)
Button(№).Top = № * 300
Button(№).Visible = True
Button(№).Width = 300
Button(№).Height = 300
Button(№).Caption = (Chr(192 + №))
Button(№).ToolTipText = №
Next №
Dim Button1 As VB.CommandButton
Set Button1 = Controls.Add("VB.CommandButton", "Button1" & 40, Form1)
Button1.Left = 400
Button1.Visible = True
Button1.Width = 400
Button1.Height = 400
Button1.Caption = "#"
Button1.ToolTipText = "Нажмите и в директории с программой будет создан ряд папок с именами букв русского алфавита"
Button1.BackColor = &HFF&
Timer1.Enabled = True
End SubCODE]
В принципе это я в качестве собственного ликбеза задумал(прикольно просто).
На днях исходник на своем сайте опубликую.
Номер ответа: 12
Автор ответа:
Боцман
ICQ: 295725312
Вопросов: 53
Ответов: 830
Web-сайт:
Профиль | | #12
Добавлено: 24.03.06 21:26
Пардон ошибочка вот этот код
Dim bukba As String
Dim PosCur As Long
Dim DlinaTexta As Long
Dim WindowCaption As String
PosCur = GetCursorPos(MouseCoordinat)
HandleWin = WindowFromPoint(MouseCoordinat.X, MouseCoordinat.Y)
WindowCaption = Space(256)
DlinaTexta = GetWindowText(HandleWin, WindowCaption, 255)
bukba = Left(WindowCaption, DlinaTexta)
If MButtonDown(1) Then
If bukba Like "?" Then
If 191 < Asc(bukba) And Asc(bukba) < 224 Then MsgBox "нажата буква " & bukba
End If
End If
End Sub
Номер ответа: 13
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #13
Добавлено: 28.03.06 10:29
Отслеживать нажатие кнопки по таймеру?
Ржунимагу пацтулом...