Поиск:

Ответ в темуСоздание новой темы Создание опроса
> МЕНЮ, ФОРМА В МЕНЮ 
V
    Опции темы
wedmed
Дата 21.1.2009, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 26.12.2008

Репутация: нет
Всего: нет



Как из меню, можно (и можно ли вообще) программно узнать название формы (чтобы к ней обращатся), к которой привязана меню???
PM MAIL   Вверх
Данкинг
Дата 21.1.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 7
Всего: 130



А как меню вообще привязано к форме? Вроде меню отображается после запуска файла с ним, .mpr


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
wedmed
Дата 21.1.2009, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 26.12.2008

Репутация: нет
Всего: нет



            
               DO Menu.MPR  WITH  THISFORM

А Можно как-нибудь узнать, на какой форме в данный момент оно отбражается (или необходимо в лоб прописывать 

имя формы)
PM MAIL   Вверх
reware
Дата 27.1.2009, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.7.2008

Репутация: 1
Всего: 1



Цитата(wedmed @ 21.1.2009,  23:23)
DO Menu.MPR  WITH  THISFORM

А Можно как-нибудь узнать, на какой форме в данный момент оно отбражается (или необходимо в лоб прописывать 

имя формы)

Дык в самой форме и можно спросить ? thisform.name. Это имеет в виду, что форме был присвоен какой-то name. Если надо узнать не в самой форме, а извне (лучше бы мне не догадываться, а вам стоит четче обьяснить откуда надо узнать имя формы), то все сложнее.
PM MAIL   Вверх
reware
Дата 27.1.2009, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.7.2008

Репутация: 1
Всего: 1



Цитата(wedmed @ 21.1.2009,  20:32)
Как из меню, можно (и можно ли вообще) программно узнать название формы (чтобы к ней обращатся), к которой привязана меню???

Два случая для двух немодальных форм. В первом случае формы вызывают CallFun(thisform). Во втором случае вызов выглядит как CallFun(thisform.name) и каждой форме присвоено свое name (zzz и vvv).
Случай 1 :
Код

*!*    Формы внешне единообразные и действия с ними производятся
*!*    одинаково, независимо от их имен (изменяется высота форм).

_screen.WindowState= 2
DO FORM form1 NAME myform1
DO FORM form2 NAME myform2
READ EVENTS
RELEASE ALL
RETURN

**************************
FUNCTION CallFun
**************************
PARAMETERS foname && ссылка на вызывающий обьект (форму)
                  && без учета его имени.
IF foname.height=63
    foname.height=80
ELSE
    foname.height=63
ENDIF
RETURN


Случай 2 :
Код

*!*    Действия с формами производятся
*!*    в зависимости от имени формы, вызвавшей CallFun().

_screen.WindowState= 2
PUBLIC zzz, vvv
DO FORM form3 NAME myform1
DO FORM form4 NAME myform2
READ EVENTS
RELEASE ALL
RETURN

**************************
FUNCTION CallFun
**************************
PARAMETERS foname && имя вызывающей формы
DO case
    CASE foname=='zzz' && у этой формы меняем высоту...
        IF myform1.height=63
            myform1.height=80
        ELSE
            myform1.height=63
        ENDIF
    CASE foname=='vvv' && ...а у этой ширину
        IF myform2.width=424
            myform2.width=460
        ELSE
            myform2.width=424
        ENDIF
ENDCASE
RETURN

PM MAIL   Вверх
reware
Дата 27.1.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 21.7.2008

Репутация: 1
Всего: 1



Цитата(wedmed @ 21.1.2009,  20:32)
Как из меню, можно (и можно ли вообще) программно узнать название формы (чтобы к ней обращатся), к которой привязана меню???

Два случая обращения к двум немодальным формам. В первом случае каждая форма вызывает общую внешнюю функцию CallFun(thisform) и передает ей ссылку на саму себя. Функция обращается к формам по этой ссылке абсолютно одинаково (меняет высоту вызывающей формы).
Во втором случае каждой форме присвоено свое имя (zzz и vvv), которое она передает  в CallFun(thisform.name). Функция способна различить вызывающую форму по имени и выполнить с ней нужные действия (у одной формы меняется высота, у другой - ширина).

Случай 1 :

Код

*!*    Формы внешне единообразные и действия с ними производятся
*!*    одинаково, независимо от их имен (изменяется высота форм).

_screen.WindowState= 2
DO FORM form1 NAME myform1
DO FORM form2 NAME myform2
READ EVENTS
RELEASE ALL
RETURN

**************************
FUNCTION CallFun
**************************
PARAMETERS foname && ссылка на вызывающий обьект (форму)
                  && без учета его имени.
IF foname.height=63
    foname.height=80
ELSE
    foname.height=63
ENDIF
RETURN

Случай 2 :

Код

*!*    Действия с формами производятся
*!*    в зависимости от имени формы, вызвавшей CallFun().

_screen.WindowState= 2
PUBLIC zzz, vvv
DO FORM form3 NAME myform1
DO FORM form4 NAME myform2
READ EVENTS
RELEASE ALL
RETURN

**************************
FUNCTION CallFun
**************************
PARAMETERS foname && имя вызывающей формы
DO case
    CASE foname=='zzz'
        IF myform1.height=63 && этой форме меняем высоту
            myform1.height=80
        ELSE
            myform1.height=63
        ENDIF
    CASE foname=='vvv'
        IF myform2.width=424 && а этой ширину
            myform2.width=460
        ELSE
            myform2.width=424
        ENDIF
ENDCASE
RETURN

Как видно, можно ссылаться как на явное имя формы, так и на обьект, именованный в DO FORM ... NAME.
PM MAIL   Вверх
wedmed
Дата 12.2.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 26.12.2008

Репутация: нет
Всего: нет



Цитата(reware @ 27.1.2009,  21:20)
Если надо узнать не в самой форме, а извне, то все сложнее.

Из процедуры описанной в меню
PM MAIL   Вверх
wedmed
Дата 6.3.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 26.12.2008

Репутация: нет
Всего: нет



Можно но сложно (так и не нашёл)!!!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Foxpro/Clipper/Dbase"
MoLeX

Запрещается!

1. Публиковать ссылки для чисто рекламных целей.

2. Оффтопить, флеймить, говорить не культурно.

Пожалуйста, адекватно задавайте свой вопрос. Тема должна создаваться с названием характеризующем Вашу проблему.

Задавайте вопросы правильно - как спросите, так вам и ответят.

Разрешено!

Давать ссылки на статьи, обзоры, если это не нарушает первый пункт правил.

Задавая вопрос, давайте нужную информацию касающуюся Вашей проблемы. Этим вы ускорите полезные ответы.

P.S. Размещение рекламы будет строго наказываться!



Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MoLeX

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Foxpro/Clipper/Dbase | Следующая тема »


 




[ Время генерации скрипта: 0.1042 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.