Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как получить значение свойства объекта типа Label? / 25 сообщений из 28, страница 1 из 2
28.11.2004, 20:52:27
    #32802942
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Как получить значение свойства объекта типа Label при щелчке на нем? При чем варианты с записью кода в событие контрола не подхадят. То есть интересует что-то вроде Screen.ActiveControl.Свойство
...
Рейтинг: 0 / 0
28.11.2004, 21:16:58
    #32802947
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
А где должен быть код, выполняемый по щелчку мыши?
В функции указанной в свойстве контрола On Mouse Down?
...
Рейтинг: 0 / 0
28.11.2004, 21:47:31
    #32802952
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Label никогда не будет ActiveControl. Обращаться к нему все равно надо по имени, никакие Me или This не помогут.

И событие все равно надо как-то обработать. Хоть тушкой, хоть чучелом.
...
Рейтинг: 0 / 0
28.11.2004, 22:47:03
    #32802972
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Владимир СанычLabel никогда не будет ActiveControl. Обращаться к нему все равно надо по имени, никакие Me или This не помогут.

И событие все равно надо как-то обработать. Хоть тушкой, хоть чучелом.
а с помощью API никак?
...
Рейтинг: 0 / 0
28.11.2004, 22:49:49
    #32802973
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Serge GavrilovА где должен быть код, выполняемый по щелчку мыши?
В функции указанной в свойстве контрола On Mouse Down?
код в модуле
На всех формах через контекстное меню выполняется общий для всех код из модуля
И как бы тут к этому контролу из контекстного меню подлезть? :)
...
Рейтинг: 0 / 0
28.11.2004, 22:53:14
    #32802974
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
можно задать окну формы через SetCapture перехват нажатий мыши. По координатам нажатия и пербором контролов определять есть ли контрол под мышью ...
...
Рейтинг: 0 / 0
29.11.2004, 10:13:43
    #32803255
lobodava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Создать свойство у формы, которое будет хранить название только что нажатого Label'a.
На клик по Label'у присваивать этому свойство значение.
Определять какой кнопкой на мыше щелкнули и вызывать контекстное меню методом ShowUp.
Чтобы не писать в каждый Label код, надо написать класс с обработкой события для Label'a и на OnLoad формы перебрать все Label'ы и заполнить коллекцию...

Вот здесь в самом низу в Dispatch.zip, есть форма frmSchedule - там реализован описанный подход.
...
Рейтинг: 0 / 0
29.11.2004, 21:11:49
    #32804831
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Serge Gavrilovможно задать окну формы через SetCapture перехват нажатий мыши. По координатам нажатия и пербором контролов определять есть ли контрол под мышью ...
Чуть-чуть поподробнее, пожалуйста, несчет связи координат нажатия и координат контрола. Какие функции здесь использовать?

lobodavaСоздать свойство у формы, которое будет хранить название только что нажатого Label'a.
На клик по Label'у присваивать этому свойство значение.
Определять какой кнопкой на мыше щелкнули и вызывать контекстное меню методом ShowUp.
Чтобы не писать в каждый Label код, надо написать класс с обработкой события для Label'a и на OnLoad формы перебрать все Label'ы и заполнить коллекцию...

Вот здесь в самом низу в Dispatch.zip, есть форма frmSchedule - там реализован описанный подход.
Интересные примеры. Спасибо.
...
Рейтинг: 0 / 0
30.11.2004, 12:00:46
    #32805424
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Me.Requery
...
Рейтинг: 0 / 0
30.11.2004, 16:42:56
    #32806191
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Me.Requery
...
Рейтинг: 0 / 0
30.11.2004, 18:16:04
    #32806478
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
[quot Vsevolod V]Чуть-чуть поподробнее, пожалуйста, несчет связи координат нажатия и координат контрола. Какие функции здесь использовать?

Чтобы сказать что-то подробнее, мне надо самому попробовать. Но, к сожалению, я не могу это сделать пока.

Еще можно попробовать перехватывать сообщения формы. Но для Access форм я это не делал.
...
Рейтинг: 0 / 0
30.11.2004, 19:35:32
    #32806557
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Я уже всю книжку по API измусолил. Есть там функции для определения координат контрола, но всем им нужно Form!Control. hWnd , а в VBA такого не предусмотренно :(
...
Рейтинг: 0 / 0
30.11.2004, 22:20:05
    #32806690
lobodava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
А что хотим в итоге сделать?
Может, если задачу поширее раскрыть, тогда и варианты решения найдутся?
...
Рейтинг: 0 / 0
30.11.2004, 22:42:20
    #32806696
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Идея в общем такая:
Делаю справочную систему. Пользователь нажимает правой кнопкой мыши и появляется контекстное меню ("Что это такое?", "Настройка"). Тыкать юэер хочет в любое место на экране (там, где есть какой-либо контрол) и просматривать справку. То есть для отображения справки нужно брать HelpContextID у соответствующего контрола. С обычным полем все просто - Screen.ActiveControl.HelpContextID и вперед! А вот что с лэйблом делать?
...
Рейтинг: 0 / 0
30.11.2004, 22:44:22
    #32806697
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
В каких единицах функция GetCursorPos возвращает координаты курсора? И как их сопоставить с Control.Left, Control.Width и т.д.???
...
Рейтинг: 0 / 0
01.12.2004, 04:27:47
    #32806758
Евгений1234-5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
GetCursorPos - в пикселях.
А вообще по Me.hwnd можно вычислить положение формы на экране (это обязательно), а далее твой лэйбел скорее всегда на одном месте находится и заранее зная его координаты, но в пикселях ты сможешь знать на нём мышь или нет.
Сам так делал.
Описываю конечно упрощённо.
...
Рейтинг: 0 / 0
01.12.2004, 04:31:47
    #32806759
Евгений1234-5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
По моему методу все равно придется ловить по какому либо событию.
Не про ще ли как lobodava предлагал(а)(прошу прощения)
...
Рейтинг: 0 / 0
01.12.2004, 11:55:47
    #32807271
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Евгений1234-5По моему методу все равно придется ловить по какому либо событию.
Не проще ли как lobodava предлагал(а)(прошу прощения)?
1. Событие - щелчок правой кнопкой мыши в любой области активной формы
2. Честоно говоря с примером lobodava пока еще не до конца разобрался, т.к. не имею практического опыта в разработке классов. Но видимо решение можно получить именно этим путем. Хотя я считаю, что можно найти и более оптимальное решение путем обработки координат курсора мыши и соответствующих объектов.
...
Рейтинг: 0 / 0
01.12.2004, 15:23:23
    #32807832
lobodava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Класс может быть такой (т.е. этот код надо сохранить именно в модуле класса) :
Код: plaintext
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.
'Class name: clsCurrentLabel'

Option Compare Database
Option Explicit

Private WithEvents mlbl As Label
Private mfrm As Form
Private mcmb As CommandBar

Public Property Get Label() As Label
    Set Label = mlbl
End Property

Public Property Set Label(lblNewLabel As Label)
    Set mlbl = lblNewLabel
    mlbl.OnMouseDown = "[Event Procedure]"
    Set mfrm = mlbl.Parent
End Property


Public Property Get CommandBar() As CommandBar
    Set CommandBar = mcmb
End Property

Public Property Set CommandBar(cmbNewCommandBar As CommandBar)
    Set mcmb = cmbNewCommandBar
End Property


Private Sub mlblLabel_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    mfrm.CurrentLabelName = mlbl.Name    
    If Button = acRightButton Then mcmb.ShowPopup
End Sub

в форме надо создать новое свойство и коллекцию:
Код: plaintext
1.
Public CurrentLabelName As String
Private colсlbls As New Collection
и на событие Form_Load написать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Private Sub Form_Load()
    Dim clbl As clsCurrentLabel

    Set clbl = New clsCurrentLabel
    Set clbl.Label = Me.lblLabel  '<-- это Label на форме'
    Set clbl.CommandBar = Application.CommandBars("cmbMyCommandBar") '<-- а это всплывающее меню'
    colclbls.Add clbl, clbl.Label.Name
    Set clbl = Nothing
End Sub
Если Label'ов много, то последие пять сток надо повторить в цикле.

Да! Не забыть включить ссылку на библиотеку Microsoft Office.
...
Рейтинг: 0 / 0
01.12.2004, 15:32:17
    #32807859
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
lobodava, спасибо.
Да, дествительно это будет работать, но это довольно сложный путь, т.к. форм очень много.
Все же хотелось бы найти решение через использование координат.
...
Рейтинг: 0 / 0
01.12.2004, 15:49:26
    #32807906
lobodava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Ну... как скажете. Всегда, пожалуйста.
...
Рейтинг: 0 / 0
01.12.2004, 15:50:04
    #32807909
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
lobodavaНу... как скажете. Всегда, пожалуйста.
Вы так добры :)
...
Рейтинг: 0 / 0
02.12.2004, 04:46:47
    #32808634
Евгений1234-5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
авторДа, дествительно это будет работать, но это довольно сложный путь, т.к. форм очень много.
Все же хотелось бы найти решение через использование координат.
В обед попробую написать.
...
Рейтинг: 0 / 0
02.12.2004, 08:44:26
    #32808768
Евгений1234-5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Написать что-то толковое нет времени. В первых двух полях координаты формы, а в двух других мыши. Зная заранее координаты контролов можно их определять.
...
Рейтинг: 0 / 0
06.12.2004, 20:55:48
    #32815356
Vsevolod V
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как получить значение свойства объекта типа Label?
Евгений1234-5
Спасибо за пример.
---
Проблема именно в том, что я не знаю как соотнести координаты мыши с координатами контрола. Например, в Вашем примере Поле13.Left = 680, а Х-координата мыши в этом месте = 242
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как получить значение свойства объекта типа Label? / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]