#include "minigui.ch" #include "tsbrowse.ch" #define CLR_PINK RGB( 255, 128, 128) #define CLR_NBLUE RGB( 128, 128, 192) #define CLR_NBROWN RGB( 130, 99, 53) #define CLR_1 RGB( 190, 215, 190 ) #define CLR_2 RGB( 230, 230, 230 ) #define CLR_3 RGB( 217, 217, 255 ) #define CLR_ELLOW1 Rgb( 128, 255, 128 ) #define CLR_ELLOW2 Rgb( 0, 217, 0 ) #define CLR_ELLOW3 Rgb( 113, 113, 0 ) #define CLR_ELLOW Rgb( 255, 255, 193 ) #define LWA_ALPHA 0x02 #define CLR_WGRAY Rgb( 210, 210, 210 ) EXTERNAL ADSKEYCOUNT , ADSGetRelKeyPos ,AdsKeyNo Func Sirie() local hw local a local b local i local abmp local ngh local sea:="" local nsea:=0 local arw local aStates:={" ","Метр ","Шт. ","Кг. ","Лист ","М/П ","Литр "} local xr:=0 local xy:=0 local tmpbrw public obrw IF IswindowDefined("SPR_SIR") DoMethod("SPR_SIR", "Restore") DoMethod("SPR_SIR", "Setfocus") if _IsControlDefined("obrw","SPR_SIR") oBrw:SetFocus() endif return nil endif if !usebase("sr",{"sr"},"s_sirec") msgstop("Не могу открыть базу") return nil endif s_sirec->(ordsetfocus("naim")) hw:=GetProperty("Form_0", "Height")-GetProperty("FORM_0", "StatusBar", "Height"); -GetMenubarHeight()-GetTitleHeight()-2*GetBorderHeight() a:=GetProperty("Form_0", "Row")+GetBorderHeight()+GetTitleHeight()+GetMenubarHeight() b:=(GetProperty("Form_0", "Width") - (GetProperty("Form_0", "Width")*0.55))/2 arw:=GetRowColExceptMain() if !empty(arw) a:=arw[1]+GetTitleHeight() b:=arw[2]+GetTitleHeight() endif DEFINE WINDOW SPR_SIR AT a , b WIDTH WidthWindow_MyApl*0.55 HEIGHT hw TITLE "Справочник сырья" CHILD ; ICON "AMAINICON" ; NOMAXIMIZE ; NOSIZE ; ON RELEASE {||Closebase({"s_sirec"}) } ; ON INTERACTIVECLOSE {|| .t.} ; ON GOTFOCUS {|| oBrw:SetFocus(),obrw:Refresh(.f.) ,Mcargo:=_HMG_ThisFormName } DEFINE TBROWSE oBrw AT 40,0 ALIAS "s_sirec" ; OF SPR_SIR WIDTH SPR_SIR.WIDTH-2*GetBorderWidth() ; HEIGHT SPR_SIR.HEIGHT-GetTitleHeight()-2*GetBorderHeight()-50-40 ; FONT "Lucida Console" SIZE 10 LoadFields("obrw","SPR_SIR",.t.,{"id","naim","ed","cod"}) oBrw:SetColSize( 1, 50 ) oBrw:aColumns[1]:lEdit := FALSE oBrw:aColumns[ 1 ]:cHeading :="ID" oBrw:aColumns[ 1 ]:cPicture :="@Z 99999" oBrw:aColumns[ 2 ]:cHeading :="Наименование" oBrw:aColumns[ 2 ]:cPicture:=repl("x",60) oBrw:aColumns[ 3 ]:cHeading :="Ед.изм" oBrw:aColumns[ 3 ]:cPicture :=repl("x",5) oBrw:SetData( 3,NIL , astates ) oBrw:aColumns[3]:bEditing := { |uVar,oBr| oBr:aColumns[oBr:nCell]:oEdit:LButtonDown() } oBrw:aColumns[3]:bEditEnd := { |uVal,oBr,lSave| Save_ed(uVal,oBr,lSave) } oBrw:SetColSize( 3, 70 ) oBrw:bGotFocus:={|| obrw:Refresh(.t.),obrw:setfocus()} oBrw:aColumns[ 4 ]:cHeading :="Код"+CRLF+"склада" oBrw:aColumns[ 4 ]:cPicture :="@Z 99999" ADD COLUMN TO obrw HEADER "Остаток" SIZE 100 DATA {|| 0 } oBrw:aColumns[ 5 ]:cPicture :="@Z 99999.999" for i := 1 To oBrw:nColCount() oBrw:aColumns[ i ]:nEditMove := DT_DONT_MOVE oBrw:aColumns[ i ]:lFixLite := TRUE next obrw:GetColumn("naim"):bPrevEdit := { |a, b, lLock| If( lLock := (b:cAlias)->(RLock()), (b:cAlias)->(dbUnLock()), Msgstop("Запись заблокирована","Внимание")), lLock } obrw:GetColumn("cod"):bPrevEdit := { |a, b, lLock| If( lLock := (b:cAlias)->(RLock()), (b:cAlias)->(dbUnLock()), Msgstop("Запись заблокирована","Внимание") ), lLock } obrw:GetColumn("ed"):bPrevEdit := { |a, b, lLock| If( lLock := (b:cAlias)->(RLock()), (b:cAlias)->(dbUnLock()), Msgstop("Запись заблокирована","Внимание") ), lLock } obrw:nWheelLines := 2 obrw:nClrLine := COLOR_GRID obrw:SetAppendMode( .F. ) obrw:SetDeleteMode( .t.,.f.,{|| msgokCancel("Удалить "+alltrim((obrw:cAlias)->naim)+CRLF+"с ID "+ntoc((obrw:cAlias)->id)+" ?","Внимание")} ) obrw:lNoHScroll := .f. obrw:lCellBrw := .T. obrw:nfreeze:=1 obrw:lNoChangeOrd := .f. obrw:nHeightCell += 5 obrw:nHeightHead += 6 obrw:lLockFreeze := .t. obrw:lCellBrw := .t. obrw:nAdjColumn := 2 obrw:Set3DText( .T., .t.,, 2 ) obrw:lNoMoveCols:=.t. obrw:bOnEscape := {|| DoMethod(oBrw:cParentWnd, "Release") } oBrw:bUserKeys := {|nKey,nFlg,oBr| UserKeys(nKey, nFlg, oBr) } oBrw:SetColor( { 1 ,2}, { CLR_BLACK ,rgb(255,255,206) } ) oBrw:SetColor( { 2 }, { {|| if((obrw:cAlias)->lc,RGB(130,255,130),rgb(255,255,206)) } },1) oBrw:SetColor( { 5 }, { { || { Rgb( 66, 255, 236 ), Rgb( 11, 183, 155 )}}} ) oBrw:SetColor( { 6 }, { { |a,b,c| IF( c:nCell == b,; {RGB( 255, 255, 0 ), RGB( 210, 210, 0 )},; { Rgb( 198, 226, 255 ), Rgb( 159, 207, 255 ) } ) } } ) oBrw:SetColor( { 6 }, { { |a,b,c| -RGB(117,0,234) } },1) oBrw:cToolTip := {|oBr, nCol, nRow| if(obr:nrowpos==nrow,"Удаление записи , добавить новую запись , отметка ( правая кнопка мышки )","") } END TBROWSE tmpbrw:=TBrw_Obj( "obrw", ThisWindow.name ) xr:=ThisWindow.HEIGHT-GetTitleHeight()-2*GetBorderHeight()-40 xy:=4 DEFINE BUTTONeX Button_1 ROW xr COL xy WIDTH 120 HEIGHT 35 CAPTION "Добавить (Ins)" ACTION {|| if(msgokCancel("Добавить новую запись ?","Внимание"),addrecs(tmpbrw,"ID"),),tmpbrw:SetFocus() } FONTNAME "Arial" FONTSIZE 9 TOOLTIP "Добавить новую запись" FONTBOLD .t. FONTITALIC .F. FONTUNDERLINE .F. FONTSTRIKEOUT .F. ONGOTFOCUS Nil ONLOSTFOCUS Nil HELPID Nil FLAT .F. TABSTOP .T. VISIBLE .T. TRANSPARENT .t. Picture "new" END BUTTONEX xy+=getproperty(ThisWindow.name,"Button_1","Width")+11 DEFINE BUTTONeX Button_2 ROW xr COL xy//135 WIDTH 120 HEIGHT 35 CAPTION "Удалить (Del)" ACTION {|| tmpbrw:deleterow(),tmpbrw:SetFocus() } FONTNAME "Arial" FONTSIZE 9 TOOLTIP "Удалить запись" FONTBOLD .t. FONTITALIC .F. FONTUNDERLINE .F. FONTSTRIKEOUT .F. ONGOTFOCUS Nil ONLOSTFOCUS Nil HELPID Nil FLAT .F. TABSTOP .T. VISIBLE .T. TRANSPARENT .t. Picture "cancel" END BUTTONEX xy+=getproperty(ThisWindow.name,"Button_2","Width")+11 DEFINE BUTTONeX Button_3 ROW xr COL xy WIDTH 120 HEIGHT 35 CAPTION "Изменить (F4)" ACTION {|| tmpbrw:SetFocus() ,_PushKey(VK_SPACE)} FONTNAME "Arial" FONTSIZE 9 TOOLTIP "Изенить ячейку" FONTBOLD .t. FONTITALIC .F. FONTUNDERLINE .F. FONTSTRIKEOUT .F. ONGOTFOCUS Nil ONLOSTFOCUS Nil HELPID Nil FLAT .F. TABSTOP .T. VISIBLE .T. TRANSPARENT .t. ICON "edit2" END BUTTONEX xy+=getproperty(ThisWindow.name,"Button_3","Width")+20 DEFINE BUTTONeX Button_4 ROW xr COL xy WIDTH 28 HEIGHT 28 ACTION {|| tmpbrw:GoDown(),tmpbrw:SetFocus() } TOOLTIP "На запись вперед" FLAT .t. TABSTOP .T. VISIBLE .T. TRANSPARENT .t. icon "skipf" END BUTTONEX xy+=getproperty(ThisWindow.name,"Button_4","Width") DEFINE BUTTONeX Button_5 ROW xr COL xy WIDTH 28 HEIGHT 28 ACTION {|| tmpbrw:Refresh(),tmpbrw:SetFocus() } TOOLTIP "Освежить таблицу" FLAT .t. TABSTOP .T. VISIBLE .T. TRANSPARENT .t. icon "ref" END BUTTONEX xy+=getproperty(ThisWindow.name,"Button_5","Width") DEFINE BUTTONeX Button_6 ROW xr COL xy WIDTH 28 HEIGHT 28 ACTION {|| tmpbrw:Goup(), tmpbrw:SetFocus() } TOOLTIP "На запись назад" FLAT .t. TABSTOP .T. VISIBLE .T. TRANSPARENT .t. icon "skipb" END BUTTONEX DEFINE LABEL Message ROW 1 COL 1 WIDTH obrw:aColumns[2]:nwidth*0.75 HEIGHT 16 VALUE 'Поиск по названию' FONTBOLD .T. CENTERALIGN .T. END LABEL DEFINE LABEL Message1 ROW 1 COL obrw:aColumns[2]:nwidth+obrw:aColumns[1]:nwidth+2 WIDTH obrw:aColumns[3]:nwidth+obrw:aColumns[4]:nwidth/2 HEIGHT 16 VALUE 'Поиск кода' FONTBOLD .T. CENTERALIGN .T. END LABEL @ 18, 1 BTNTEXTBOX Text_1 WIDTH obrw:aColumns[2]:nwidth*0.75 ; HEIGHT 20 VALUE sea FONT "Lucida Console" SIZE 10 ; ACTION {|| Nsea( SPR_SIR.Text_1.Value,obrw,"naim" ),obrw:setfocus() } ; ON ENTER {|| Nsea( SPR_SIR.Text_1.Value,obrw,"naim"), Domethod( "SPR_SIR", "Text_1", "Setfocus")} ; PICTURE "find" BUTTONWIDTH 20 TOOLTIP "Поиск вхождения строки в наименование"; BACKCOLOR {{255,255,255},{255,255,200},{200,255,255}} ; FONTCOLOR {{0,0,0},{255,255,200},{0,0,255}} @ 18, obrw:aColumns[2]:nwidth+obrw:aColumns[1]:nwidth+2 ; BTNTEXTBOX Text_2 WIDTH obrw:aColumns[3]:nwidth+obrw:aColumns[4]:nwidth/2 ; HEIGHT 20 VALUE sea FONT "Lucida Console" SIZE 10 ; ACTION {|| if(codsea( SPR_SIR.Text_2.Value,obrw,"cod" ) ,eval( {||_pushkey( VK_TAB ) ,setproperty( "SPR_SIR", "obrw", "Setfocus")}),)} ; NUMERIC ; ON ENTER {|| if(codsea( SPR_SIR.Text_2.Value,obrw,"cod" ) ,setproperty( "SPR_SIR", "obrw", "Setfocus"),Domethod( "SPR_SIR", "Text_2", "Setfocus") )};//, Domethod( "SPR_SIR", "Text_2", "Setfocus")} ; PICTURE "find" BUTTONWIDTH 20 TOOLTIP "Точный поиск по коду" ; BACKCOLOR {{255,255,255},{255,255,200},{200,255,255}} ; FONTCOLOR {{0,0,0},{255,255,200},{0,0,255}} DEFINE CONTEXT MENU CONTROL oBrw MENUITEM "Добавить новую запись" ACTION {|| if(msgokCancel("Добавить новую запись ?","Внимание"),addrecs(obrw,"ID"),),oBrw:SetFocus() } IMAGE "new" MENUITEM "Удалить текущую запись" ACTION {|| obrw:deleterow() } IMAGE "cancel" SEPARATOR MENUITEM "Пометка (снять/поставить)" ACTION { || Otmet(obrw) } END MENU END WINDOW DoMethod(oBrw:cParentWnd, oBrw:cControlName, "SetFocus") ACTIVATE WINDOW SPR_SIR SetfocusChild() return nil
|