
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
18.09.2007, 20:39
|
|||
|---|---|---|---|
|
|||
bindevent-получение результата |
|||
|
#18+
Вот bindevent(куда,куда_метод,откуда,откуда_метод) В откуда_метод в коде RETURN может возвращать истину или ложь. Код куда_метод-пуст. И вот в приложении: if куда.куда_метод(параметры) &&*** ... else ... endif куда.куда_метод(параметры) всегда дает истину, хотя пошагово проходит строчку RETURN .F. Если в куда_метод внести какой-либо код, то код откуда_метод вообще не выполняется. Игрался с пятым параметром bindevent, но не прояснилось. Как же в описанной конструкции получать настоящее логическое значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.09.2007, 21:48
|
|||
|---|---|---|---|
|
|||
bindevent-получение результата |
|||
|
#18+
при чем здесь рез-т и подписка на событие? подписка на событие дает возмоность выполнить какой-то метод в случае наступлении опред-го события рез-т вып-я как Вы собрались считывать??? пятый параметр влияет на очередность вып-я метода до или после наст-я события если так хочется извернуться, то у объекта заведите ассайн св-во-флаг, а в ассайн методе этого св-ва уже разбирайте знач-е этого св-ва если нужен пример, то покажу еще вопрос закралось сомнение так уж Вам необходима подписка на соб-я??? объясните задачу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.09.2007, 21:55
|
|||
|---|---|---|---|
bindevent-получение результата |
|||
|
#18+
Не вижу описанной проблемы Код: 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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. Меняя возвращаемое значение в Command1.Click() я получаю ожидаемое значение в Command2.Click() и при этом срабатывает связанный метод Form.BindMethod(). Возможно, у Вас проблема именно в связанных методах? О каких методах (событиях) идет речь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.09.2007, 22:04
|
|||
|---|---|---|---|
bindevent-получение результата |
|||
|
#18+
пришелмимо пятый параметр влияет на очередность вып-я метода до или после наст-я события Уточню. А также на сам факт выполнения события при его программном вызове (как метода). Если в приведенном примере в BindEvent() поставить флаг (5 параметр) в значении 2 или 3, то связанный метод не будет выполняться при нажатии на Command2, но выполнится при нажатии на Command1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.09.2007, 15:32
|
|||
|---|---|---|---|
|
|||
bindevent-получение результата |
|||
|
#18+
Извините великодушно. Времени на получение ответа на вопрос несколько дней назад оказалось слишком мало (уезжал из города). Теперь покажу подробней, что у меня не получалось. Нужно по форме кликнуть один раз и получится "ЕС", а нужно "НОУ". Почему так? public goForm goForm = CreateObject("form1") goForm.show() DEFINE CLASS cmdObrazec AS commandbutton Caption = "Obrazec" Name = "cmdObrazec" PROCEDURE obrazec RETURN .f. ENDPROC ENDDEFINE DEFINE CLASS cmdRealy AS commandbutton Caption = "Realy" Name = "cmdRealy" PROCEDURE kak_est ENDPROC ENDDEFINE DEFINE CLASS form1 AS form DoCreate = .T. Caption = "Form1" Name = "Form1" ADD OBJECT cmdObrazec1 AS cmdObrazec WITH ; Top = 48, ; Left = 108, ; Height = 27, ; Width = 84 ADD OBJECT cmdRealy1 AS cmdRealy WITH ; Top = 144, ; Left = 108, ; Height = 27, ; Width = 84 PROCEDURE Init BindEvent(ThisForm.cmdRealy1,"kak_est",ThisForm.cmdObrazec1,"obrazec") ENDPROC PROCEDURE Click if ThisForm.cmdRealy1.kak_est() ?'YES' else ?'NO' endif ENDPROC ENDDEFINE По ветке в дебаггере идет на RETURN .F., а результат .T., как исправить, чтоб было .f.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.09.2007, 16:29
|
|||
|---|---|---|---|
|
|||
bindevent-получение результата |
|||
|
#18+
дурдом kak_est() из нее вернется рез-т Вы же указываете if ThisForm.cmdRealy1.kak_est() почему Вы считаете, что obrazec должен что-то возвращать?? и возвращать именно в рез-т вызова if ThisForm.cmdRealy1.kak_est() заведите св-во и передергивайте ему значение и вообще что-то странное на пустом месте я не понимаю вообще к чему эти танцы в чем состоит Ваша задача?? объясните суть задачи в фокспро есть такое понятие - наследование ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.09.2007, 16:49
|
|||
|---|---|---|---|
|
|||
bindevent-получение результата |
|||
|
#18+
Но в примере ВладимираМ похожее работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.09.2007, 17:41
|
|||
|---|---|---|---|
bindevent-получение результата |
|||
|
#18+
AMorkovkaНо в примере ВладимираМ похожее работает. События, связанные через BindEvents() вызываются не один-ВМЕСТО-другого (или один-ИЗ-другого), а один-ПОСЛЕ-другого. Т.е. когда в Вашем примере Вы пишите вызов ThisForm.cmdRealy1.kak_est(), то этот метод успешно отрабатывает и возвращает некое значение. Именно это значение и обрабатывает IF. Поскольку в этом методе нет явной команды RETURN, то, по умолчанию, это означает RETURN .T. ПОСЛЕ выполнения этого метода запускается связанный с ним метод ThisForm.cmdObrazec1.obrazec(). Но его возвращаемое значение принять уже некому. Оно уходит "в никуда". Организовать обмен информацией между связанными методами можно только через некие внешние (по отношению к ним обоим) объекты. Например, свойства формы. Т.е. метод ThisForm.cmdObrazec1.obrazec не просто возвращает значение "в никуда", а присваивает возвращаемое значение некоему свойству формы. А в условии проверки делается запуск основного метода, после чего проверяется значение этого свойства формы. Не то, что вернул метод ThisForm.cmdRealy1.kak_est(), а значение свойства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.09.2007, 18:23
|
|||
|---|---|---|---|
|
|||
bindevent-получение результата |
|||
|
#18+
А так работает вроде правильно: public goForm goForm = CreateObject("form1") goForm.show() DEFINE CLASS cmdObrazec AS commandbutton Caption = "Obrazec" Name = "cmdObrazec" PROCEDURE obrazec(aa as Boolean) aa=.f. RETURN aa ENDPROC ENDDEFINE DEFINE CLASS cmdRealy AS commandbutton Caption = "Realy" Name = "cmdRealy" PROCEDURE kak_est(aa as Boolean) RETURN aa ENDPROC ENDDEFINE DEFINE CLASS form1 AS form DoCreate = .T. Caption = "Form1" Name = "Form1" ADD OBJECT cmdObrazec1 AS cmdObrazec WITH ; Top = 48, ; Left = 108, ; Height = 27, ; Width = 84 ADD OBJECT cmdRealy1 AS cmdRealy WITH ; Top = 144, ; Left = 108, ; Height = 27, ; Width = 84 PROCEDURE Init aa=.t. BindEvent(ThisForm.cmdRealy1,"kak_est",ThisForm.cmdObrazec1,"obrazec") ENDPROC PROCEDURE Click if ThisForm.cmdRealy1.kak_est() ?'YES' else ?'NO' endif ENDPROC ENDDEFINE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.09.2007, 19:09
|
|||
|---|---|---|---|
|
|||
bindevent-получение результата |
|||
|
#18+
еще раз вопрос авторобъясните суть задачи для чего Вы это делаете и почему нужно именно подписаться на событие решением для того, что Вы написали явл-ся прямое написание кода в клике кнопки с вызовом клика др.кнопки во вторых Вам подсказали, что завести нужно св-во но никак не объявлять переменную перед тем, чтобы пользоваться подпиской нужно хотя-бы немного что-то в ООП понять ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=41&mobile=1&tid=1588739]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
8ms |
get forum data: |
4ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 399ms |

| 0 / 0 |
