|
|
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Рылась-рылась, не нашла, как сделать, чтоб был единственный экземпляр формы. =( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 16:58 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Что-то я не вьеду в вопрос, а можна поподробнее Истина где-то там... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 22:15 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Если вопрос стоит в том, чтобы запретить повторный запуск одной и той же формы, то простейший вариант: ПЕРЕД запуском формы примерно такой код Код: plaintext 1. 2. 3. Подробнее здесь Как проверить факт существования переменной памяти, поля таблицы, метода формы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2005, 23:33 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Почему то данный код не срабатывает. Форма загружается повторно. Name формы = 'myform'. В чем ошибка %( PROCEDURE IconClickEvent IF TYPE("_VFP.Forms('myform')")="U" DO FORM form_hi ENDIF ENDPROC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 14:47 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#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. 48. 49. авторство не мое но непомню где брал. (наверно на foxclub) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 14:56 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
а еще и вот так попробовать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 14:59 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
S866а еще и вот так попробовать Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. таким образом вообще не запускается. А что же делать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 15:24 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Извиняюсь - там логически неправильно сделано НАДО ТАК: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. а вот если не срабатывает условие if alltrim(upper(_screen.forms(j).name))='APPEND621K' то надо глядеть почему оно не срабатывает - поэтому там и alltrim и upper стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 16:40 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Интересно, а почему IF TYPE("_VFP.Forms('MyForm')")="U" do form MyForm ENDIF не срабатывает. У меня TYPE("_VFP.Forms('MyForm')") всегда со значением "U" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 16:48 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Надеюсь, понимаешь разницу между значением свойства Name формы и именем файла SCX? То, что надо подставлять в выражение IF TYPE("_VFP.Forms('MyForm')")="U" это НЕ имя файла SCX. Это значение одного из реквизитов (свойств) формы. В данном случае реквизита Name. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 16:59 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
S866Извиняюсь - там логически неправильно сделано НАДО ТАК: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. а вот если не срабатывает условие if alltrim(upper(_screen.forms(j).name))='APPEND621K' то надо глядеть почему оно не срабатывает - поэтому там и alltrim и upper стоит. ХОТЯ ВАШ КОд сработал. Странно, вроде существенной разницы с предыдущим вашим примером не было, только else использовалось, за место флага ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 17:04 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
ВладимирМНадеюсь, понимаешь разницу между значением свойства Name формы и именем файла SCX? То, что надо подставлять в выражение IF TYPE("_VFP.Forms('MyForm')")="U" это НЕ имя файла SCX. Это значение одного из реквизитов (свойств) формы. В данном случае реквизита Name. Да конечно, я это понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 17:16 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Сделай тестовую формочку, запусти ее и в командном окне дай команду Код: plaintext Кстати, о какой версии FoxPro идет речь? А вот такая команда что вернет: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2006, 17:52 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
ВладимирМСделай тестовую формочку, запусти ее и в командном окне дай команду Код: plaintext Кстати, о какой версии FoxPro идет речь? А вот такая команда что вернет: Код: plaintext вы знаете, тестовая формочка работает правильно. Возвращается 0 и Form1. Но я нашла в чем проблема. В моей форме form.showwindow=2. Как только я меняю это свойство в тестовой форме, тогда при ее запуске ?TYPE("_VFP.Forms([Form1])") возвращает U. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 08:34 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
to Krushinskaya Olga Код: plaintext 1. 2. 3. 4. 5. 6. 7. тут elase do form выполнится _screen.formcount-1 раз (где formcount - кол-во откр. форм в момент начала цикла. т.к. он будет увеличиваться при каждом следующем do form). Для ВладимираМ - у меня правило одинаково обзывать name - формы и имя файла scx - во избежании путаницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 08:43 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
а у нас в квартире газ на взлете присваиваем форме уникальный дескриптор и делов - та ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 10:31 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
to alex11100 а как вы по дискриптору к форме обращаться будете? а по имени просто Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 11:34 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
это примерчик, но он не в тему а если вообчета оч.интересно, то могу заселить смуту в головы людские Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 11:55 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Я использую такой код для проверки повторного запуска формы. Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 13:02 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Если есть ссылка на объект - форму, то можно узнать имя ее .SCX - файла SYS(1271, oObjectFormName) Можно пройтись циклом по всей коллекции _SCREEN.Forms(), то можно легко найти требуемую форму и активизировать ее. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 14:23 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
А почему TYPE("_VFP.Forms([Form1])") все время равно U при Form1.showWindow=2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 14:42 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Krushinskaya OlgaА почему TYPE("_VFP.Forms([Form1])") все время равно U при Form1.showWindow=2? Дело в том, что указание в качестве параметра символьной строки - это НЕ документированная возможность. Т.е. в описании ясно указано, что параметром коллекции Forms() может быть только число. Как следствие, такое использование не всегда предсказуемо. "Правильным" является именно полный перебор вообще всей коллекции форм и поиск нужной формы по какому-либо уникальному реквизиту. Хотя, "еще более правильным" является создание собственного стэка запущенных форм. Т.е. где-то отдельно вести список тех форм, которые уже запущены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2006, 19:29 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Кстати, оказалось, что TYPE("_VFP.Forms([Form1])") равно "U" при Form1.showWindow=2 не все время, а только в том случае, если искомая форма не является активной на момент проверки. Т.е. в качестве _Screen.ActiveForm указана другая форма (или ничего не указано) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 10:25 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Да точно так и получается. Значит придется перебирать весь стэк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2006, 10:40 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
2 Krushinskaya Olga Я конечно извиняюсь - но почему вы массив Forms() Стэком обзываете . СТЭК насколько я помню это первый пришел - последний вышел. а в Forms() - произвольный доступ к любому элементу массива. или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 11:43 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Стеки бывают разные: FIFO (то, что вы описали), LIFO Дело в том, что в массив FORMS VFP помещает формы по очередности создания. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 11:56 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
S866Я конечно извиняюсь - но почему вы массив Forms() Стэком обзываете . СТЭК насколько я помню это первый пришел - последний вышел. а в Forms() - произвольный доступ к любому элементу массива. или я не прав? Потому что этот массив во многом похож на стек. При открытии новой формы она оказывается в массиве Forms() с индексом 1. Т.е. не последняя, а первая в списке. Происходит сдвиг всей "очереди". Правда, при определенных условиях, форма может поменять индекс в массиве Forms. Но это событие связано с явным перемещением форм на передний план. Не просто сделали активной форму, а именно программно вытащили наверх. По сути, изменили стек вызова. Соответственно, при закрытии форм содержимое массива Forms() постоянно сдвигается. На этой особенности построено большинство процедур автоматического закрытия всех открытых форм. В порядке их следования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 12:02 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Спасибо я вас Aleksey-K и ВладимирМ понял - принцип заполнения Forms() фоксом как у стэка - и он именно похож - основное отличие - у стэка доступ только к одному верхнему элементу СТЭКА а здесь а программиста произвольный доступ к Forms(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 15:36 |
|
||
|
экземпляры формы
|
|||
|---|---|---|---|
|
#18+
Hi Aleksey! Строго формально FIFO - т.е. "первый пришёл, первый ушёл" - это не стек а очередь, а вот LIFO это как раз стек - и s866 как раз в этом смысле говорил... _SCREEN.FORMS() - это не есть ни стек ни коллекция в чистом виде - поскольку заполняется то она как стек (причём внутренними, недоступными нам процедурами самой среды) - а вот доступ к элементам обеспечивается произвольный - при этом для коллекции _VFP.Forms() не только по индексу но и по имени формы (но с ограничениями). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2006, 01:07 |
|
||
|
|

start [/forum/topic.php?all=1&fid=41&tid=1592580]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
167ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
2ms |
| others: | 193ms |
| total: | 482ms |

| 0 / 0 |
