Реф. Арм менеджера по продажам комплектующих
Скачать 6.27 Mb.
|
1 2 Позиция – информация о производителе и модели изделия. Характеристики - дополнительные параметры. Гарантия – гарантийный срок эксплуатации изделия. Розничная цена. Мелкооптовая цена. Оптовая цена. Три последних поля введены из-за необходимости работы фирмы с различными клиентами. Программа должна осуществлять управление БД с помощью интуитивно понятного современному пользователю интерфейса, предлагаемого операционной системой Windows 95/98, используя стандартные элементы управления. 5. Руководство пользователя Разработка программы велась на языке управления базами данных Visual FoxPro 6.0 использующем технологию объектно-ориентированного визуального программирования. Элементы использованные при разработке программы являются стандартными для ОС Windows и описаны выше в п.2 данной записки. После запуска программы появляется главное окно (рис.2), которое содержит меню для работы с формой, таблицу, содержащую все записи базы данных, а также закладки для перехода на страницу работы с отдельной записью и страницу формирования SQL-запроса. Рис.2 В этом окне можно осуществить сортировку записей по всем признакам с возможностью сортировки по возрастанию и убыванию. Это действие выполняется нажатием левой кнопки мыши при подведении курсора к заголовку поля. Причём сортировка по убыванию осуществляется с нажатием кнопки Ctrl на клавиатуре и щелчком мыши по заголовку поля, в котором требуется произвести сортировку. Перемещение по таблице выполняется с помощью курсоров клавиатуры, а также с помощью мыши и правого скроллера. Редактировать или каким-нибудь образом изменять содержимое БД из этого окна нельзя. Для этого необходимо переместится на страницу Тек. Запись. (рис. 3) Рис. 3 При этом запись, на которой находился курсор на предыдущей странице будет отображаться на этой. Эта страница содержит кнопки навигации по базе данных, кнопки удаления, редактирования. «Начало»- перемещение указателя БД на первую запись. «Вверх»- перемещение указателя на одну запись вверх. «Редактировать»- разрешает изменение значений полей текущей записи. «Новая запись» - добавление новой пустой записи и возможность ввода значений. «Удалить» - удаление после утвердительного ответа на подтверждающий запрос. «Вниз» – перемещение указателя текущей записи на одну запись вниз. «Конец» - перемещение указателя БД на последнюю запись. При нажатии кнопки «Редактировать» поля записи становятся доступными для изменения. Главное окно содержит кнопку «Выход», которая доступна со всех страниц. Пункты меню, также доступные с любой страницы. Рассмотрим их. File – пункт меню для работы с файлами, содержит одну опцию – Quit. Edit – пункт меню для редактирования базы данных, содержит 3 опции: Add record – добавить пустую запись. (аналогично кнопке «Новая запись» страницы «Тек. запись») Delete record – удалить текущую запись. (аналогично кнопке «Удалить» страницы «Тек. запись») Edit record – редактировать текущую запись. (аналогично кнопке «Редактировать» страницы «Тек. запись») Query - делает активной страницу формирования запроса (аналогично нажатию закладки «Запрос») Help – пункт меню помощи, содержит одну опцию About – вызов окна «О программе» Выбор закладки «Запрос» главного окна делает активным страницу формирования SQL -запроса.(рис. 4) Рис. 4 Элементы данной страницы позволяют создать SQL- запрос по трём полям базы данных с различными знаками связок в условиях и соединений (и/или) критериев отбора между собой. Выбор поля, по которому осуществляется запрос происходит из элемента управления ComboBox, который содержит все наименования полей базы. Если не указаны имена полей для выборки, кнопка «Выполнить», которая запускает сформированный запрос, неактивна. Кнопка «Очистить» приводит форму создания запроса в исходное состояние и очищает её от ранее введённых значений. Приведём пример создания запроса по разделу «Мониторы» с обязательным размером по диагонали 17 дюймов или гарантией больше 12 месяцев. Заполнив соответствующие поля и нажав кнопку выполнить, наблюдаем следующие результаты (рис. 5) Рис. 5 Результаты работы запроса выводятся в стандартном окне «Browse». Если в базе данных нет записи полностью удовлетворяющей созданному запросу, на экран будет выдано соответствующее сообщение. При выборе пункта меню Help/About на экран выводится окно с информацией о программе и её разработчике: Программа выполняет основные требования, которые предъявлялись к ней на этапе постановки задач, обладая при этом интуитивно понятным интерфейсом. При внесении определённых корректив в функции программы, она вполне может стать действующей АРМ менеджера по продажам комплектующих. Заключение Среда программирования Visual FoxPro является составной частью интегрированного пакета программ VISUAL STUDIO. Это предоставляет пользователю комфортный и унифицированный интерфейс разработки приложений для различных языков программирования, включая Visual Basic и C++. Также это позволяет использовать общие сервисные программы, например для тестирования объектов ActiveX. Набор команд и функций предлагаемых разработчикам программных продуктов в среде FoxPro, по мощи и гибкости отвечает любым современным требованиям к представлению и обработке данных. Здесь может быть реализован максимально удобный, гибкий и эффективный пользовательский интерфейс. Visual FoxPro является первым продуктом разработки, предназначенным для создания общекорпоративных, объектно-ориентированных приложений типа клиент/сервер, работающих как в локальном, так и в глобальном варианте (т.е. в Internet). Список использованных источников И.Ю. Баженова «Visual FoxPro 6.0» – Москва, «Диалог-МИФИ», 1999 Л. Омельченко «Самоучитель Visual FoxPro 6.0» – «BHV-Санкт-Петербург», 1999 М. Базиян и др. «Использование Visual FoxPro 6» – Москва, Санкт-Петербург, Киев, Издательский дом «Вильямс», 1999 А.А. Попов «Создание приложений для FoxPro 2.5/2.6 в DOS и WINDOWS» – Москва, «ДЕСС», 1999 Microsoft Developer Network (MSDN) Documentation On Visual FoxPro. http://alpha.netis.ru/win/db/toc.html http://www.cit-forum.com/ http://www.vlata.com/vfp Приложение1. Листинг программы В качестве листинга программы выступают процедуры и методы-обработчики визуальных компонент изменённые вручную, а также текст меню сгенерированный программой. Form1.init SET SAFETY OFF SET DELETED ON copy structure to temp.dbf set order to pozic ASCENDING DO menu1.mpr WITH THISFORM,.T. THIS.pageframe1.page3.cboField1.clear THIS.pageframe1.page3.cboField2.clear THIS.pageframe1.page3.cboField3.clear FOR nLoop = 1 TO THIS.nFields IF!THIS.aStructure[nLoop,2]$"MGO" THIS.pageframe1.page3.cboField1.AddItem(THIS.aStructure[nLoop,1]) THIS.pageframe1.page3.cboField2.AddItem(THIS.aStructure[nLoop,1]) THIS.pageframe1.page3.cboField3.AddItem(THIS.aStructure[nLoop,1]) ENDIF ENDFOR Form1.load THIS.Alias = ALIAS() THIS.nFields = AFIELDS(THIS.aStructure) Form1.unload IF USED(THIS.Alias) USE IN (THIS.Alias) ENDIF Form1.Destroy PACK reindex close databases Form1.bldsql LOCAL lcOperand1,lcOperand2,lcWHERE; lcField1, lcRelation1, lcValue1,; lcField2, lcRelation2, lcValue2,; lcField3, lcRelation3, lcValue3,; lcAlias, lcSQL, lcType Test to make sure all values that are required have been entered *------------------------------------------------------------------ IF EMPTY(THISFORM.pageframe1.page3.cboField1.Value) HISFORM.pageframe1.page3.cmdExecute.Enabled =.F. RETURN ELSE IF THISFORM.pageframe1.page3.opgOperand1.Value > 0 AND; EMPTY(THISFORM.pageframe1.page3.cboField2.Value) THISFORM.pageframe1.page3.cmdExecute.Enabled =.F. RETURN ELSE IF THISFORM.pageframe1.page3.opgOperand2.Value > 0 AND;EMPTY(THISFORM.pageframe1.page3.cboField3.Value)THISFORM.pageframe1.page3.cmdExecute.Enabled =.F. RETURN ENDIF ENDIF ENDIF *------------------------------------------------------------------- lcWHERE = "" lcAlias = ALIAS() ** Retrieve the values of the controls into variables lcField1 = THISFORM.pageframe1.page3.cboField1.Value lcRelation1 = THISFORM.pageframe1.page3.cboRelation1.Value lcValue1 = ALLTRIM(THISFORM.pageframe1.page3.txtValue1.Value) DO CASE CASE THISFORM.pageframe1.page3.opgOperand1.Value = 0 lcOperand1 = "" CASE THISFORM.pageframe1.page3.opgOperand1.Value = 1 lcOperand1 = " AND " CASE THISFORM.pageframe1.page3.opgOperand1.Value = 2 lcOperand1 = " OR " ENDCASE DO CASE CASE THISFORM.pageframe1.page3.opgOperand2.Value = 0 lcOperand2 = "" CASE THISFORM.pageframe1.page3.opgOperand2.Value = 1 lcOperand2 = " AND " CASE THISFORM.pageframe1.page3.opgOperand2.Value = 2 lcOperand2 = " OR " ENDCASE lcField2 = THISFORM.pageframe1.page3.cboField2.Value lcRelation2 = THISFORM.pageframe1.page3.cboRelation2.Value lcValue2 = ALLTRIM(THISFORM.pageframe1.page3.txtValue2.Value) lcField3 = THISFORM.pageframe1.page3.cboField3.Value lcRelation3 = THISFORM.pageframe1.page3.cboRelation3.Value lcValue3 = ALLTRIM(THISFORM.pageframe1.page3.txtValue3.Value) ** Need to put the proper delimiters around comparison values of certain types lcValue1 = THISFORM.ValidateType(THIS.pageframe1.page3.cboField1.Value,lcValue1) ** Create the second part of the WHERE condition IF!EMPTY(lcOperand1) lcValue2 = THISFORM.ValidateType(THIS.pageframe1.page3.cboField2.Value,lcValue2) lcWHERE = lcOperand1 + " " + lcField2 + " " +; lcRelation2 + " " + lcValue2 ENDIF IF!EMPTY(lcOperand2) lcValue3 = THISFORM.ValidateType(THIS.pageframe1.page3.cboField3.Value,lcValue3) lcWHERE = lcWhere + " " + lcOperand2 + " " + lcField3 + " " +; lcRelation3 + " " + lcValue3 ENDIF ** Create the first part of the WHERE condition lcWHERE = "WHERE " + lcField1 + " " + lcRelation1 + " "; + lcValue1 + " " + lcWHERE ** Create the full SQL command using the base table for the form lcSQL = "SELECT * FROM " + lcAlias + " " + lcWHERE THISFORM.DataSql = lcSQL THISFORM.pageframe1.page3.cmdClear.Enabled =.T. THISFORM.pageframe1.page3.cmdExecute.Enabled =.T. Form1.clearsql THISFORM.pageframe1.page3.cboField1.Value = "" THISFORM.pageframe1.page3.cboRelation1.Value = "=" THISFORM.pageframe1.page3.txtValue1.Value = "" THISFORM.pageframe1.page3.opgOperand1.Value = 0 THISFORM.pageframe1.page3.cboField2.Value = "" THISFORM.pageframe1.page3.cboRelation2.Value = "=" THISFORM.pageframe1.page3.cboField2.Enabled =.F. THISFORM.pageframe1.page3.cboRelation2.Enabled =.F. THISFORM.pageframe1.page3.txtValue2.Enabled =.F. THISFORM.pageframe1.page3.txtValue2.Value = "" THISFORM.pageframe1.page3.opgOperand2.Value = 0 THISFORM.pageframe1.page3.cboField3.Value = "" THISFORM.pageframe1.page3.cboRelation3.Value = "=" THISFORM.pageframe1.page3.txtValue3.Value = "" THISFORM.pageframe1.page3.cboField3.Enabled =.F. THISFORM.pageframe1.page3.cboRelation3.Enabled =.F. THISFORM.pageframe1.page3.txtValue3.Enabled =.F. THISFORM.pageframe1.page3.cmdClear.Enabled =.F. THISFORM.pageframe1.page3.cmdExecute.Enabled =.F. Form1.Settexboxformat LPARAMETERS oSource, oTxt LOCAL lcType oTxt.Value = "" lcType = TYPE(oSource.Value) DO CASE CASE lcType = "D" oTxt.Format = "D" CASE lcType = "L" oTxt.Inputmask = ".T.,.F." oTxt.Format = "M" CASE lcType = "T" oTxt.Inputmask = "99/99/99 99:99:99" ENDCASE Form1.validatetype LPARAMETERS lField, lcValue LOCAL lcType lcType = TYPE(lField) DO CASE CASE lcType $ "CM" lcValue = CHR(34) + lcValue + CHR(34) CASE lcType $ "DT" lcValue = "{" + lcValue + "}" CASE lcType $ "NY" IF EMPTY(lcValue) lcValue = "0" ENDIF CASE lcType $ "L" IF!INLIST(UPPER(lcValue), ".T.", ".F.") lcValue = ".T." ENDIF ENDCASE RETURN lcValue Form1.PageFrame1.Grid1.Column1.Header1.MouseUp LPARAMETERS nButton, nShift, nXCoord, nYCoord IF nShift = 2 SET ORDER TO razdel DESCENDING ELSE SET ORDER TO razdel ASCENDING ENDIF GO TOP THISFORM.Refresh Form1.PageFrame1.Grid1.Column2.Header1.MouseUp LPARAMETERS nButton, nShift, nXCoord, nYCoord IF nShift = 2 SET ORDER TO pozic DESCENDING ELSE SET ORDER TO pozic ASCENDING ENDIF GO TOP THISFORM.Refresh Form1.PageFrame1.Grid1.Column3.Header1.MouseUp LPARAMETERS nButton, nShift, nXCoord, nYCoord IF nShift = 2 SET ORDER TO garant DESCENDING ELSE SET ORDER TO garant ASCENDING ENDIF GO TOP THISFORM.Refresh Form1.PageFrame1.Grid1.Column4.Header1.MouseUp LPARAMETERS nButton, nShift, nXCoord, nYCoord IF nShift = 2 SET ORDER TO cena_1 DESCENDING ELSE SET ORDER TO cena_1 ASCENDING ENDIF GO TOP THISFORM.Refresh Form1.PageFrame1.Page2.Activate this.refresh Form1.PageFrame1.Page2.commandgroup1.Command1.Click go top if BOF () MESSAGEBOX("Вы достигли первой записи",0+64+0,"Уведомление") endif _screen.activeForm.refresh() Form1.PageFrame1.Page2.commandgroup1.Command2.Click if!bof() skip -1 else MESSAGEBOX("Вы достигли первой записи",0+64+0,"Уведомление") endif _screen.activeForm.refresh() Form1.PageFrame1.Page2.commandgroup1.Command3.Click hisform.pageframe1.page2.command1.visible =.T. thisform.pageframe1.page2.cmdCancel.visible =.T. thisform.pageframe1.page2.text1.readonly =.F. thisform.pageframe1.page2.text2.readonly =.F. thisform.pageframe1.page2.text3.readonly =.F. thisform.pageframe1.page2.text4.readonly =.F. thisform.pageframe1.page2.text5.readonly =.F. thisform.pageframe1.page2.text6.readonly =.F. thisform.pageframe1.page2.text7.readonly =.F. thisform.pageframe1.page2.commandgroup1.command1.enabled =.F. thisform.pageframe1.page2.commandgroup1.command2.enabled =.F. thisform.pageframe1.page2.commandgroup1.command3.enabled =.F. thisform.pageframe1.page2.commandgroup1.command4.enabled =.F. thisform.pageframe1.page2.commandgroup1.command5.enabled =.F. thisform.pageframe1.page2.commandgroup1.command6.enabled =.F. thisform.pageframe1.page2.commandgroup1.command7.enabled =.F. Form1.PageFrame1.Page2.commandgroup1.Command4.Click append blank thisform.refresh thisform.pageframe1.page2.commandgroup1.command3.Click Form1.PageFrame1.Page2.commandgroup1.Command5.Click if messagebox("Вы действительно хотите удалить эту запись?", 4+48+256, "Комплектующие")=6 delete reindex thisform.pageframe1.page1.grid1.Refresh thisform.refresh thisform.pageframe1.ActivePage = 1 endif Form1.PageFrame1.Page2.commandgroup1.Command6.Click skip if!eof() skip else MESSAGEBOX("Вы достигли последней записи",0+64+0,"Уведомление") skip-1 thisform.Refresh() endif thisform.Refresh() Form1.PageFrame1.Page2.commandgroup1.Command7.Click go bottom thisform.pageframe1.page2.Refresh Form1.PageFrame1.Page2..Command1.Click thisform.pageframe1.page2.command1.visible =.F. pozic = thisform.pageframe1.page2.text2.value razdel = thisform.pageframe1.page2.text1.value charakt= thisform.pageframe1.page2.text3.value garant = thisform.pageframe1.page2.text4.value cena_1 = thisform.pageframe1.page2.text5.value cena_2 = thisform.pageframe1.page2.text6.value cena_3 = thisform.pageframe1.page2.text7.value thisform.pageframe1.page1.grid1.refresh thisform.pageframe1.page2.text1.readonly =.T. thisform.pageframe1.page2.text2.readonly =.T. thisform.pageframe1.page2.text3.readonly =.T. thisform.pageframe1.page2.text4.readonly =.T. thisform.pageframe1.page2.text5.readonly =.T. thisform.pageframe1.page2.text6.readonly =.T. thisform.pageframe1.page2.text7.readonly =.T. thisform.pageframe1.page2.commandgroup1.command1.enabled =.T. thisform.pageframe1.page2.commandgroup1.command2.enabled =.T. thisform.pageframe1.page2.commandgroup1.command3.enabled =.T. thisform.pageframe1.page2.commandgroup1.command4.enabled =.T. thisform.pageframe1.page2.commandgroup1.command5.enabled =.T. thisform.pageframe1.page2.commandgroup1.command6.enabled =.T. thisform.pageframe1.page2.commandgroup1.command7.enabled =.T. thisform.pageframe1.ActivePage = 1 Form1.PageFrame1.Page3.cboField1.InteractiveChange THISFORM.SetTextboxFormat(THIS, THISFORM.pageframe1.page3.txtValue1) THISFORM.BldSQL Form1.PageFrame1.Page3.cboField2.InteractiveChange THISFORM.SetTextboxFormat(THIS, THISFORM.pageframe1.page3.txtValue2) THISFORM.BldSQL Form1.PageFrame1.Page3.cboField3.InteractiveChange THISFORM.SetTextboxFormat(THIS, THISFORM.pageframe1.page3.txtValue3) THISFORM.BldSQL Form1.PageFrame1.Page3.cboRelation1.InteractiveChange THISFORM.BldSQL Form1.PageFrame1.Page3.cboRelation2.InteractiveChange THISFORM.BldSQL Form1.PageFrame1.Page3.cboRelation3.InteractiveChange THISFORM.BldSQL Form1.PageFrame1.Page3.txtValue1 THISFORM.BldSQL Form1.PageFrame1.Page3.txtValue2 THISFORM.BldSQL Form1.PageFrame1.Page3.txtValue3 THISFORM.BldSQL Form1.PageFrame1.Page3.opgOperand1. InteractiveChange THISFORM.pageframe1.page3.cboField2.Enabled =.T. THISFORM.pageframe1.page3.cboRelation2.Enabled =.T. THISFORM.pageframe1.page3.txtValue2.Enabled =.T. THISFORM.BldSQL Form1.PageFrame1.Page3.opgOperand2. InteractiveChange THISFORM.pageframe1.page3.cboField3.Enabled =.T. THISFORM.pageframe1.page3.cboRelation3.Enabled =.T. THISFORM.pageframe1.page3.txtValue3.Enabled =.T. THISFORM.BldSQL Form1.PageFrame1.Page3.cmdExecute.Click LOCAL lcOldAlias lcOldAlias = ALIAS() cMacro = ALLTRIM(THISFORM.DataSql) + "INTO CURSOR TEMPQUERY" &cMacro IF _TALLY = 0 #DEFINE MSG_LOC "No records were found to match the criteria you specified." #DEFINE TITLE_LOC "No Results" =MESSAGEBOX(MSG_LOC,64+0+0,TITLE_LOC) ELSE BROWSE NORMAL TITLE SUBSTR(THISFORM.DataSql, AT("WHERE",THISFORM.DataSql)+ 6) ENDIF IF USED("TEMPQUERY") USE IN TEMPQUERY ENDIF IF USED(lcOldAlias) SELECT (lcOldAlias) ENDIF Form1.PageFrame1.Page3.cmdClear.Click THISFORM.ClearSQL Form1.FormExit.Click thisform.release Main Menu LPARAMETERS oFormRef, getMenuName, lUniquePopups, parm4, parm5, parm6, parm7, parm8, parm9 LOCAL cMenuName, nTotPops, a_menupops, cTypeParm2, cSaveFormName IF TYPE("m.oFormRef") # "O" OR; LOWER(m.oFormRef.BaseClass) # 'form' OR; m.oFormRef.ShowWindow # 2 MESSAGEBOX([This menu can only be called from a Top-Level form. Ensure that your form's ShowWindow property is set to 2. Read the header section of the menu's MPR file for more details.]) RETURN ENDIF m.cTypeParm2 = TYPE("m.getMenuName") m.cMenuName = SYS(2015) m.cSaveFormName = m.oFormRef.Name IF m.cTypeParm2 = "C" OR (m.cTypeParm2 = "L" AND m.getMenuName) m.oFormRef.Name = m.cMenuName ENDIF IF m.cTypeParm2 = "C" AND!EMPTY(m.getMenuName) m.cMenuName = m.getMenuName ENDIF DIMENSION a_menupops[3] IF TYPE("m.lUniquePopups")="L" AND m.lUniquePopups FOR nTotPops = 1 TO ALEN(a_menupops) a_menupops[m.nTotPops]= SYS(2015) ENDFOR ELSE a_menupops[1]="file" a_menupops[2]="edit" a_menupops[3]="help" ENDIF LOCAL lHasNewMenu lHasNewMenu = (TYPE("CNTPAD(m.cMenuName)") # "N") IF m.lHasNewMenu DEFINE MENU (m.cMenuName) IN (m.oFormRef.Name) BAR ENDIF DEFINE PAD _03s1d879u OF (m.cMenuName) PROMPT "\ KEY ALT+F, "" DEFINE PAD _03s1d879v OF (m.cMenuName) PROMPT "\ KEY ALT+E, "" DEFINE PAD _03s1d879w OF (m.cMenuName) PROMPT "\ KEY ALT+Q, "" DEFINE PAD _03s1d879x OF (m.cMenuName) PROMPT "\ KEY ALT+H, "" ON PAD _03s1d879u OF (m.cMenuName) ACTIVATE POPUP (a_menupops[1]) ON PAD _03s1d879v OF (m.cMenuName) ACTIVATE POPUP (a_menupops[2]) ON SELECTION PAD _03s1d879w OF (m.cMenuName); DO _03s1d879z; IN LOCFILE("MY\MENU1","MPX;MPR|FXP;PRG","WHERE is MENU1?") ON PAD _03s1d879x OF (m.cMenuName) ACTIVATE POPUP (a_menupops[3]) DEFINE POPUP (a_menupops[1]) MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF (a_menupops[1]) PROMPT "\ MESSAGE "Выход из программы" ON SELECTION BAR 1 OF (a_menupops[1]); DO _03s1d87a4; IN LOCFILE("MY\MENU1","MPX;MPR|FXP;PRG","WHERE is MENU1?") DEFINE POPUP (a_menupops[2]) MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF (a_menupops[2]) PROMPT "\ DEFINE BAR 2 OF (a_menupops[2]) PROMPT "\ DEFINE BAR 3 OF (a_menupops[2]) PROMPT "\ ON SELECTION BAR 1 OF (a_menupops[2]); DO _03s1d87a6; IN LOCFILE("MY\MENU1","MPX;MPR|FXP;PRG","WHERE is MENU1?") ON SELECTION BAR 2 OF (a_menupops[2]); DO _03s1d87a8; IN LOCFILE("MY\MENU1","MPX;MPR|FXP;PRG","WHERE is MENU1?") ON SELECTION BAR 3 OF (a_menupops[2]); DO _03s1d87aa; IN LOCFILE("MY\MENU1","MPX;MPR|FXP;PRG","WHERE is MENU1?") DEFINE POPUP (a_menupops[3]) MARGIN RELATIVE SHADOW COLOR SCHEME 4 DEFINE BAR 1 OF (a_menupops[3]) PROMPT "\ ON SELECTION BAR 1 OF (a_menupops[3]); DO _03s1d87ac; IN LOCFILE("MY\MENU1","MPX;MPR|FXP;PRG","WHERE is MENU1?") ACTIVATE MENU (m.cMenuName) NOWAIT IF m.cTypeParm2 = "C" m.getMenuName = m.cMenuName m.oFormRef.Name = m.cSaveFormName ENDIF PROCEDURE _03s1d879z mainform.pageframe1.Activepage = 3 PROCEDURE _03s1d87a4 mainform.release PROCEDURE _03s1d87a6 mainform.pageframe1.Activepage = 2 mainform.pageframe1.page2.commandgroup1.command4.Click() PROCEDURE _03s1d87a8 mainform.pageframe1.Activepage = 2 mainform.pageframe1.page2.commandgroup1.command5.Click(PROCEDURE _03s1d87aa mainform.pageframe1.Activepage = 2 mainform.pageframe1.page2.commandgroup1.command3.Click PROCEDURE _03s1d87ac do form Fabout.scx 1 2 |