| Цитата(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. |