powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Class
5 сообщений из 5, страница 1 из 1
Class
    #33242151
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как внутри класса можно прописать строку деуствия: щелчок произошел на форме, а не в классе?
...
Рейтинг: 0 / 0
Class
    #33242307
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Недоходящий!

1) Так делать обычно НЕ следует. Всё-же смысл класса - в том что он самодостаточен. Обычно в таком случае организуют обратную связь - т.е. ФОРМА может дёргать какой-то метод расположенного на ей объекта (если таковой метод есть конечно) при наступлении определённого события - например клик мышой...
2) В VFP8 и старше - через BindEvents(), до того - через механизм хуков. Простейший хук - как пример тебе - делали для отлова _SCREEN.Resize. Поищи и всё найдёшь (если тут поиск не фурычит - ищи на forum.foxclub.ru)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Class
    #33242999
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пожалуйста помогите. Незнаю что делать.
Проблема у меня такова: класс над которым я мучаюсь - другого вида ComboBox. В нем при ввод происходит инкрементарный поиск. Появляется лист с строками начинающиеся на букву А (допустим). У меня в коде прописано так

THIS.mInitList() && создание листбокса через CreateObject
THIS.oText.SetFocus() && передача назад фокуса на текствокс для продолжения ввода остальных букв
THIS.value=THIS.oText.value
THIS.oWin.oList.MouseEnter() && для вносения в текстбокс значения если кликнуть по списку. Если этой строки не будет клик на листе не работает.

Проблема такова, что после этого кода если я кликаю за листом на форме, лист не исчезает!!!. Что мне делать?
...
Рейтинг: 0 / 0
Class
    #33244099
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я обнаружил у себя сейчас, что, сначала создается форма, в нее добавляется листбокс, потом фокус падает на текстбокс. Так вот, если по созданной форме после всего это щелкать или что-то еще делать, то она исчезает, но если с ней ничего неделать и оставить как есть, НО если щелкать мышью кде-то в другом месте, она не исчезает. Что мне делать?
Вот код класса:
DEFINE CLASS oFormList AS FORM
AlwaysOnTop=.T.
BorderStyle=1
Caption=""
Desktop=.T.
TitleBar=0
ShowWindow=2
ShowInTaskBar=.F.
oParent=.NULL.
lClick=.F.
ADD OBJECT oList AS ListBox ;
WITH ;
Top=0, ;
Left=0, ;
BoundTo=.T., ;
BorderColor=RGB(255,255,255), ;
Sorted=.T., ;
ItemTips=.T., ;
SpecialEffect=1

*********************

PROCEDURE Release()
RELEASE WINDOWS (THIS.Name)
endPROC
*********************
PROCEDURE QueryunLoad()
THIS.oParent.lRelease=.F.
endPROC
*********************
PROCEDURE Resize()
THIS.oList.Height=THIS.Height
THIS.oList.Width=THIS.Width
endPROC
*********************
PROCEDURE Top_assign()
LParameter lnNewTop
LOCAL lnSysmetric
lnSysmetric=lnNewTop+THIS.Height
IF lnSysmetric>SYSMETRIC(22)
lnNewTop=lnNewTop-THIS.oParent.Height-THIS.Height-4
endIF
THIS.Top=lnNewTop
endPROC
*********************
PROCEDURE oList.MouseEnter()
LPARAMETERS nButton, nShift, nXCoord, nYCoord
THISFORM.oParent.lRelease=.T.
THISFORM.lClick=.F.
endPROC
PROCEDURE oList.MouseLeave()
LPARAMETERS nButton, nShift, nXCoord, nYCoord
THISFORM.oParent.lRelease=.F.
THISFORM.lClick=.T.
endPROC
*********************
PROCEDURE oList.SetFocus()
THISFORM.oParent.lRelease=.T.
THISFORM.lClick=.T.
endPROC
*********************
PROCEDURE oList.LostFocus()
THISFORM.Release()
endPROC
*********************
PROCEDURE oList.Click()
IF NOT THISFORM.lClick
LOCAL lcRowSource
lcRowSource=THIS.RowSource
THISFORM.oParent.oText.Value=&lcRowSource
THISFORM.Release()
**
KEYBOARD '{TAB}'
**
endIF

endPROC
*********************
PROCEDURE oList.KeyPress()
LPARAMETERS nKeyCode, nShiftAltCtrl
THISFORM.lClick=.T.
IF nKeyCode=13 OR nKeyCode=27
THISFORM.lClick=.F.
THIS.Click()
IF nKeyCode=27
THISFORM.oParent.oText.value=""
THISFORM.oParent.oclick.visible=.t.
endif
endIF
endPROC
*****************************************************
endDEFINE
...
Рейтинг: 0 / 0
Class
    #33246821
Недоходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я непонял как работает этот механизм хуков. Может подскажете как его использовать?
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Class
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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