Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: VBA (Excel) Добавлено: 30.09.02 15:00  

Автор вопроса:  Alexa_SAS

ОЧЕНЬ нужно написать реакцию на событие WindowResize объекта Application.

Так как в помощи - не получается, может кто знает, каким образом это еще сделать???

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #1
Добавлено: 30.09.02 20:02

Извини, не понял.

Ответить

Номер ответа: 2
Автор ответа:
 Alexa_SAS



Вопросов: 11
Ответов: 12
 Профиль | | #2 Добавлено: 01.10.02 09:41

В общем и вцелом нужно написать реакцию на изменение размера окна ПРИЛОЖЕНИЯ (не книги!).

или как вариант: запретить изменение/добавление пунктов системного меню.

Ответить

Номер ответа: 3
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #3
Добавлено: 01.10.02 19:45

Если я правильно тебя понял, то.

Private Sub UserForm_Resize()
Me.Caption = "Размер формы изменён"
End Sub
Хотя я в UserFor стилей кроме None и FixedSingle не нашёл. Странно.

Насчёт меню. Может попробовать на событие Text1_MouseUp выдавать своё меню. Возможно оно перекроет системное. Это конечно если не в таблице.

 

Ответить

Номер ответа: 4
Автор ответа:
 Alexa_SAS



Вопросов: 11
Ответов: 12
 Профиль | | #4 Добавлено: 02.10.02 09:38

Спасибо за совет :-)), но это чичуть не то.

Сорри я совсем нечетко выразился. Мне нужно было (теперь уже нет) отловить изменение размеров окна самого объекта Application.

За это отвечает событие WindowResize. И его-то "отловить" и не получается.

...ну да я обошел эти все проблемы, хотя конечно не безболезненно :-(

Ответить

Номер ответа: 5
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #5
Добавлено: 03.10.02 20:06

Извини если дал ответ, который тебе не пригодился. Просто иногда пользователь сам не знает что он хочет

Да, кстати, слово чичуть пишется чуть-чуть.

Сегодня прошёлся по своим винтам. Нашёл много интересного. Советую тебе почаще навещать справочную систему. Может помочь. Надеюсь это то, что тебе поможет.

Создай меню в редакторе меню.

Caption   Name     Visible    SubLevel(уровень подменю)
---------------------------------------
menu       menu           -             0(Главное меню)
help         mnuhelp      +             1
options    mnuopt       +             1
-              sep0001     +             1
other       mnuother     +             1
prefs       mnupref       +             1
-             sep0002      +             1
cancel     mnucancel    +             1

Этот пример изменяет меню текстового поля на созданное тобой меню.

Создай модуль

Option Explicit
Public Const GWL_WNDPROC = (-4)
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
Public Const WM_CONTEXTMENU = &H7B
Public origWndProc As Long

Public Sub SetHook(hwnd, bSet As Boolean)
    If bSet Then
        origWndProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf AppWndProc)
    ElseIf origWndProc Then
        Dim lRet As Long
        lRet = SetWindowLong(hwnd, GWL_WNDPROC, origWndProc)
    End If
End Sub

Public Function AppWndProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Select Case msg
        Case WM_CONTEXTMENU
            Form1.PopupMenu Form1.menu, 1
            AppWndProc = 0
            Exit Function
    End Select
    AppWndProc = CallWindowProc(origWndProc, hwnd, msg, wParam, lParam)
End Function

Создай форму. На ней 1 текстовое поле и 3 кнопки.
Caption     Name
-----------------------
Hook        Command1
UnHook    Command2
Exit           Command3

Private Sub Command1_Click()
Call SetHook(Text2.hwnd, True)
End Sub

Private Sub Command2_Click()
Call SetHook(Text2.hwnd, False)
End Sub

Private Sub Command3_Click()
Call SetHook(Text2.hwnd, False)
End
End Sub

К сожалению я сам не до конца понял работу этого примера. Что такое "AddressOf" и почему при повторном нажатии кнопки "Hook" выскакивает сообщение "Нехватка места в стёке" и VB вылетает. Но ты же умный дядя, не будешь два раза подряд вызывать меню, не очишая его из памяти.

Ответить

Страница: 1 |

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



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