|
|
|
Зараза Hide()
|
|||
|---|---|---|---|
|
#18+
Избавился от проблемы, но остался вопрос ПОЧЕМУ? Вариант 1. (НЕ работает) Из основной формы вызываю .... LOCAL Form1 Form1 = CreateObject("MyForm") Form1.Show(1) * в Form1 закрываю форму по Thisform.hide() Form1.Release() MODIFY LABEL "c:\baza\labels\label1.lbx" NOENVIRONMENT ..... В итоге команда MODIFY LABEL не выполняется, а происходит зависание, из которого можно выйти закрыв основную форму. Причем, при разных вариантах вызова MODIFY LABEL (из меню или с помощью кнопки) результат непредсказуемый. Может запуститься, а может и нет. Вариант 2. (работает) Из основной формы вызываю ..... LOCAL Form1 Form1 = CreateObject("MyForm") Form1.Show(1) * в Form1 закрываю форму по Form1.Release() MODIFY LABEL "c:\baza\labels\label1.lbx" NOENVIRONMENT ..... команда MODIFY LABEL срабатывает отлично Что происходит? И как после этого использовать hide() ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2006, 10:32 |
|
||
|
Зараза Hide()
|
|||
|---|---|---|---|
|
#18+
Hi Alex45! Видимо не успевает уничтожится форма и это мешает - попробуй задержку добавить - DOEVENTS+INKEY(0.1) или что-то подобное. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 02:03 |
|
||
|
Зараза Hide()
|
|||
|---|---|---|---|
|
#18+
Hi Alex45 У тебя та же проблема , что и у . меня . Я подозреваю, что это происходит из-за модальности формы (Form1.Show(1)). Хоть форма и скрыта, но она держит на себе все внимание, а так как там уже выполнять нечего, то программа висит. PS Пусть гуру дадут более взвешенное объяснение... --------------------------------------------- Кто в армии служил - тот в цирке не смеется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2006, 08:37 |
|
||
|
Зараза Hide()
|
|||
|---|---|---|---|
|
#18+
Hi По поводу использования задержки, пробовал так Form1.Release() INKEY(2) MODIFY LABEL "c:\baza\labels\label1.lbx" NOENVIRONMENT не помогает. Влияние модальности формы возможно, show(2) не ставил, т.к. мне нужна именно модальность. И, кроме того, примочка в том, что неприятности происходят ПОСЛЕ закрытия формы Form1.Release(). Пробовал даже Form1.Release() Form1 = NULL RELEASE Form1 MODIFY LABEL "c:\baza\labels\label1.lbx" NOENVIRONMENT это тоже не помогает, хотя уже и объекта нет и сама переменная исчезла. Кстати и MODIFY REPORT (в данной ситуации) тоже работает хреново. Лечение одно - отказаться от hide(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 00:36 |
|
||
|
Зараза Hide()
|
|||
|---|---|---|---|
|
#18+
Inkey() - это не совсем то, что нужно. Необходим именно DOEVENTS. Код: plaintext 1. 2. 3. 4. 5. 6. И еще попробуй разнести команды в разные модули. Т.е. вызов и закрытие формы в одном модуле (методе), а вызов на модификацию карточки - в другом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Здесь фокус в том, что завершение процедуры работает примерно так же как и DOEVENTS. Т.е. это место, в которое может "втиснуться" не дообработанные события. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2006, 01:11 |
|
||
|
Зараза Hide()
|
|||
|---|---|---|---|
|
#18+
Привожу тестовую программу. Проще некуда. * vfp 8sp1 LOCAL o2 o2 = CREATEOBJECT('form1') o2.show(1) RETURN DEFINE CLASS form1 AS form ScaleMode = 0 DoCreate = .T. Caption = "Form" Name = "form1" ADD OBJECT command1 AS commandbutton WITH ; Top = 0.80, ; Left = 2.40, ; Height = 1.80, ; Width = 36.80, ; Caption = "Command1 Run Modal form", ; Name = "Command1" ADD OBJECT command2 AS commandbutton WITH ; Top = 3.20, ; Left = 2.40, ; Height = 1.80, ; Width = 46.80, ; Caption = "Command2 Run Modify Label or Report", ; Name = "Command2" PROCEDURE command1.Click LOCAL o1 o1 = CREATEOBJECT('form2') o1.show(1) o1.release DOEVENTS ENDPROC PROCEDURE command2.Click * MODIFY LABEL "c:\magazin\labels\label1.lbx" NOENVIRONMENT MODIFY REPORT "c:\magazin\reports\report1.frx" NOENVIRONMENT ENDPROC ENDDEFINE DEFINE CLASS form2 AS form ScaleMode = 0 Top = 0.00 Left = 0.00 Height = 8.40 Width = 59.60 DoCreate = .T. Caption = "Form" Name = "form2" ADD OBJECT command1 AS commandbutton WITH ; Top = 0.80, ; Left = 4.80, ; Height = 1.80, ; Width = 36.80, ; Caption = "Command Do Hide()", ; Name = "Command1" PROCEDURE command1.Click Thisform.Hide() ENDPROC ENDDEFINE У меня она НЕ РАБОТАЕТ. Если не нажимать кнопку "Command1 Run Modal form" то все ничего, но, стоит нажать кнопку "Command Do Hide()", все НЕ работает. Если это баг, нет вопросов. Но я сто раз подумаю, прежде чем применить hide() впредь. Куда втыкать DOEVENTS ??? Версию 9 я не использую. С 9-й версией программа начинает страшно тормозить. Искать причину желания нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2006, 01:27 |
|
||
|
Зараза Hide()
|
|||
|---|---|---|---|
|
#18+
Hi Alex45! На твоём сесте я бы "сто раз подумал" о куче модальных форм, вызываемых друг из друга (к твоему сведению MODIFY REPORT также открывает окно дизайнера в модальном виде). Хотя конечно баг налицо - если тебе это важно, то он присутствует и в VFP9SP1 - можешь писать багрепорт :) P.S. причины "торможения" в VFP9 обсуждались неоднократно - это и ошибка оптимизатора, игнорирующего индексы с STR (исправлена в SP1), и отключение использования индексов для таблиц, имеющих CPDBF()#CPCURRENT() (это в SP1 можно обойти путём установки SET ENGINEBEHAVIOUR 80 - но в общем случае так делать не стоит - т.к. потенциально возможны ошибки в выборках). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2006, 00:19 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=267&tid=1592044]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 358ms |

| 0 / 0 |
