|
|
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
В программе запускается форма поиска, из неё запускается форма с гридом, из этой формы с гридом для поиска по кнопке или горячим клавишам снова вызывается форма поиска, которая опять же находит нужное значение и после этого на форме с гридом кнопка поиска не производит никаких действий, как впрочем и кнопка выхода из формы, работает только кнопка вызывающая другую процедуру. Что может теряться в данном случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2007, 11:04 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Сейчас мы помедитируем, наш ведущий программист впадет в транс и попробует угадать текст ошибки и когда она у вас происходит." (с) www.bash.org ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2007, 11:11 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ, буду медитировать сама!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2007, 12:17 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Надо не медитировать, а давать информацию в виде кусков кода, сообщений об ошибках и т.п. Телепатов, которые могли бы заглянуть в ваш монитор, тут нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2007, 12:22 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
В самом деле, формулировка вопроса, достойная монологов Михаила Задорнова. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2007, 13:17 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Медитация не удается. инит формы поиска parameters toBaseForm,pl Thisform.baseform=toBaseForm thisform.combo1.value='По фамилии' priz_q=.t. public pl1 pl1 = 0 pl1=pl кнопка поиска на ней IF vartype(Thisform.baseform) != 'O' DO form pl_ruch noshow thisform.baseform = pl_ruch ENDIF SELECT uchet SET index to _fam SEEK (alltrim(m.fam)) SET near on IF found() ELSE go top ENDIF thisform.Release() thisform.hide() thisform.baseform.show кнопка поиска на форме с гридом do form find with thisform,pl1 на форме с гридом рефреш thisform.grid1.setfocus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 10:25 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
да поможет вам thisform.baseform.show(2), если модальность этой формы не так важна, но только установите её свойство AllwaysOnTop в .Т. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 11:43 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Пропиши в методе Click кнопки поиска на форме с гридом первой командой что-то вроде: MessageBox ('Событие Click возбудилось.') Если этого сообщения не увидишь при повторном нажатии, значит, это глюк FoxPro. Я его встречал, так и не обошёл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 11:45 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Рома Б.Пропиши в методе Click кнопки поиска на форме с гридом первой командой что-то вроде: MessageBox ('Событие Click возбудилось.') Если этого сообщения не увидишь при повторном нажатии, значит, это глюк FoxPro. Я его встречал, так и не обошёл. Так вот именно что эта кнопка просто нажимается и ничего не делает как будто там ничего нет, как впрочем и кнопка выхода где стоит просто thisform.release, а работает только одна кнопка из 3-х, где вызывается одна процедура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 11:55 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
А формы модальные наверно? У форм WindowType что стоит? Похожие проблемы могут быть при передаче фокуса между модальными формами. Попробовать убрать это: Larkin на форме с гридом рефреш thisform.grid1.setfocus У немодальных форм такая проблема может быть (форма не закрывается и не на что не реагирует) если где-то сохранена ссылка на любой контрол формы (кнопку, текстбокс и т.п.) Но в приведенном коде ничего похожего нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 13:16 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Формы модальные, по другому вообще не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 13:18 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
рефреш убрала, реакция не изменилась, даже после того как сделала чтобы форма с гридом убиралась при запуске формы поиска - реакция нисколько не изменилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 13:27 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Дима Т правильно указал возможные причины. Дело в том, что в Visual FoxPro особый подход для работы с переменными объектами. В таких языках, например, как C++ или Паскаль, различают переменные типа объект и переменные типа ссылка-на-объект. Переменная типа объект - это по сути участок памяти под экземпляр класса, возможно, огромный, если класс сложный. Ссылка на объект - это всегда 4 байта (или немного больше в новых системах), в которых хранится лишь АДРЕС экземпляра-объекта. В Visual FoxPro существуют только ссылки на объект. Например, переменная объектного типа loForm - это 4 байта с адресом. Когда в C++ или Паскале уничтожается объект с помощью одной из ссылок на него командами delete Object1 или Dispose (Object1) в C++ и Паскале соответственно, то он (объект, т.е. участок памяти под экземпляр класса) СРАЗУ ЖЕ высвобождается. Если на этот объект существовали ещё ссылки, то они становятся некорректными (что ведёт часто к ошибкам обращения к памяти), и их желательно принудительно устанавливать в nil или null (C++ и Паскаль) или не использовать больше. В Visual FoxPro всё проще и одновременно опаснее. Команды типа RELEASE вовсе не обязательно высвободят участок памяти под объект, они лишь уничтожат очередную ссылку на него. До тех пор, пока на объект существует хотя бы одна ссылка, объект физически уничтожен не будет. Возможно, здесь мы имеем косвенный эффект такой организации работы с переменными объектами в Visual FoxPro. Надо почаще вызывать команды вида: RELEASE goФорма RELEASE goЕщёОднаСсылкаНаФорму ThisForm.ОчереднаяСсылкаНаФорму = NULL ThisForm.RemoveProperty ('СамаяПоследняяСсылкаНаЭтуЖеФорму') То же можно делать с членами формы. (Логика такая: как можно уничтожить форму, если на её член есть ссылка?) В-общем, надо экспериментировать, если есть желание и время. Но это всё домыслы. Возможно, это просто откровенный глюк FoxPro. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 14:22 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Думаю, что вся загвоздка в baseform. Я его создавала из меню form->newproperty, дала название и все. Он присутствует в свойствах формы, но его значение none. Это правильно или нет? Тем более что если на него лишний раз сослаться, то на него ругается программа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 14:34 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
LarkinЭто правильно или нет? Да чёрт его знает :) Разумеется, это типовое использование свойств формы. Ну, попробуй выдать команду: ThisForm.RemoveProperty ('baseform') перед тем, как её (форму) release'ить. Тут можно денька 3 просидеть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 14:45 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Все попробовала!!! Что можно и не можно. Не думаю что это может быть глюк 6-го фокса, но выход из проблемы не вижу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 14:58 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
LarkinНе думаю что это может быть глюк 6-го фокса Не Боги горшки обжигают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 15:29 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Ладно, сделала. Не так как хотелось бы, но тем не менее то что нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 15:42 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Рома Б.... До тех пор, пока на объект существует хотя бы одна ссылка, объект физически уничтожен не будет. Возможно, здесь мы имеем косвенный эффект такой организации работы с переменными объектами в Visual FoxPro. ... Ну ты и развернул теорию :) Я про ссылки на контролы формы писал. Просто недавно сам сталкивался. Ссылки на форму фокс сам корректно очищает когда форма закрывается и проблем не возникает, а вот если куда передали thisform.text1 например, а там ее приняли и сохранили, то форма будет висеть и не закроется пока там ее не очистят. LarkinФормы модальные, по другому вообще не получается. Используемый подход взаимодействия между формами рассчитан на немодальные формы. Все побочные явления вылезли сразу. С модальными все гораздо проще. Но подругому. Модальная форма может еще ответ возвращать (как функция), этим и надо пользоваться. И сам поиск в форму с гридом а форма поиска только ввод значения для поиска. Примерно так Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 16:38 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Опечатка: Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 16:40 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
и тут: Код: plaintext 1. 2. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 16:42 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
Дима ТНу ты и развернул теорию :) Ничё, полезно всё равно. Выясняется, что многие этого не знают. Насчёт возвращаемого значения: Лично я всегда использую свойство Tag формы и возвращаю не собственно данные (коих может быть много, вообще-то), а лишь результат отработки формы, свидетельствующий о том, передумал ли пользователь (нажал отмену), или всё в штатном порядке, или ещё какие-то варианты. А для возвращаемых значений использую глобальные переменные с особым префиксом par_, которые сразу же уничтожаю по получении их родительской формой. Не Вижу в таком подходе использования глобальных переменных ничего постыдного за неимением более элегантного. (Более элегантный - это возврат переменных по ссылкам, но по каким?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2007, 17:10 |
|
||
|
Опять про форму!
|
|||
|---|---|---|---|
|
#18+
По моему проще из модальной формы возвращать значение её свойства напрмер так: Нам нужно запросить значение формой frmFindDlg для нее добавляем свойство FindPar и его привязываем к controlsource'у textbox,combo или чего нибудь еще в unload приписываем: return this.FindPar вызов выглятит где-то так: do form frmFindDlg with <список параметров> to <имя переменной для хранения данных из формы frmFindDlg> if vartype(<имя этой же переменной>)!='L' <команды обработки поиска> endif При этом если пользователь в форме frmFindDlg нажимает отмена, то в метод click кнопки отмена пишем: thisform.FindPar=.F. thisform.release() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2007, 08:04 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=35007895&tid=1588407]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 371ms |

| 0 / 0 |
