Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как вам вот это не слабо Добавлено: 22.03.06 08:27  

Автор вопроса:  Боцман | Web-сайт: Rus-Skipper.narod.ru | ICQ: 295725312 
Я тут баловался с масивами и получился такой код
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-сайт: Rus-Skipper.narod.ru
 Профиль | | #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-сайт: Rus-Skipper.narod.ru
 Профиль | | #10
Добавлено: 24.03.06 11:00
Зашел сюда вижу еще обсуждают. В принцепе я бросил на этом можно и продолжить, если кому интересно.
Dim HandleWin As Long
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
DimAs 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-сайт: Rus-Skipper.narod.ru
 Профиль | | #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-сайт: Rus-Skipper.narod.ru
 Профиль | | #12
Добавлено: 24.03.06 21:26
Пардон ошибочка вот этот код
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)
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
Отслеживать нажатие кнопки по таймеру?
Ржунимагу пацтулом...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам