Inscription over the DCBROWSE window with data from DCADDBUT
Posted: Wed Aug 22, 2012 1:16 am
				
				Prompt how to make, please, an inscription over the DCBROWSE window with data which are formed by a call of the function which has been set in DCADDBUTTON:

			Code: Select all
/* ----- Create ToolBar ----- */
@ 28.5, 0 DCTOOLBAR oToolBar SIZE 133, 1.5
K=4.15
DCADDBUTTON CAPTION 'Помощь'                       ;
   SIZE K+LEN("Помощь")                            ;
   ACTION {||Help4_2_1(), DC_GetRefresh(GetList)}  ;
   PARENT oToolBar                                 ;
   TOOLTIP 'Помощь по режиму 4.2.1'
DCADDBUTTON CAPTION Ar_Model[1]                    ;
   SIZE K+LEN(Ar_Model[1])                         ;
   ACTION {||InfPortCls1(), DC_GetRefresh(GetList)};
   PARENT oToolBar                                 ;
   TOOLTIP 'Генерация информационного портрета в модели: '+Ar_Model[1]
DCADDBUTTON CAPTION Ar_Model[2]                    ;
   SIZE K+LEN(Ar_Model[2])                         ;
   ACTION {||InfPortCls2(), DC_GetRefresh(GetList)};
   PARENT oToolBar                                 ;
   TOOLTIP 'Генерация информационного портрета в модели: '+Ar_Model[2]
DCADDBUTTON CAPTION Ar_Model[3]                    ;
   SIZE K+LEN(Ar_Model[3])                         ;
   ACTION {||InfPortCls3(), DC_GetRefresh(GetList)};
   PARENT oToolBar                                 ;
   TOOLTIP 'Генерация информационного портрета в модели: '+Ar_Model[3]
DCADDBUTTON CAPTION Ar_Model[4]                    ;
   SIZE K+LEN(Ar_Model[4])                         ;
   ACTION {||InfPortCls4(), DC_GetRefresh(GetList)};
   PARENT oToolBar                                 ;
   TOOLTIP 'Генерация информационного портрета в модели: '+Ar_Model[4]
DCADDBUTTON CAPTION Ar_Model[5]                    ;
   SIZE K+LEN(Ar_Model[5])                         ;
   ACTION {||InfPortCls5(), DC_GetRefresh(GetList)};
   PARENT oToolBar                                 ;
   TOOLTIP 'Генерация информационного портрета в модели: '+Ar_Model[5]
DCADDBUTTON CAPTION Ar_Model[6]                    ;
   SIZE K+LEN(Ar_Model[6])                         ;
   ACTION {||InfPortCls6(), DC_GetRefresh(GetList)};
   PARENT oToolBar                                 ;
   TOOLTIP 'Генерация информационного портрета в модели: '+Ar_Model[6]
DCADDBUTTON CAPTION Ar_Model[7]                    ;
   SIZE K+LEN(Ar_Model[7])                         ;
   ACTION {||InfPortCls7(), DC_GetRefresh(GetList)};
   PARENT oToolBar                                 ;
   TOOLTIP 'Генерация информационного портрета в модели: '+Ar_Model[7]
DCADDBUTTON CAPTION Ar_Model[8]                    ;
   SIZE K+LEN(Ar_Model[8])                         ;
   ACTION {||InfPortCls8(), DC_GetRefresh(GetList)};
   PARENT oToolBar                                 ;
   TOOLTIP 'Генерация информационного портрета в модели: '+Ar_Model[8]
DCADDBUTTON CAPTION Ar_Model[9]                    ;
   SIZE K+LEN(Ar_Model[9])                         ;
   ACTION {||InfPortCls9(), DC_GetRefresh(GetList)};
   PARENT oToolBar                                 ;
   TOOLTIP 'Генерация информационного портрета в модели: '+Ar_Model[9]
DCADDBUTTON CAPTION Ar_Model[10]                   ;
   SIZE K+LEN(Ar_Model[10])                        ;
   ACTION {||InfPortCls10(), DC_GetRefresh(GetList)};
   PARENT oToolBar                                 ;
   TOOLTIP 'Генерация информационного портрета в модели: '+Ar_Model[10]
DCADDBUTTON CAPTION 'MS Excel'                     ;
   SIZE K+LEN("MS Excel")                          ;
   ACTION {||Help4_2_1(), DC_GetRefresh(GetList)}  ;
   PARENT oToolBar                                 ;
   TOOLTIP 'Экспорт инф.портрета в MS Excel'
DCADDBUTTON CAPTION 'MS Word'                      ;
   SIZE K+LEN("MS Word")                           ;
   ACTION {||Help4_2_1(), DC_GetRefresh(GetList)}  ;
   PARENT oToolBar                                 ;
   TOOLTIP 'Экспорт инф.портрета в MS Word'
DCADDBUTTON CAPTION 'МультиРежим'                  ;
   SIZE K+LEN("МультиРежим")                       ;
   ACTION {||Help4_2_1(), DC_GetRefresh(GetList)}  ;
   PARENT oToolBar                                 ;
   TOOLTIP 'Задание на формирование и формирование инф.портретов'
@ 1,51 DCSAY MessIPC
/* ----- Create browse Classes ----- */
@ 2, 0 DCBROWSE oBrowse ALIAS 'Classes' SIZE 48.8,26   ;
       PRESENTATION aPres                             ;
DCBROWSECOL FIELD Classes->Kod_cls  HEADER "Код"                 PARENT oBrowse WIDTH 5 
DCBROWSECOL FIELD Classes->Name_cls HEADER "Наименование класса" PARENT oBrowse WIDTH 23
DCBROWSECOL FIELD Classes->Int_inf  HEADER "Редукция класса"     PARENT oBrowse WIDTH 3 
DCBROWSECOL FIELD Classes->Abs      HEADER "N объектов (абс.)"   PARENT oBrowse WIDTH 3 
DCBROWSECOL FIELD Classes->Perc_fiz HEADER "N объектов (%)"      PARENT oBrowse WIDTH 3 
/* ----- Create browse InfPortCls ----- */
PRIVATE bColorBlockZn:={|| iif(InfPortCls->Znach>0,{GRA_CLR_RED,nil},iif(InfPortCls->Znach=0,{GRA_CLR_BLACK,nil},{GRA_CLR_BLUE,nil})) }  // Клиффорд
@ 2,51 DCBROWSE oBrowIpc ALIAS 'InfPortCls' SIZE 82,26 ;
       PRESENTATION aPres                                       ;
DCSETPARENT oBrowIpc
   DCBROWSECOL FIELD InfPortCls->KOD_pr HEADER 'Код'                   WIDTH 5
   DCBROWSECOL FIELD InfPortCls->NAME   HEADER 'Наименование признака' WIDTH 37
   DCBROWSECOL DATA {|x|x:=InfPortCls->Znach,IIF(Empty(x),'',Str(x,8,3))} HEADER "Значимость" FONT "9.Courier" COLOR bColorBlockZn
DCGETOPTIONS TABSTOP
DCREAD GUI ;
   OPTIONS GetOptions ;
   MODAL ;
   TITLE MessIPC;
   FIT ;
   CLEAREVENTS
CLOSE ALL
DIRCHANGE(Disk_dir)   // Перейти в папку с исполнимым модулем системы
ReTURN nil
***********************************************************************************************************************
********************
FUNCTION Help4_2_1()
ReTURN nil
********************
******** Определение типа модели и обращение к функции с параметром, работающей со всеми моделями
FUNCTION InfPortCls1()
   InfPortCls(1)
ReTURN nil
FUNCTION InfPortCls2()
   InfPortCls(2)
ReTURN nil
FUNCTION InfPortCls3()
   InfPortCls(3)
ReTURN nil
FUNCTION InfPortCls4()
   InfPortCls(4)
ReTURN nil
FUNCTION InfPortCls5()
   InfPortCls(5)
ReTURN nil
FUNCTION InfPortCls6()
   InfPortCls(6)
ReTURN nil
FUNCTION InfPortCls7()
   InfPortCls(7)
ReTURN nil
FUNCTION InfPortCls8()
   InfPortCls(8)
ReTURN nil
FUNCTION InfPortCls9()
   InfPortCls(9)
ReTURN nil
FUNCTION InfPortCls10()
   InfPortCls(10)
ReTURN nil
******** Генерация информационного портрета в модели: Ar_Model[M_CurrInf]
******** для класса, на котором стоит курсор в БД Classes.dbf
FUNCTION InfPortCls(M_CurrInf)
SELECT Classes
M_Recno   = RECNO()
M_KodCls  = Kod_cls
M_NameCls = Name_cls
PUBLIC MessIPC := 'Класс: '+ALLTRIM(STR(M_KodCls, 15))+' "'+ALLTRIM(M_NameCls)+'". Модель: '+ALLTRIM(STR(M_CurrInf, 15))+' "'+Ar_Model[M_CurrInf]
*MsgBox(MessIPC)
SELECT (Ar_Model[M_CurrInf])
INDEX ON STR(9999999999.9999999-FIELDGET(2+M_KodCls),19, 7) TO (Ar_Model[M_CurrInf])
*            123456789012345678
*            12345678901.123456
*                     10       19
// Заполнить БД InfPortCls записями с кодами и наименованиями признаков и их значимостью
// взяв из (Ar_Model[M_CurrInf]) поровну записей с начала и с конца, но не более 13
SELECT InfPortCls;ZAP
SELECT (Ar_Model[M_CurrInf])
N_Gos = RECCOUNT()
N_pr  = IF(N_Gos/2 <= 7, N_Gos/2, 7)
// Сначала скопировать все записи в отсортированном порядке,
// а потом, если N_Gos > 2*N_pr, удалить столько наименее значимых, чтобы осталось 2*N_pr
DBGOTOP()
N = 0
DO WHILE .NOT. EOF()
   M_KodPr = Kod_pr
   M_Name  = Name
   M_Znach = FIELDGET(2+M_KodCls)
   IF M_KodPr > 0 .AND. M_Znach <> 0
      SELECT InfPortCls
      APPEND BLANK
      REPLACE Kod_pr WITH M_KodPr
      REPLACE Name   WITH M_Name
      REPLACE Znach  WITH M_Znach
   ENDIF
   ++N
   SELECT (Ar_Model[M_CurrInf])
   DBSKIP(1)
ENDDO
IF N_Gos > 2*N_pr
   N_del = N_Gos-2*N_pr
   // Удалить N_del наименее значимых записей
   SELECT InfPortCls
   INDEX ON STR(ABS(Znach),19, 7) TO (Ar_Model[M_CurrInf]+"z")
   DBGOTOP()
   N = 0
   DO WHILE .NOT. EOF() .AND. N <= N_Del
      DELETE
      ++N
      DBSKIP(1)
   ENDDO
   PACK
ENDIF
SELECT InfPortCls
DBGOTOP()
ReTURN(MessIPC)
