|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Добрый день, следующий вопрос возник, форма открыта в форме верхнего уровня и теряет фокус, при том что остается сверху. Имя формы определили в переменную lcFrmName=WONTOP() Как теперь ее активизировать? Пытался вокруг такого плясать: _VFP.Forms('FrmName').show в различных вариантах - решения не нашел. Подскажите, плиз ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2015, 17:38 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Честно перелопатил весь форум, вроде логика с большего понятна, но синтаксис не получается. В моем случае вызывается форма в форме верхнего уровня, кнопка Exit на общем тулбаре, в кнопке код _screen.activeform.release если пользователь кликнет мимо формы на форму верхнего уровня, то при нажатии ломается. Я определил, если фокус ушел на форму верхнего уровня Код: sql 1.
поскольку форма, открыта в верхней, то она все равно наверху, а если их несколько - то не имеет значения, нам для выхода нужна верхняя, мы ее нашли Код: sql 1.
? lcFrmName - показывает именно то, что нужно. Так подскажите недалекому, как все-таки обратиться к запущенной ранее форме, если ее имя известно? Как записать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 11:08 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Простой контроль на открытую форму: IF TYPE("ИмяФормы") = "O" .AND. ISNULL(ИмяФормы) = .F. ИмяФормы.Active ELSE DO FORM ИмяФормы NAME ИмяФормы ENDIF ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 11:24 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Дед Евгений, логика понятна, но как это записать ? имя формы - неявно, оно есть в переменной lcFrmName, как обратиться тогда? форм может быть несколько, нас интересует та, которая хоть и не активна, но сверху. Мы не знаем точного имени, форм может быть запущено несколько. Какая-то из них wontop() Неужели, зная имя через wontop() нужно лопатить-перебирать все-все формы, что бы активировать верхнюю? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 12:51 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
А так и обращаешься к форме через переменную. При открытии формы, опцией NAME ты назначешь имя переменной (Например DO FORM Form1 NAME MyForm) И тогда можно обращаться к ней: MyForm.Release - Закрыть форму FyMorm.Init() - выполнить в этой фрме функцию Init ... и так далее, через переменную можно выпонить на форме что угодно. Но что бы эта переменная была всегда доступна в любом месте программы, можешьт ее описать в начале программы и назначить Public (Например в файле Main.prg написать PUBLIC MyForm) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 13:11 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
DmitryKnТак подскажите недалекому, как все-таки обратиться к запущенной ранее форме, если ее имя известно? Как записать? Код: sql 1. 2. 3. 4. 5. 6.
Только учти что может быть несколько форм с одним именем. Если форма текущая, то через _screen.activeform, например: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 13:29 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Dima T, Приветствую, Дмитрий. Я думал, может можно не перебирать все формы, поскольку нужная - она вот она: lcFrmName=wontop() Нельзя ли как-то сразу через lcFrmName обратиться, не перебирая все формы проекта? Перебирать не хочется, потому что их может быть несколько открыто, а закрыть нужно по условию wontop(). в моей конкретной ситуации _screen.activeform становится форма верхнего уровня, но при этом одна из открытых форм - все равно наверху, и ее-то я и хочу активировать, что бы потом закрыть. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 13:41 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Dima T, Спасибо, все работает, ура )) Код кнопки exit получился такой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Дмитрий, Евгений, спасибо за помощь и что откликнулись и не бросили )) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 14:14 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
А если бы вы еще мне подсказали, как организовать в меню такой пункт, например, "Окно", как в приложениях обычно делается, то вообще был бы день замечательный сегодня ))) Допустим, как активировать окно - уже разберемся, а вот как их в список в разделе меню в столбик аккуратно вывести? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 14:22 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
DmitryKnА если бы вы еще мне подсказали, как организовать в меню такой пункт, например, "Окно", Код: sql 1. 2. 3.
До кучи: чтобы буфер обмена работал (Ctrl+C и т.д.) Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 14:30 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Dima T, Я меню в конструкторе создавал, так что слегка озадачен, мягко скажем. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 16:26 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Конструктором не пользуюсь, но в итоге он тоже PRG генерит. *.MPR если не путаю. Добавь туда руками или посмотри что куда из каких клеток попадает и добавь через конструктор. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 16:30 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Dima T, попробую обязательно, только не очень понимаю, в том числе в твоем коде, как прога узнает , когда какая форма запущена и какое имя отображать в "Окне". Т.е. какую-либо форму запустили - "Окно" должно стать активным или непустым, при нажатии должно отобразиться Caption формы или несколько в вертикальном списке, ну как в ворде или ехеле, вот этот механизм - где он вообще должен быть? Он ведь должен как-то исполняться, как-то отслеживать состояние форм, и как-то в меню это передавать, да еще эти имена должны появляться-исчезать при открытии-закрытии. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 16:46 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Например, при нажатии на "Окно" срабатывает какая-то процедура, которая находит открытые формы и выкладывает в выпадающий список меню "Окно" captions этих форм. Так где эту процедуру содержат и сможет ли она внести изменения в меню на ходу? Или как вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 16:51 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
DmitryKnНапример, при нажатии на "Окно" срабатывает какая-то процедура, которая находит открытые формы и выкладывает в выпадающий список меню "Окно" captions этих форм. Так где эту процедуру содержат и сможет ли она внести изменения в меню на ходу? Или как вообще?Сударь, вы может таки догадаетесь создать новое меню, ткнуть пункт Quick menu и посмотреть как это сделано в родном фоксовом меню? Ну дабы меньше заниматься измышлизмами и больше времени посвятить изучению инструмента. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 17:04 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
правильный проходящий., Да, действительно, есть такое, стыдно признаться , даже не подозревал о его существовании. Спасибо за наводку. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 18:11 |
|
Снова окна - как активизировать запущенное ранее окно
|
|||
---|---|---|---|
#18+
Ну создал в "Окне" "каскад" но понимания нет от слова совсем, книжки не добавили к этому непониманию ничего. И желаемого нет, каскад сам по себе не плох, конечно, но виделся стандартный перечень открытых форм, что бы можно было потом кликом на них переключаться. Поскольку это не критично, пока оставлю как есть, однако по мере возникновения траблов и вопросов по меню, видимо буду создавать соответствующую тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2015, 20:36 |
|
|
start [/forum/topic.php?fid=41&fpage=22&tid=1582273]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 140ms |
0 / 0 |