Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
1502 / 403 / 40
Регистрация: 10.04.2009
Сообщений: 7,260
1

В форме при активации курсор посредине, убрал курсор с формы она должна закрыться

05.02.2012, 16:26. Показов 1629. Ответов 9
Метки нет (Все метки)

Здравствуйте, чем вспоминать дни прошедшие..., есть форма, (она из Ворда), по задумке - она открылась надо чтобы курсор был посредине формы и если убрать с формы курсор она должна закрыться
Было сделано давно, сейчас фиг что пойму
Как сделать?

Добавлено через 6 минут
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
по задумке - она открылась надо чтобы курсор был посредине формы
всё правильно у меня так:

Visual Basic
1
2
3
4
5
6
7
8
    Dim X As Long
    X = Me.Width / 2
 
    Dim Y As Long
    Y = Me.Height / 2
 
    'позиция курсора по центру формы
    SetCursorPos X, Y
К высчитанному иксу и игреку надо что-то добавить, что??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2012, 16:26
Ответы с готовыми решениями:

После активации листа курсор автоматически установить на первую незащищенную ячейку
Доброго времени суток ! Вопрос такого плана: есть листы с включеной защитой, на листах ячейки,...

Спрятать курсор при активации формы (HideCaret)
Добрый день! Пожалуйста, помогите решить проблему: есть Edit (точнее компонент на основе Edit'а)....

Как создать свой курсор (свое изображение) в главной форме (Form1) при загрузке данной формы?
Как создать свой курсор (свое изображение) в главной форме (Form1) при загрузке данной формы? ...

При наведении курсора на шапку она светится в том месте где курсор
На одном сайте шапка очень интерестная при наведении курсора на неё она светится в том месте где...

9
здесь больше нет...
3357 / 1669 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
05.02.2012, 19:15 2
посмотри книгу
Вложения
Тип файла: xls Книга2.xls (41.0 Кб, 16 просмотров)
1
1502 / 403 / 40
Регистрация: 10.04.2009
Сообщений: 7,260
06.02.2012, 20:39  [ТС] 3
одно сделал:
Visual Basic
1
2
3
4
5
6
7
8
 
   'расстояние формы по центру экрана относительно Лево-Право
    Me.Left = (Application.UsableWidth - Me.Width) \ 2
    'расстояние формы по центру экрана относительно Верх-Низ
    Me.Top = (Application.UsableHeight - Me.Height) \ 2
     
    'позиция курсора по центру формы
    SetCursorPos (Me.Left + Width / 2) * 4 / 3, (Me.Top + Height / 2) * 4 / 3
это:
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
если убрать с формы курсор она должна закрыться
зависло
0
здесь больше нет...
3357 / 1669 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
06.02.2012, 21:31 4
в маус_мув пропиши - если X (Y) = 0 или = width (height), то unload me
1
Заблокирован
07.02.2012, 08:13 5
Цитата Сообщение от аналитика Посмотреть сообщение
в маус_мув пропиши - если X (Y) = 0 или = width (height), то unload me
Не совсем так, но примерно -
Visual Basic
1
2
3
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If (X < Width / 100) Or (Y < Height / 100) Or (X > InsideWidth * 99 / 100) Or (Y > InsideHeight * 99 / 100) Then Unload Me
End Sub
И всё равно мышкой резко дёргать не стоит
2
1502 / 403 / 40
Регистрация: 10.04.2009
Сообщений: 7,260
07.02.2012, 19:02  [ТС] 6
Цитата Сообщение от аналитика Посмотреть сообщение
в маус_мув пропиши - если X (Y) = 0 или = width (height), то unload me
хороший перевод!

Добавлено через 7 часов 1 минуту
Цитата Сообщение от Апострофф Посмотреть сообщение
И всё равно мышкой резко дёргать не стоит
есть другие варианты?? этот не идеален

Добавлено через 4 минуты
код то у меня есть и он ранее работал, не вспомню куда его помещать? и всё в нём впорядке ли?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Option Explicit
 
Private Declare Function GetWindowRect Lib "user32.dll" _
                                       (ByVal hWnd As Long, lpRect As RECT) As Long
Public Declare Function SetTimer Lib "user32" _
                                 (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" _
                                  (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Public Declare Function GetCursorPos Lib "user32" _
                                     (lpPoint As POINTAPI) As Long
 
Public Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
 
Public Type POINTAPI
    x As Long
    Y As Long
End Type
 
Public TimerID As Long, hForm As Long, pt As POINTAPI
 
Public Sub prcTimer(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long)
 
    Dim rct As RECT
    rct.Left = Календарь.Left
    rct.Top = Календарь.Top
    rct.Right = rct.Left + Календарь.Width
    rct.Bottom = rct.Top + Календарь.Height
    GetCursorPos pt: GetWindowRect hForm, rct
    If pt.x < rct.Left Or pt.x > rct.Right Or pt.Y < rct.Top Or pt.Y > rct.Bottom Then _
       Unload Календарь
 
End Sub
Гляньте если не затруднит
1
Заблокирован
07.02.2012, 21:06 7
Модуль
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Option Explicit
   
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowRect Lib "user32.dll" (ByVal HWnd As Long, lpRect As RECT) As Long
Public Declare Function SetTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal HWnd As Long, ByVal nIDEvent As Long) As Long
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
 
Public Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
 
Public Type POINTAPI
    x As Long
    y As Long
End Type
 
Public TimerID As Long, m_HWnd As Long
 
Public Sub prcTimer(ByVal HWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long)
    Dim rct As RECT, pt As POINTAPI
    With UserForm1
      rct.Left = .Left
      rct.Top = .Top
      rct.Right = rct.Left + .Width
      rct.Bottom = rct.Top + .Height
      GetCursorPos pt
      GetWindowRect m_HWnd, rct
    End With
    If pt.x < rct.Left Or pt.x > rct.Right Or pt.y < rct.Top Or pt.y > rct.Bottom Then Unload UserForm1
End Sub
Форма
Visual Basic
1
2
3
4
5
6
7
8
9
10
Option Explicit
 
Private Sub UserForm_Activate()
  m_HWnd = FindWindow("ThunderDFrame", Me.Caption)
  TimerID = SetTimer(&H0, &H0, 100, AddressOf prcTimer)
End Sub
 
Private Sub UserForm_Terminate()
KillTimer &H0, TimerID
End Sub
2
здесь больше нет...
3357 / 1669 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
07.02.2012, 21:53 8
можно удалить строки 26-29 (наполнение структуры Rect из геометрии формы), а соответственно и 25-ю с 32-й, лишнее это...
1
Апострофф
08.02.2012, 06:53
  #9

Не по теме:

:-[В голове моей опилки...
Срисовал у Ципиховича не задумавшись:sorry:

0
1502 / 403 / 40
Регистрация: 10.04.2009
Сообщений: 7,260
08.02.2012, 21:22  [ТС] 10
идёт обрушение Ворда и это мне знакомо, помню когда тот код налаживал вначале тоже было обрушение, потом что-то изменил
??? и пошло
рушится Ворд так что не понять в чём причина
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.02.2012, 21:22

В форме при наведении курсора курсор виснет
Осваиваю винформс, пишу простейшую прогу &quot;записная книжка&quot;. В форме (во второй форме &quot;добавить...

Курсор при создании формы
На форме есть кнопка и эдит. Как при создании формы сделать так, что бы выделение (курсор ввода)...

Поместить курсор в TextBox при загрузке формы
Доброе время суток всемю подскажите пожалуйста, как в форме сделать так, чтобы при ее открытии...

При Открытии Формы Курсор Становится Не На Первый Элемент
Здравствуйте, подскажите, пжлста: при открытии формы курсор становится не на то поле, которое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru