*-------------------------------------------------------------------------------------------------------------------------------------------------------- * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- *< FOXBIN2PRG: Version="1.21" SourceFile="ocriterii.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * * DEFINE CLASS _ccriteriu AS container *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="Combo1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lbl_Criteriu" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lbl_logic" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cmd_del" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Command1" UniqueID="" Timestamp="" /> * *m: deleteobj *p: classid *p: codcriteriu *p: criteriu_nr *p: idcamp *p: idvalue *p: keynomenclator *p: logic *p: negat *p: numecriteriu *p: tip *p: _memberdata && XML Metadata for customizable properties * * BackStyle = 0 BorderWidth = 0 classid = codcriteriu = none criteriu_nr = 0 Height = 20 idcamp = idvalue = keynomenclator = .F. logic = Name = "_ccriteriu" negat = .F. numecriteriu = TabIndex = 99 tip = Width = 490 _memberdata = * ADD OBJECT 'cmd_del' AS label WITH ; BackColor = 255,0,0, ; BackStyle = 0, ; Caption = "X", ; FontBold = .F., ; FontSize = 12, ; FontUnderline = .F., ; ForeColor = 0,0,164, ; Height = 21, ; Left = 479, ; MousePointer = 15, ; Name = "cmd_del", ; StatusBarText = "Sterge elementul din lista de criterii", ; TabIndex = 6, ; Top = 1, ; Width = 12 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'Combo1' AS combobox WITH ; DisabledBackColor = 171,177,201, ; DisabledForeColor = 96,124,159, ; DisplayCount = 8, ; Height = 20, ; Left = 195, ; Name = "Combo1", ; NumberOfElements = 8, ; RowSource = "Incepe cu,este,nu este,contine,nu contine,nu are valori,are valori,alege", ; RowSourceType = 1, ; SpecialEffect = 1, ; Style = 2, ; TabIndex = 2, ; Top = 0, ; Width = 92 *< END OBJECT: BaseClass="combobox" /> ADD OBJECT 'Command1' AS commandbutton WITH ; BackColor = 255,255,255, ; Caption = "", ; Height = 20, ; Left = 449, ; Name = "Command1", ; SpecialEffect = 1, ; Style = 0, ; TabIndex = 3, ; TabStop = .F., ; Top = 0, ; Visible = .F., ; Width = 25 *< END OBJECT: BaseClass="commandbutton" /> ADD OBJECT 'lbl_Criteriu' AS label WITH ; BackStyle = 0, ; Caption = "lbl_Criteriu", ; Height = 15, ; Left = 28, ; Name = "lbl_Criteriu", ; TabIndex = 4, ; Top = 5, ; Width = 128 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'lbl_logic' AS label WITH ; Alignment = 1, ; BackStyle = 0, ; Caption = "Label1", ; Height = 17, ; Left = 2, ; Name = "lbl_logic", ; TabIndex = 5, ; Top = 5, ; Width = 24 *< END OBJECT: BaseClass="label" /> ADD OBJECT 'Text1' AS textbox WITH ; DisabledBackColor = 171,177,201, ; DisabledForeColor = 0,0,0, ; Format = "!k", ; Height = 20, ; InputMask = "", ; Left = 292, ; Name = "Text1", ; SpecialEffect = 1, ; TabIndex = 1, ; Top = 0, ; Width = 154 *< END OBJECT: BaseClass="textbox" /> PROCEDURE deleteobj this.Parent.parent.SelectorCriteriu.combo1.setfocus() CurrentObjectNumber=VAL(ALLTRIM(SUBSTR(this.Name,9))) this.Tag="Sters" lnDeletedHeight =this.Height + 10 this.Parent.parent.CurrentHeight=this.Parent.Parent.CurrentHeight - lnDeletedHeight this.Height=0 FOR n=CurrentObjectNumber TO this.Parent.Parent.nr_criterii ObjectName="Criteriu"+TRANSFORM(n) this.Parent.&ObjectName..top=this.Parent.&ObjectName..top-lnDeletedHeight ENDFOR lnSpeciale=0 FOR n=1 TO this.Parent.Parent.nr_criterii ObjectName="Criteriu"+TRANSFORM(n) IF this.Parent.&ObjectName..tag#"GroupOpen" and this.Parent.&ObjectName..tag#"GroupClose" IF this.Parent.&ObjectName..codcriteriu#"none" AND this.Parent.&ObjectName..Tag#"Sters" lnSpeciale=lnSpeciale+1 ENDIF *!* FOR n = 1 TO ALEN(this.acriterii,1) *!* lctestText=this.acriterii(n,1) *!* lbExists=.F. *!* FOR x=1 TO this.Parent.nr_criterii *!* ObjectName="Criteriu"+Transform(x) *!* IF this.Parent.&ObjectName..Tag#"GroupOpen" AND this.Parent.&ObjectName..Tag#"GroupClose" AND this.Parent.&ObjectName..Tag#"Sters" *!* IF this.Parent.&ObjectName..numecriteriu=lctestText *!* lbExists=.T. *!* ENDIF *!* ENDIF *!* ENDFOR *!* IF lbExists *!* this.combo1.AddItem("\]"+this.acriterii(n,1),n,1) *!* ELSE *!* this.combo1.AddItem(this.acriterii(n,1),n,1) *!* ENDIF *!* ENDFOR lbExists=.F. FOR lncriterii=1 TO this.Parent.Parent.nr_criterii ObjectName="Criteriu"+Transform(lncriterii) IF this.Parent.&ObjectName..Tag#"GroupOpen" AND this.Parent.&ObjectName..Tag#"GroupClose" AND this.Parent.&ObjectName..Tag#"Sters" IF this.Parent.&ObjectName..numecriteriu=this.numecriteriu lbExists=.T. ENDIF ENDIF ENDFOR IF this.tip="E" FOR EACH ITEM IN this.parent.parent.CONTROLS IF LEFT(LOWER(ITEM.NAME),12) = "lbl_criteriu" IF item.caption=this.numecriteriu AND NOT lbExists ITEM.forecolor=RGB(0,0,0) ITEM.stare="" ITEM.mousepointer=15 item.fontbold=.f. ENDIF ENDIF ENDFOR ENDIF FOR EACH ITEM IN this.parent.parent.CONTROLS IF LEFT(LOWER(ITEM.NAME),12) = "lbl_criteriu" IF item.caption=this.numecriteriu AND NOT lbExists ITEM.forecolor=RGB(0,0,0) ENDIF ENDIF ENDFOR ENDIF ENDFOR IF lnSpeciale>0 ELSE ACOPY(this.Parent.parent.SelectorCriteriu.acriterii,temparray) this.Parent.parent.SelectorCriteriu.loadarray(@temparray) ENDIF this.Parent.do_refresh ENDPROC PROCEDURE Init Lparameters criteriu,logic,optiuni,lcKeyNomenclator,tctip,tnId,tcValoare This.Visible= .F. lcTip = tctip If At('|', lcTip) > 0 lcTip = Left(lcTip, At('|', lcTip) -1) Endif This.tip=lcTip This.logic=logic This.lbl_Logic.Caption=Lower(This.logic) This.numecriteriu=criteriu This.lbl_Criteriu.Caption=Lower(This.numecriteriu) If This.Parent.offset>10 This.Top=This.Parent.Parent.currentHeight - This.Parent.offset Else This.Top=This.Parent.Parent.currentHeight Endif If optiuni#"Disabled" This.combo1.RowSource=optiuni Else This.combo1.RowSource="" This.combo1.Enabled= .F. This.text1.Enabled= .F. Endif This.combo1.ListIndex=1 *!* THIS.text1.SETFOCUS Do Case Case lcTip = "D1" This.text1.InputMask="99/99999" Case lcTip = "D" This.text1.Value={} *!* THIS.text1.INPUTMASK="99/99/9999" Case lcTip = "N" lcEvalInputmask = Iif(At('|', tctip) > 0, Substr(tctip,At('|', tctip)+1),'') If !Empty(lcEvalInputmask) lcInputMask = Strtran(Evaluate(lcEvalInputmask), ' ', '') Else lcInputMask = "9999999999999999" Endif This.text1.Format = "RK" This.text1.InputMask = lcInputMask This.text1.Value = 0 Endcase If lcKeyNomenclator#"none" This.KeyNomenclator=lcKeyNomenclator This.combo1.AddItem("Lista...") This.command1.Visible= .T. This.command1.Picture="find1.bmp" Else This.command1.Visible= .F. Endif If lcTip="I" This.combo1.RowSource="" This.combo1.RemoveItem(1) This.text1.Enabled= .F. This.combo1.Enabled= .F. This.command1.Visible= .T. This.Refresh() This.Parent.Refresh() *!* modificare ROAGEST v 2.0.55 If Isnull(tnId) *!* modificare ROAGEST v 2.0.55 ^ ** APEL CAUTA_ALFA ** ================================================== loHash = Thisform.loCol(This.KeyNomenclator) loCauta = cauta_alfa_hash(loHash) lcVarText = "loCauta." + Alltrim(loHash.getValue("cresultcoloana")) lcVarId = "loCauta." + Alltrim(loHash.getValue("cidcoloana")) If !Isnull(loCauta) If !Empty(&lcVarText) This.idValue=Alltrim(Transform(Evaluate(lcVarId))) This.text1.Value=Alltrim(Transform(Evaluate(lcVarText))) Endif Endif ** ** ================================================== *!* modificare ROAGEST v 2.0.55 Endif *!* modificare ROAGEST v 2.0.55 ^ Endif *!* modificare ROAGEST v 2.0.55 If !Isnull(tcValoare) Do case Case lcTip = "D" This.text1.Value = Ctod(tcValoare) Case lcTip = "N" This.text1.Value = val(tcValoare) Otherwise This.text1.Value = tcValoare Endcase Endif If !Isnull(tnId) This.idValue = Alltrim(Str(tnId)) Endif *!* modificare ROAGEST v 2.0.55 ^ This.Parent.Refresh() ENDPROC PROCEDURE cmd_del.Click this.Parent.deleteobj() ENDPROC PROCEDURE cmd_del.MouseEnter LPARAMETERS nButton, nShift, nXCoord, nYCoord this.ForeColor=RGB(0,0,255) this.FontBold=.T. this.FontUnderline=.t. ENDPROC PROCEDURE cmd_del.MouseLeave LPARAMETERS nButton, nShift, nXCoord, nYCoord this.ForeColor=RGB(46,68,101) this.FontBold=.F. this.FontUnderline= .F. ENDPROC PROCEDURE Combo1.InteractiveChange IF THIS.LIST(THIS.LISTINDEX)="Lista..." THIS.PARENT.text1.ENABLED=.F. ** APEL CAUTA_ALFA ** ================================================== loHash = THISFORM.loCol(THIS.PARENT.keynomenclator) loCauta = cauta_alfa_hash(loHash) lcVarText = "loCauta." + ALLTRIM(loHash.getValue("cresultcoloana")) lcVarId = "loCauta." + ALLTRIM(loHash.getValue("cidcoloana")) IF !ISNULL(loCauta) IF !EMPTY(&lcVarText) THIS.PARENT.idValue=ALLTRIM(TRANSFORM(EVALUATE(lcVarId))) THIS.PARENT.text1.VALUE=ALLTRIM(TRANSFORM(EVALUATE(lcVarText))) ELSE THIS.PARENT.text1.VALUE="" THIS.PARENT.combo1.LISTINDEX=1 ENDIF ENDIF ENDIF IF THIS.LIST(THIS.LISTINDEX)#"Lista..." THIS.PARENT.text1.ENABLED=.T. THIS.PARENT.idValue="" ENDIF IF THIS.PARENT.codcriteriu#"none" ALINES(temparray,ALLTRIM(THIS.PARENT.text1.VALUE),1,',') THIS.PARENT.codcriteriu=temparray(THIS.LISTINDEX) ENDIF ENDPROC PROCEDURE Combo1.KeyPress LPARAMETERS nKeyCode, nShiftAltCtrl LOCAL lcTip, nrCriteriu, nrCriteriuNext, lnNrTotalCriterii, loCriteriuUrmator, llExistaCriteriuUrmator nrCriteriu = VAL(SUBSTR(THIS.PARENT.NAME,9)) nrCriteriuNext = nrCriteriu+1 CriteriuNext="Criteriu"+ALLTRIM(STR(nrCriteriuNext)) lnNrTotalCriterii = THIS.PARENT.PARENT.PARENT.nr_criterii loCriteriuUrmator = NULL IF INLIST(nKeyCode, 9, 13) && CAUT CRITERIUL URMATOR llExistaCriteriuUrmator = .F. FOR i = nrCriteriuNext TO lnNrTotalCriterii lcCriteriuNext = "Criteriu" + ALLTRIM(STR(i)) IF PEMSTATUS(THIS.PARENT.PARENT, lcCriteriuNext, 5) AND !INLIST(THIS.PARENT.PARENT.&lcCriteriuNext..TAG, "GroupOpen", "GroupClose", "Sters") llExistaCriteriuUrmator = .T. loCriteriuUrmator = THIS.PARENT.PARENT.&lcCriteriuNext EXIT ENDIF ENDFOR IF llExistaCriteriuUrmator && SAR PE CRITERIUL URMATOR NODEFAULT loCriteriuUrmator.text1.SETFOCUS() ELSE && NU EXISTA CRITERIUL URMATOR - SAR PE PRIMUL CRITERIU / PE BUTONUL TERMINAT NODEFAULT THIS.PARENT.PARENT.PARENT.but_termin1.SETFOCUS() IF .F. FOR i = 1 TO nrCriteriu lcCriteriu = "Criteriu" + ALLTRIM(STR(i)) IF PEMSTATUS(THIS.PARENT.PARENT, lcCriteriu, 5) IF !INLIST(THIS.PARENT.PARENT.&lcCriteriu..TAG, "GroupOpen", "GroupClose", "Sters") NODEFAULT THIS.PARENT.PARENT.&lcCriteriu..text1.SETFOCUS() EXIT ENDIF ENDIF ENDFOR ENDIF ENDIF ENDIF ENDPROC PROCEDURE Combo1.ProgrammaticChange If This.List(This.ListIndex)="Lista..." This.Parent.text1.Enabled=.F. Endif *!* If This.List(This.ListIndex)#"Lista..." *!* This.Parent.text1.Enabled=.T. *!* This.Parent.idValue="" *!* Endif If This.Parent.codcriteriu#"none" Alines(temparray,Alltrim(This.Parent.text1.Value),1,',') This.Parent.codcriteriu=temparray(This.ListIndex) Endif ENDPROC PROCEDURE Command1.Click ** APEL CAUTA_ALFA ** ================================================== loHash = Thisform.loCol(This.Parent.keynomenclator) loCauta = cauta_alfa_hash(loHash) lcVarText = "loCauta." + Alltrim(loHash.getValue("cresultcoloana")) lcVarId = "loCauta." + Alltrim(loHash.getValue("cidcoloana")) If !Isnull(loCauta) If !Empty(&lcVarText) This.Parent.idValue=Alltrim(Transform(Evaluate(lcVarId))) This.Parent.text1.Value=Alltrim(Transform(Evaluate(lcVarText))) this.Parent.text1.Enabled=.F. this.Parent.combo1.ListIndex=8 ELSE this.Parent.text1.Enabled=.T. This.Parent.text1.Value="" This.Parent.combo1.ListIndex=1 Endif Endif ENDPROC PROCEDURE Text1.InteractiveChange this.Parent.idvalue="" ENDPROC PROCEDURE Text1.KeyPress LPARAMETERS nKeyCode, nShiftAltCtrl && dau enter pe un criteriu, verific daca exista urmatorul criteriu - pun focus pe criteriul urmator LOCAL lcTip, nrCriteriu, nrCriteriuNext, lnNrTotalCriterii, loCriteriuUrmator, llExistaCriteriuUrmator nrCriteriu = VAL(SUBSTR(THIS.PARENT.NAME,9)) nrCriteriuNext = nrCriteriu+1 CriteriuNext="Criteriu"+ALLTRIM(STR(nrCriteriuNext)) lnNrTotalCriterii = THIS.PARENT.PARENT.PARENT.nr_criterii loCriteriuUrmator = NULL LOCAL lcTip lcTip = THIS.PARENT.tip IF AT('|', lcTip) > 0 lcTip = LEFT(lcTip, AT('|', lcTip) -1) ENDIF IF INLIST(nKeyCode, 9, 13) OR (lcTip = 'D1' AND this.SelStart = 7) && CAUT CRITERIUL URMATOR llExistaCriteriuUrmator = .F. FOR i = nrCriteriuNext TO lnNrTotalCriterii lcCriteriuNext = "Criteriu" + ALLTRIM(STR(i)) IF PEMSTATUS(THIS.PARENT.PARENT, lcCriteriuNext, 5) AND !INLIST(THIS.PARENT.PARENT.&lcCriteriuNext..TAG, "GroupOpen", "GroupClose", "Sters") llExistaCriteriuUrmator = .T. loCriteriuUrmator = THIS.PARENT.PARENT.&lcCriteriuNext EXIT ENDIF ENDFOR IF llExistaCriteriuUrmator && SAR PE CRITERIUL URMATOR NODEFAULT loCriteriuUrmator.text1.SETFOCUS() ELSE && NU EXISTA CRITERIUL URMATOR - SAR PE PRIMUL CRITERIU / PE BUTONUL TERMINAT NODEFAULT THIS.PARENT.PARENT.PARENT.but_termin1.SETFOCUS() IF .F. FOR i = 1 TO nrCriteriu lcCriteriu = "Criteriu" + ALLTRIM(STR(i)) IF PEMSTATUS(THIS.PARENT.PARENT, lcCriteriu, 5) IF !INLIST(THIS.PARENT.PARENT.&lcCriteriu..TAG, "GroupOpen", "GroupClose", "Sters") NODEFAULT THIS.PARENT.PARENT.&lcCriteriu..text1.SETFOCUS() EXIT ENDIF ENDIF ENDFOR ENDIF ENDIF ENDIF ENDPROC PROCEDURE Text1.Valid LOCAL llUltimul, lcCriteriu, i, lcTip lcTip = THIS.PARENT.tip IF AT('|', lcTip) > 0 lcTip = LEFT(lcTip, AT('|', lcTip) -1) ENDIF && validare perioada tipul D1 IF lcTip = 'D1' lcValoare = STRTRAN(THIS.VALUE, '/', '') IF !EMPTY(lcValoare) lcLuna = SUBSTR(ALLTRIM(lcValoare),1,2) lcAn = SUBSTR(ALLTRIM(lcValoare),3) IF EMPTY(lcAn) OR LEN(lcAn) < 4 lcAn = ALLTRIM(STR(YEAR(DATE()))) THIS.VALUE = PADL(lcLuna, 2, '0')+ '/' + lcAn ENDIF IF TYPE("DATE(VAL(lcAn),VAL(lcLuna),1)")!="D" AMESSAGEBOX("Perioada invalida!",0+16,"Eroare") RETURN 0 ENDIF ENDIF ENDIF *!* && validare data tipul D *!* IF lcTip = 'D' *!* IF LEN(ALLTRIM(TRANSFORM(this.value))) < 10 *!* RETURN 0 *!* ENDIF *!* lcValoare = STRTRAN(THIS.VALUE, '/', '') *!* IF !EMPTY(lcValoare) *!* lcZi = SUBSTR(ALLTRIM(lcValoare), 1, 2) *!* lcLuna = SUBSTR(ALLTRIM(lcValoare), 3, 2) *!* lcAn = SUBSTR(ALLTRIM(lcValoare), 5) *!* IF EMPTY(lcAn) OR LEN(lcAn) < 4 *!* lcAn = ALLTRIM(STR(YEAR(DATE()))) *!* THIS.VALUE = PADL(lcZi, 2, '0') + '/' + PADL(lcLuna, 2, '0')+ '/' + lcAn *!* ENDIF *!* IF TYPE("DATE(VAL(lcAn),VAL(lcLuna),VAL(lcZi))")!="D" *!* AMESSAGEBOX("Data invalida!",0+16,"Eroare") *!* RETURN 0 *!* ENDIF *!* ENDIF *!* ENDIF && daca criteriul urmator este de acelasi tip, ii completez valoarea cu valoarea curenta lcNumecriteriu = THIS.PARENT.numecriteriu nrCriteriu = VAL(SUBSTR(THIS.PARENT.NAME, 9)) nrCriteriuNext = nrCriteriu + 1 CriteriuNext = "Criteriu" + ALLTRIM(STR(nrCriteriuNext)) *!*AMESSAGEBOX('Criteriu' + ALLTRIM(STR(nrCriteriu)) + CHR(13) + GETCALLSTACK()) IF PEMSTATUS(THIS.PARENT.PARENT,CriteriuNext,5) loCriteriuNext = THIS.PARENT.PARENT.&CriteriuNext IF loCriteriuNext.TAG#"GroupOpen"AND loCriteriuNext.TAG#"GroupClose" AND loCriteriuNext.TAG#"Sters" ; AND loCriteriuNext.numecriteriu = lcNumecriteriu IF (lcTip = 'N' ) OR ; && modificare (lcTip <> 'D1' AND EMPTY(loCriteriuNext.text1.VALUE)) OR ; (lcTip = 'D1' AND EMPTY(ALLTRIM(STRTRAN(TRANSFORM(loCriteriuNext.text1.VALUE), '/','')))) loCriteriuNext.text1.VALUE = THIS.VALUE ENDIF ENDIF ENDIF *!* && daca sunt pe ultimul criteriu nesters - de tip D (data) sau D1 (perioada) *!* && completez primul criteriu, se completeaza automat al doilea criteriu *!* && si sare focusul pe alt control pentru ca sunt completate toate caracterele din inputmask *!* llUltimul = .T. *!* lnNrTotalCriterii = THIS.PARENT.PARENT.PARENT.nr_criterii *!* FOR i = nrCriteriu+1 TO lnNrTotalCriterii *!* lcCriteriu = "Criteriu" + ALLTRIM(STR(i)) *!* IF PEMSTATUS(THIS.PARENT.PARENT, lcCriteriu, 5) *!* IF THIS.PARENT.PARENT.&lcCriteriu..TAG # 'Sters' *!* llUltimul = .F. *!* EXIT *!* ENDIF *!* ENDIF *!* ENDFOR *!* IF llUltimul AND LEFT(lcTip,1) = 'D' *!* *!* RETURN 0 *!* ENDIF ENDPROC ENDDEFINE DEFINE CLASS but_reset_criterii AS buton OF "_cmd_base.vcx" *< CLASSDATA: Baseclass="commandbutton" Timestamp="" Scale="Pixels" Uniqueid="" /> * caction = do_reset Caption = "" cpicturedown = reset_jos.bmp cpictureup = reset_sus.bmp Name = "but_reset_criterii" Picture = ..\grafice\reset_sus.bmp ToolTipText = "Resetare criterii (CTRL + T)" _memberdata = * PROCEDURE Click If Pemstatus(This.Parent, "DO_RESET", 5) This.Parent.do_reset() Else If Pemstatus(Thisform, "DO_RESET", 5) Thisform.do_reset() Endif Endif *!* _SCREEN.STATUSBAR.TAG = "" && STATUSBAR TOOLTIP *!* _SCREEN.STATUSBAR.ctlMessage = _SCREEN.CAPTION && STATUSBAR MESSAGE If Type('this.Parent.but_Start_criterii1') = 'O' This.Parent.but_Start_criterii1.refreshstatus() Endif If Pemstatus(This.Parent,"ocriterii",5) This.Parent.ocriterii.Release This.Parent.ocriterii=Null Removeproperty(This.Parent, "ocriterii") Endif If Reccount()>0 _Screen.StatusBar.ctlPanels(2).ctlCaption=Transform(Reccount()) + " inregistrari" Else _Screen.StatusBar.ctlPanels(2).ctlCaption="" Endif ENDPROC ENDDEFINE DEFINE CLASS but_start_criterii AS buton OF "_cmd_base.vcx" *< CLASSDATA: Baseclass="commandbutton" Timestamp="" Scale="Pixels" Uniqueid="" /> * *m: initform *m: loadcriterii *m: loadfiltru *m: refreshstatus *m: resetstatus *m: updatedetails *p: filtru_pretty_ro_full *p: lcautare && .T. daca se apeleaza cautarea la iesirea din formularul cu criterii. *p: pornit * * Caption = "" cpicturedown = find_jos.bmp cpictureup = find_sus.bmp filtru_pretty_ro_full = FontSize = 10 Height = 27 lcautare = .T. Name = "but_start_criterii" Picture = ..\grafice\find_sus.bmp pornit = nu RightToLeft = .T. SpecialEffect = 1 Style = 0 ToolTipText = "Cautare (CTRL + Q)" Visible = .T. Width = 30 _memberdata = * PROCEDURE Click This.initform(.T.) ENDPROC PROCEDURE initform Lparameters tlShowForm Local Array lacriterii(1,1) Local lnButon This.loadcriterii(@lacriterii) If(This.pornit="nu") or !Pemstatus(This.Parent,"oCriterii",5) If !Pemstatus(This.Parent,"oCriterii",5) This.Parent.AddProperty("oCriterii") Endif This.Parent.ocriterii=Null This.Parent.ocriterii=Createobject("frm_criterii",@lacriterii) This.pornit="da" Endif If tlShowForm This.Parent.ocriterii.Show(1) lnButon = gnButon Else lnButon = 2 Endif This.updatedetails(lnButon) ENDPROC PROCEDURE loadcriterii *** FORMAT *** CAPTION\CAMPURI_BAZA_DATE_SEPARATE_PRIN_VIRGULA|EXPRESIE_COMPLEXA\TIP_CRITERIU\COLOANA_ID_CAUT_ALFA\NOMENCLATOR_COLECTIE_CAUT_ALFA\TOOLTIP + CRLF * CAPTION * LISTA CAMPURI SEPARATE PRIN VIRGULA SAU O EXPRESIE COMPLEXA CU PREFIX |E| * EX: "PARTD,PARTC,EXPLICATIE" SAU "|E|ID_PART IN (SELECT ID_PART FROM TTT WHERE CAMP = <>)" * TIPCRITERIU: * T (TEXT), * N (NUMAR), * D (DATA), * D1 (PERIOADA = AN*12+LUNA), * I (ALEGE NUMAI DIN LISTA), * E (CONDITIE FIXA EX: VALIDATE, CU STOC, EROARE TVA * A (LISTA DE OPTIUNI) * COLOANA ID INTOARSA DE CAUT_ALFA * CHEIE_COLECTIE_CAUT_ALFA" *lcStringCriterii="Nume\denumire\T\ID_PART\nom_parteneri" + crlf + ; * "Nr. act\nract\N\none\" + crlf + ; "Data act\dataact\D\none\" + crlf + ; "Fel document\fel_document\T\none\" + crlf + ; "Cod Fiscal\cod_fiscal\T\none\" + crlf + ; "Procent TVA\i.proc_tva\N|get_mask(12,gnPA)\none\" + crlf + ; "Explicatie D&C\partd,partc\T\|E|ID_PARTD=<> OR ID_PARTC=<>\nom_parteneri"+ crlf + ; "In desfasurare\nofiled\A\Contracte in desfasurare,Contracte incetate,Toate#c.incetat = 0,c.incetat=1,1=1\" + crlf + ; "EroareTVA\nofiled\E\" + ; [ AND ABS(TOTCTVA - (RO19B + RO19T + RO9B + RO9T + ROTI + CESCDD1 + CESCDD2 +] + ; [WRSCDD + FODD + FOFDD + WRSCFDD + WRN)) >= 1 AND ] + ; [ABS(RO19T) BETWEEN ROUND(0.188*ABS(RO19B),?gnPc) AND ROUND(0.193*ABS(RO19B),?gnPc) AND ] + ; [ABS(RO9T) BETWEEN ROUND(0.088*ABS(RO9B),?gnPc) AND ROUND(0.093*ABS(RO9B),?gnPc)\ + crlf *DODEFAULT() * *Sunt doua situatii in care poate fi folosit *Caption \denumirea campului \ T sau D sau N sau E (text,data,numeric,exceptie)\comanda exceptie\cheia din colectia de nomenclatoare *sau *Caption \denumirea campului \ T (sa nu fie E)\numele campului din tabela corespondeta formului care apeleaza\cheia din colectia de nomenclatoare * daca se doreste ca la intrarea in form sa se puna un filtru: *!* lcfiltru = [In desfasurare;nofiled;1;] *!* llcautare = This.pagefr1.paGE2.ct_contracte1.but_start_criterii1.lcautare *!* This.pagefr1.paGE2.ct_contracte1.but_start_criterii1.lcautare = .F. *!* This.pagefr1.paGE2.ct_contracte1.but_start_criterii1.loadfiltru(lcfiltru) *!* This.pagefr1.paGE2.ct_contracte1.but_start_criterii1.lcautare = llcautare nroflines=Alines(laCriterii,lcStringCriterii,1,crlf) Dimension tacriterii(nroflines,6) For N= 1 To nroflines For i = 1 To 6 tacriterii(N,i)=Getwordnum(laCriterii(N),i,"\") Endfor Endfor ENDPROC PROCEDURE loadfiltru Lparameters tcFiltru This.initform(.F.) This.Parent.ocriterii.do_incarca_filtre(tcFiltru) This.updatedetails(1) ENDPROC PROCEDURE refreshstatus #Define crlf Chr(13) + Chr(10) Local lcText lcText = "" If Pemstatus(This.Parent,"filtru_traducere",5) lcText = Iif(Not Empty(This.Parent.filtru_traducere()), This.Parent.filtru_traducere(),"") Else If Pemstatus(Thisform,"filtru_traducere",5) lcText = Iif(Not Empty(Thisform.filtru_traducere()), Thisform.filtru_traducere(),"") Endif Endif If PEMSTATUS(this.Parent, 'filtru_pretty_ro', 5) AND !Empty(Alltrim(This.Parent.filtru_pretty_ro)) lcText = this.parent.filtru_pretty_ro + Iif(!Empty(lcText), " si " + lcText, "") Else If PEMSTATUS(thisform, 'filtru_pretty_ro', 5) AND !Empty(Alltrim(Thisform.filtru_pretty_ro)) lcText = Thisform.filtru_pretty_ro + Iif(!Empty(lcText), " si " + lcText, "") Endif Endif This.ToolTipText = Iif(!Empty(m.lcText), m.lcText + crlf, "") + "Cautare (CTRL + Q)" IF PEMSTATUS(this.Parent, 'filtru_pretty_ro_full', 5) this.parent.filtru_pretty_ro_full = m.lcText ELSE IF PEMSTATUS(thisform, 'filtru_pretty_ro_full', 5) Thisform.filtru_pretty_ro_full = m.lcText ENDIF ENDIF _Screen.StatusBar.Tag = lcText If !Empty(lcText) _Screen.StatusBar.ctlIcon="roastartmic.ico" If Len(lcText) < 126 _Screen.StatusBar.ctlMessage = lcText Else _Screen.StatusBar.ctlMessage=Substr(lcText,1,122) + " ..." Endif Else _Screen.StatusBar.ctlMessage=_Screen.Caption Endif ENDPROC PROCEDURE resetstatus IF PEMSTATUS(_SCREEN,"Statusbar",5) _SCREEN.STATUSBAR.ctlPanels(2).ctlCaption="" _SCREEN.STATUSBAR.ctlMessage = _SCREEN.CAPTION _SCREEN.STATUSBAR.TAG = "" ENDIF ENDPROC PROCEDURE updatedetails Lparameters tnButon If Not Pemstatus(This.Parent,"filtru_pretty",5) This.Parent.AddProperty("filtru_pretty") Endif If Not Pemstatus(This.Parent,"filtru_pretty_ro",5) This.Parent.AddProperty("filtru_pretty_ro") Endif If Not Pemstatus(This.Parent,"filtru_cript",5) This.Parent.AddProperty("filtru_cript") Endif This.Parent.filtru_pretty = This.Parent.ocriterii.filtru This.Parent.filtru_pretty_ro = This.Parent.ocriterii.filtruro This.Parent.filtru_cript = This.Parent.ocriterii.filtrucript This.refreshStatus() This.SetFocus If Pemstatus(This.Parent,"DO_CAUTA",5) And tnButon = 1 And This.lcautare This.Parent.DO_CAUTA() If Reccount()>0 _Screen.StatusBar.ctlPanels(2).ctlCaption=Transform(Reccount()) + " inregistrari" Else _Screen.StatusBar.ctlPanels(2).ctlCaption="" Endif Else If Pemstatus(Thisform,"DO_CAUTA",5) And tnButon = 1 And This.lcautare Thisform.DO_CAUTA() If Reccount()>0 _Screen.StatusBar.ctlPanels(2).ctlCaption=Transform(Reccount()) + " inregistrari" Else _Screen.StatusBar.ctlPanels(2).ctlCaption="" Endif Endif Endif ENDPROC ENDDEFINE DEFINE CLASS cmd_addcriteriu AS label *< CLASSDATA: Baseclass="label" Timestamp="" Scale="Pixels" Uniqueid="" /> * *m: do_initializeaza *p: stare * * Alignment = 0 BackStyle = 0 Caption = "Label1" FontCharSet = 238 FontExtend = .F. FontSize = 10 Height = 16 MousePointer = 15 Name = "cmd_addcriteriu" stare = Width = 118 * PROCEDURE Click This.do_initializeaza() ENDPROC PROCEDURE do_initializeaza Lparameters tnIndex,tnId,tcValoare Local lcTipCriteriu If Parameters()=0 tnIndex = .Null. tnId = .Null. tcValoare = .Null. Endif lcTipCriteriu = This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),3) If At('|', lcTipCriteriu) > 0 lcTipCriteriu = Left(lcTipCriteriu, At('|', lcTipCriteriu) -1) && tipul criteriului N|GetMask(12,gnPA) Endif If This.stare#"inactiv" lctextoptions="incepe cu,este,nu este,contine,nu contine,nu are valori,are valori" lcnroptions="egal,diferit,mai mare sau egal,mai mic sau egal,mai mare,mai mic" lcdataoptions="egala,diferita,mai mare,mai mica,mai mare sau egala,mai mica sau egala" lctext="" lcClassId="" lnoftimes=1 Do While lnoftimes < 3 Do Case Case Inlist(lcTipCriteriu, "N", "D1") lcOptions=lcnroptions Case lcTipCriteriu = "T" lcOptions=lctextoptions Case lcTipCriteriu = "D" lcOptions=lcdataoptions Case lcTipCriteriu = "E" lcOptions="Disabled" Case lcTipCriteriu = "A" lcOptions=Substr(This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),4),1,At("#",This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),4))-1) lctext=Substr(This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),4),At("#",This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),4))+1) If(This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),2))#"nofield" lcClassId=This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),2) Endif Otherwise lcOptions=lctextoptions Endcase If This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),5)#"" And This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),5)#"none" lcKeyNomenclator=This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),5) lcIdCamp=This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),4) Else lcKeyNomenclator="none" lcIdCamp="" Endif This.Parent.nr_criterii=This.Parent.nr_criterii+1 NrCriterii=This.Parent.nr_criterii ObjectName="Criteriu"+Transform(NrCriterii) PreviusObjectName="Criteriu"+Transform(NrCriterii-1) If(NrCriterii=1 Or This.Parent.Containercriterii1.&PreviusObjectName..Tag="GroupOpen") logicCaption="" Else *** in caz ca sunt sterse primele inregistrari lbexinreg=.F. For i = 1 To NrCriterii-1 locurObj="Criteriu"+Transform(i) If This.Parent.Containercriterii1.&locurObj..Tag#"Sters" lbexinreg=.T. Endif Endfor *** If lbexinreg=.T. logicCaption=This.Parent.SelectorCriteriu.logic Else logicCaption="" Endif Endif With This.Parent .Containercriterii1.AddObject("&ObjectName","_ccriteriu",This.Caption,logicCaption,lcOptions,lcKeyNomenclator,This.Parent.SelectorCriteriu.acriteriiuns(Val(Substr(This.Name,13)),3),tnId,tcValoare) If lcIdCamp#"" .Containercriterii1.&ObjectName..idCamp=lcIdCamp Endif .currentHeight=.currentHeight+.Containercriterii1.&ObjectName..Height+10 .Containercriterii1.&ObjectName..Left=.currentLeft .Containercriterii1.&ObjectName..criteriu_nr=Val(Substr(This.Name,13)) This.ForeColor=Rgb(15,15,200) && lcTipCriteriu1 = THIS.PARENT.SelectorCriteriu.acriteriiuns(VAL(SUBSTR(THIS.NAME,13)),3) *!* setare Mai mare sau egal / Mai mic sau egal in functie de ce e selectat If lcTipCriteriu = "D" If lnoftimes=1 .Containercriterii1.&ObjectName..combo1.Value=.Containercriterii1.&ObjectName..combo1.List(5) Else .Containercriterii1.&ObjectName..combo1.Value=.Containercriterii1.&ObjectName..combo1.List(6) Endif Endif If Inlist(lcTipCriteriu, "N", "D1") If lnoftimes=1 .Containercriterii1.&ObjectName..combo1.Value=.Containercriterii1.&ObjectName..combo1.List(3) Else .Containercriterii1.&ObjectName..combo1.Value=.Containercriterii1.&ObjectName..combo1.List(4) Endif Endif lcspecial="false" If lctext # "" .Containercriterii1.&ObjectName..text1.Value = lctext .Containercriterii1.&ObjectName..codcriteriu = Substr(lctext,1,At(",",lctext)-1) .Containercriterii1.&ObjectName..text1.Visible = .F. .Containercriterii1.&ObjectName..ClassId = lcClassId .Containercriterii1.&ObjectName..combo1.Width = 275 *!* Aflare nr de ordine din combo lnCriteriunr = -1 For N = 1 To Alen(This.Parent.SelectorCriteriu.acriterii,1) If This.Parent.SelectorCriteriu.acriterii(N,7) = Val(Substr(This.Name,13)) lnCriteriunr=N Endif Endfor lnIndexCriteriu=lnCriteriunr *!* This.Parent.SelectorCriteriu.combo1.List(lnIndexCriteriu)="\]"+This.Parent.SelectorCriteriu.combo1.List(lnIndexCriteriu) If(This.Parent.SelectorCriteriu.combo1.ListIndex * *m: loadcriterii *p: pornit *a: acriterii[1,4] * * Caption = "\ PROCEDURE Click LOCAL ARRAY lacriterii(1,1) this.loadcriterii(@lacriterii) if(this.pornit="nu") IF NOT PEMSTATUS(this.Parent,"oCriterii",5) this.Parent.AddProperty("oCriterii") ENDIF this.Parent.ocriterii=createOBJECT("frm_criterii",@lacriterii) this.pornit="da" endif this.Parent.ocriterii.show(1) IF NOT PEMSTATUS(this.Parent,"filtru_pretty",5) this.Parent.AddProperty("filtru_pretty") ENDIF IF NOT PEMSTATUS(this.Parent,"filtru_pretty_ro",5) this.Parent.AddProperty("filtru_pretty_ro") ENDIF thisform.filtru_pretty=this.Parent.ocriterii.filtru thisform.filtru_pretty_ro=this.Parent.ocriterii.filtruro IF thisform.filtru_pretty_ro#"" this.ToolTipText=thisform.filtru_pretty_ro With this.parent For i=1 To .Objects.Count If Upper(.Objects(i).BaseClass)='CHECKBOX' this.ToolTipText=this.ToolTipText + .Objects(i).tag Endif Endfor ENDWITH ENDIF this.setfocus ENDPROC PROCEDURE KeyPress LPARAMETERS nKeyCode, nShiftAltCtrl ENDPROC PROCEDURE loadcriterii *PARAMETERS tacriterii *EXTERNAL ARRAY tacriterii *#define crlf CHR(13)+CHR(10) *lcStringCriterii="Nume\denumire\T\ID_PART\nom_parteneri" + crlf + ; * "Nr. act\nract\N\none\" + crlf + ; "Data act\dataact\D\none\" + crlf + ; "Fel document\fel_document\T\none\" + crlf + ; "Cod Fiscal\cod_fiscal\T\none\" + crlf + ; "EroareTVA\nofiled\E\" + ; [ AND ABS(TOTCTVA - (RO19B + RO19T + RO9B + RO9T + ROTI + CESCDD1 + CESCDD2 +] + ; [WRSCDD + FODD + FOFDD + WRSCFDD + WRN)) >= 1 AND ] + ; [ABS(RO19T) BETWEEN ROUND(0.188*ABS(RO19B),?gnPc) AND ROUND(0.193*ABS(RO19B),?gnPc) AND ] + ; [ABS(RO9T) BETWEEN ROUND(0.088*ABS(RO9B),?gnPc) AND ROUND(0.093*ABS(RO9B),?gnPc)\ + crlf *DODEFAULT() * *Sunt doua situatii in care poate fi folosit *Caption \denumirea campului \ T sau D sau N sau E (text,data,numeric,exceptie)\comanda exceptie\cheia din colectia de nomenclatoare *sau *Caption \denumirea campului \ T (sa nu fie E)\numele campului din tabela corespondeta formului care apeleaza\cheia din colectia de nomenclatoare nroflines=ALINES(laCriterii,lcStringCriterii,1,crlf) DIMENSION tacriterii(nroflines,5) FOR n= 1 TO nroflines FOR i = 1 TO 6 tacriterii(n,i)=GETWORDNUM(laCriterii(n),i,"\") ENDFOR ENDFOR ENDPROC ENDDEFINE DEFINE CLASS frm_criterii AS _frmbase OF "_frm_base.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="But_renunt1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Line1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Containercriterii1" UniqueID="" Timestamp="" /> * *m: do_colectienom *m: do_incarca_filtre *m: getcriteriu *m: paramsmatrix *p: currentheight *p: currentleft *p: filtru *p: filtrucript && Filtru in forma criptata pentru salvare. *p: filtruro *p: lincarcarefiltru && .T. daca se incarca filtrul. *p: nr_criterii *a: acriterii[1,5] * * BorderStyle = 2 currentheight = 85 currentleft = 10 DoCreate = .T. filtru = filtrucript = filtruro = Height = 469 lhide = .T. lincarcarefiltru = .F. Name = "frm_criterii" nr_criterii = 0 ScrollBars = 2 Width = 800 _shape1.Height = 29 _shape1.Left = 0 _shape1.Name = "_shape1" _shape1.Top = 0 _shape1.Width = 828 _shape2.Height = 29 _shape2.Left = 746 _shape2.Name = "_shape2" _shape2.Top = -1 _shape2.Width = 57 Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" BUT_TERMIN1.Left = 769 BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.Top = 0 Gridsort1.Name = "Gridsort1" * ADD OBJECT 'But_renunt1' AS but_renunt WITH ; Left = 741, ; Name = "But_renunt1", ; Top = 0 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'Containercriterii1' AS scontainer WITH ; Height = 252, ; Left = 12, ; Name = "Containercriterii1", ; Top = 120, ; Width = 784, ; up_1.Left = 754, ; up_1.Name = "up_1", ; up_1.Top = 13, ; down_1.Left = 754, ; down_1.Name = "down_1", ; down_1.Top = 43 *< END OBJECT: ClassLib="ocriterii.vcx" BaseClass="container" /> ADD OBJECT 'Line1' AS line WITH ; Height = 0, ; Left = 0, ; Name = "Line1", ; Top = 108, ; Width = 840 *< END OBJECT: BaseClass="line" /> PROCEDURE do_colectienom ** CREARE COLECTIE ** ================================================== LOCAL loHash thisform.AddObject("loCol","collection") *!* nom_parteneri loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_part, denumire, cod_fiscal from nom_parteneri") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "denumire") .SetValue("cColoana", "denumire,cod_fiscal,id_part") .SetValue("cTitlu", "Alegeti partenerul") .SetValue("cTitluColoana", "Nume,Cod fiscal,ID") .SetValue("cFiltruOriginal", [STERS = 0 AND INACTIV = 0]) .setvalue("cresultcoloana","denumire") .setvalue("cidcoloana","id_Part") ENDWITH thisform.loCol.ADD(loHash, "nom_parteneri") *!* modificare migrare v 1.0 > v 2.0 loHash = GetHash() WITH loHash .SetValue("cSelect", "SELECT B.ID_PART, B.DENUMIRE, B.COD_FISCAL " + ; " FROM CORESP_TIP_PART A " + ; " LEFT JOIN NOM_PARTENERI B ON A.ID_PART = B.ID_PART") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "b.denumire") .SetValue("cColoana", "b.denumire,b.cod_fiscal,b.id_part") .SetValue("cTitlu", "Alegeti partenerul") .SetValue("cTitluColoana", "Nume,Cod fiscal,ID") .SetValue("cFiltruOriginal", [B.STERS = 0 AND B.INACTIV = 0 AND A.ID_TIP_PART IN (SELECT id_tip_part FROM coresp_tip_cont WHERE cont = '4111')]) .setvalue("cresultcoloana","denumire") .setvalue("cidcoloana","id_Part") ENDWITH thisform.loCol.ADD(loHash, "nom_parteneri4111") *!* modificare migrare v 1.0 > v 2.0 ^ loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_responsabil, nume, marca, bi, cnp from vnom_responsabili") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "nume") .SetValue("cColoana", "nume, marca, bi, cnp, id_responsabil") .SetValue("cTitlu", "Alegeti responsabilul") .SetValue("cTitluColoana", "Nume, Marca, BI, CNP, Id") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","nume") .setvalue("cidcoloana","id_responsabil") ENDWITH thisform.loCol.ADD(loHash, "nom_responsabil") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_fdoc, fel_document FROM vnom_fdoc") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "fel_document") .SetValue("cColoana", "fel_document,id_fdoc") .SetValue("cTitlu", "Alegeti felul documentului") .SetValue("cTitluColoana", "Document,ID") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","fel_document") .setvalue("cidcoloana","id_fdoc") ENDWITH thisform.loCol.ADD(loHash, "nom_feldoc") loHash = GetHash() WITH loHash .SetValue("cSelect", "select nume_gestiune,cgest,id_gestiune,nr_pag,cont from vnom_gestiuni ") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "nume_gestiune") .SetValue("cColoana", "nume_gestiune,cgest") .SetValue("cTitlu", "Alegeti Gestiunea") .SetValue("cTitluColoana", "Gestiune,Cgest") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","nume_gestiune") .setvalue("cidcoloana","id_gestiune") ENDWITH thisform.loCol.ADD(loHash, "nom_gestiune") loHash = GetHash() WITH loHash .SetValue("cSelect", "select nrord, id_lucrare from vnom_lucrari") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "nrord") .SetValue("cColoana", "nrord,id_lucrare") .SetValue("cTitlu", "Alegeti lucrarea") .SetValue("cTitluColoana", "Lucrare,ID") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","nrord") .setvalue("cidcoloana","id_lucrare ") ENDWITH thisform.loCol.ADD(loHash, "nom_lucrare") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_sectie, sectie, csectie FROM vnom_sectii") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "sectie") .SetValue("cColoana", "sectie, csectie") .SetValue("cTitlu", "Alegeti sectia") .SetValue("cTitluColoana", "Sectie, Indicativ") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","sectie") .setvalue("cidcoloana","id_sectie") ENDWITH thisform.loCol.ADD(loHash, "nom_sectie") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_valuta, nume_val FROM vnom_valute") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "nume_val") .SetValue("cColoana", "nume_val") .SetValue("cTitlu", "Alegeti valuta") .SetValue("cTitluColoana", "Valuta") .SetValue("cFiltruOriginal", [inactiv = 0 and moneda_nationala = 0]) .setvalue("cresultcoloana","nume_val") .setvalue("cidcoloana","id_valuta") ENDWITH thisform.loCol.ADD(loHash, "nom_valuta") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_sucursala, sucursala, inactiv from vnom_sucursale") .SetValue("cSchema", "") .SetValue("cFiltru", "2=2") .SetValue("cOrder", "sucursala") .SetValue("cColoana", "sucursala,id_sucursala") .SetValue("cTitlu", "Alegeti sucursala") .SetValue("cTitluColoana", "Sucursala, Id") IF glEMama && DACA SUNT PE FIRMA MAMA ARAT DOAR SUCURSALELE EI .SetValue("cFiltruOriginal", [inactiv = 0 AND id_mama = ?gnIdFirma]) ELSE && DACA SUNT PE O SUCURSALA SAU PE FIRMA INDEPENDENTA NU ARAT NIMIC .SetValue("cFiltruOriginal", [1=2]) ENDIF .setvalue("cresultcoloana","sucursala") .setvalue("cidcoloana","id_sucursala") ENDWITH thisform.loCol.ADD(loHash, "nom_sucursala") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_util,utilizator from syn_vutilizatori") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "utilizator") .SetValue("cColoana", "utilizator") .SetValue("cTitlu", "Alegeti utilizatorul") .SetValue("cTitluColoana", "Utilizator") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","utilizator") .setvalue("cidcoloana","id_util") ENDWITH thisform.loCol.ADD(loHash, "nom_utilizator") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_venchelt, explicatie, (case tip_venchelt when 1 then 'Cheltuiala' else 'Venit' end) as tip_venchelt FROM vnom_venchel") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "explicatie") .SetValue("cColoana", "explicatie,tip_venchelt") .SetValue("cTitlu", "Alegeti venitul/cheltuiala") .SetValue("cTitluColoana", "Explicatia, Tip") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","explicatie") .setvalue("cidcoloana","id_venchelt") ENDWITH thisform.loCol.ADD(loHash, "nom_venchel") loHash = GetHash() WITH loHash .SetValue("cSelect", "select denumire, codmat, um, grupa, subgrupa, id_grupa, id_subgrupa, dnf, cont, acont, inactiv, id_articol from vnom_articole") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "denumire") .SetValue("cColoana", "denumire,codmat,um,grupa,subgrupa,cont,acont,dnf,id_articol") .SetValue("cTitlu", "Alegeti articolul") .SetValue("cTitluColoana", "Denumire,Cod Material,UM,Grupa,Subgrupa,Cont,Analitic,DNF,Id") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","denumire") .setvalue("cidcoloana","id_articol") ENDWITH thisform.loCol.ADD(loHash, "nom_articol") thisform.loCol.ADD(loHash, "nom_articole") loHash = GetHash() WITH loHash .SetValue("cSelect", "select grupa, id_grupa from vgest_art_gr") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "grupa") .SetValue("cColoana", "grupa,id_grupa") .SetValue("cTitlu", "Alegeti grupa de articole") .SetValue("cTitluColoana", "Grupa,Id") .SetValue("cFiltruOriginal", []) .setvalue("cresultcoloana","grupa") .setvalue("cidcoloana","id_grupa") ENDWITH thisform.loCol.ADD(loHash, "nom_grupa_articol") loHash = GetHash() WITH loHash .SetValue("cSelect", "select subgrupa, grupa, id_subgrupa from vgest_art_sbgr") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "subgrupa") .SetValue("cColoana", "subgrupa,grupa,id_subgrupa") .SetValue("cTitlu", "Alegeti subgrupa de articole") .SetValue("cTitluColoana", "Subgrupa,Grupa,Id") .SetValue("cFiltruOriginal", []) .setvalue("cresultcoloana","subgrupa") .setvalue("cidcoloana","id_subgrupa") ENDWITH thisform.loCol.ADD(loHash, "nom_subgrupa_articol") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_grupe, nume_grupa, nume_parinte, parent_id FROM vgest_nom_grupe") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "nume_grupa") .SetValue("cColoana", "nume_grupa,nume_parinte,id_grupe,parent_id") .SetValue("cTitlu", "Alegeti grupa de gestiuni") .SetValue("cTitluColoana", "Grupa,Grupa parinte,Id,Id parinte") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","nume_grupa") .setvalue("cidcoloana","id_grupe") ENDWITH thisform.loCol.ADD(loHash, "nom_grupa_gestiune") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_meseria, meserie from SAL_VNOM_MES") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "meserie") .SetValue("cColoana", "id_meseria, meserie") .SetValue("cTitlu", "Alegeti meseria") .SetValue("cTitluColoana", "Meseria, Id") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","meserie") .setvalue("cidcoloana","meseria") ENDWITH thisform.loCol.ADD(loHash, "nom_meserie") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_formatia, denumire, sectie from sal_vnom_formatii") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "denumire") .SetValue("cColoana", "denumire, id_formatia, sectie") .SetValue("cTitlu", "Alegeti formatia") .SetValue("cTitluColoana", "Formatia, Id, Sectie") .SetValue("cFiltruOriginal", [inactiv = 0]) .setvalue("cresultcoloana","denumire") .setvalue("cidcoloana","id_formatia") ENDWITH thisform.loCol.ADD(loHash, "nom_formatie") *!* tip_rulaj loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_tip_rulaj,descriere from nom_tip_rulaj") .SetValue("cSchema", "") .SetValue("cFiltru", "2=2") .SetValue("cOrder", "descriere") .SetValue("cColoana", "descriere,id_tip_rulaj") .SetValue("cTitlu", "Alegeti tipul de rulaj") .SetValue("cTitluColoana", "Descriere,ID") .SetValue("cFiltruOriginal", [STERS = 0]) .setvalue("cresultcoloana","descriere") .setvalue("cidcoloana","id_tip_rulaj") ENDWITH thisform.loCol.ADD(loHash, "nom_tip_rulaj") *!* nom_contracte loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_ctr, id_part, denumire, contract, numar, data from vcontracte") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "data desc, numar") .SetValue("cColoana", "contract,denumire,id_ctr") .SetValue("cTitlu", "Alegeti contractul") .SetValue("cTitluColoana", "Contract,Partener,Id") .SetValue("cFiltruOriginal", []) .setvalue("cresultcoloana","contract") .setvalue("cidcoloana","id_ctr") ENDWITH thisform.loCol.ADD(loHash, "nom_contracte") *!* tip_contract loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_tip_ctr,denumire from tipuri_contracte") .SetValue("cSchema", "") .SetValue("cFiltru", "2=2") .SetValue("cOrder", "denumire") .SetValue("cColoana", "denumire,id_tip_ctr") .SetValue("cTitlu", "Alegeti tipul de contract") .SetValue("cTitluColoana", "Denumire,ID") .SetValue("cFiltruOriginal", []) .setvalue("cresultcoloana","denumire") .setvalue("cidcoloana","id_tip_ctr") ENDWITH thisform.loCol.ADD(loHash, "tipuri_contracte") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_transa, transa from sal_vnom_transe") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "transa") .SetValue("cColoana", "transa, id_transa") .SetValue("cTitlu", "Alegeti transa") .SetValue("cTitluColoana", "Transa, Id") .SetValue("cFiltruOriginal", []) .setvalue("cresultcoloana","transa") .setvalue("cidcoloana","id_transa") ENDWITH thisform.loCol.ADD(loHash, "nom_transe") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id, denumire,valoare from sal_vnom_tichete") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "denumire") .SetValue("cColoana", "denumire, valoare, id") .SetValue("cTitlu", "Alegeti tipul tichetului") .SetValue("cTitluColoana", "Tip tichet,Valoare, Id") .SetValue("cFiltruOriginal", []) .setvalue("cresultcoloana","denumire") .setvalue("cidcoloana","id") ENDWITH thisform.loCol.ADD(loHash, "nom_tichete") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id, denumire, sters, inactiv, id_util, dataora, id_utils, dataoras from vnom_locatii") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "denumire") .SetValue("cColoana", "denumire,id") .SetValue("cTitlu", "Alegeti locatia") .SetValue("cTitluColoana", "Denumire,Id") .SetValue("cFiltruOriginal", []) .setvalue("cresultcoloana","denumire") .setvalue("cidcoloana","id") ENDWITH thisform.loCol.ADD(loHash, "nom_locatii") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id, denumire from fact_tipuri") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "denumire") .SetValue("cColoana", "denumire,id") .SetValue("cTitlu", "Alegeti tipul facturii") .SetValue("cTitluColoana", "Denumire,Id") .SetValue("cFiltruOriginal", []) .setvalue("cresultcoloana","denumire") .setvalue("cidcoloana","id") ENDWITH thisform.loCol.ADD(loHash, "nom_tipfactura") loHash = GetHash() WITH loHash .SetValue("cSelect", "select id_ruta, ruta from fact_nom_rute") .SetValue("cSchema", "") .SetValue("cFiltru", "1=2") .SetValue("cOrder", "ruta") .SetValue("cColoana", "denumire,id") .SetValue("cTitlu", "Alegeti ruta") .SetValue("cTitluColoana", "Ruta,Id") .SetValue("cFiltruOriginal", []) .setvalue("cresultcoloana","ruta") .setvalue("cidcoloana","id_ruta") ENDWITH thisform.loCol.ADD(loHash, "nom_ruta") ENDPROC PROCEDURE do_incarca_filtre Lparameters tcFiltru Local lcDelimitator,lcDelimitator2,lnNr,lnNrTemp Thisform.lincarcarefiltru = .T. lcDelimitator = [|] lcDelimitator2 = [;] For lnNr = 1 To Getwordcount(tcFiltru,lcDelimitator) lnNrTemp = lnNr lcSir = Getwordnum(tcFiltru,lnNr,lcDelimitator) Do Case Case lcSir = [(] Thisform.SelectorCriteriu.cmd_OpenGroup.Click() Case lcSir = [)] Thisform.SelectorCriteriu.cmd_CloseGroup.Click() Case Inlist(lcSir,[SI],[SAU]) If lcSir <> Thisform.SelectorCriteriu.logic Thisform.SelectorCriteriu.lbl_logic.Click() Endif Otherwise lcCaption = Substr(lcSir,1,At(lcDelimitator2,lcSir,1)-1) lcCamp = Substr(lcSir,At(lcDelimitator2,lcSir,1)+1,At(lcDelimitator2,lcSir,2)-At(lcDelimitator2,lcSir,1)-1) lcIndex = Substr(lcSir,At(lcDelimitator2,lcSir,2)+1,At(lcDelimitator2,lcSir,3)-At(lcDelimitator2,lcSir,2)-1) lcId = Substr(lcSir,At(lcDelimitator2,lcSir,3)+1,At(lcDelimitator2,lcSir,4)-At(lcDelimitator2,lcSir,3)-1) lcValoare = Substr(lcSir,At(lcDelimitator2,lcSir,4)+1) For N= 1 To Alen(Thisform.acriterii,1) lcNumeObiect = "Thisform.lbl_Criteriu" + Transform(N) loObiect = &lcNumeObiect *!* modificare ROAGEST v 2.0.64 *!* If Alltrim(Upper(loObiect.Caption)) = Alltrim(Upper(lcCaption)) ; *!* and Alltrim(Upper(Thisform.SelectorCriteriu.acriteriiuns(N,2))) = Alltrim(Upper(lcCamp)) If Alltrim(Upper(loObiect.Caption)) = Alltrim(Upper(lcCaption)) ; and Alltrim(Upper(Strtranx(Thisform.SelectorCriteriu.acriteriiuns(N,2),"([^a-zA-Z0-9])",[])))= Alltrim(Upper(strtranx(lcCamp,"([^a-zA-Z0-9])",[]))) *!* modificare ROAGEST v 2.0.64 loObiect.do_initializeaza(Iif(Nvl(lcIndex,[])<>[],Val(lcIndex),.Null.),; Iif(Nvl(lcId,[])<>[],Val(lcId),.Null.),; lcValoare) Exit Endif Endfor Endcase lnNr = lnNrTemp Endfor Thisform.lincarcarefiltru = .F. Thisform.inainte_de_do_termin() ENDPROC PROCEDURE do_renunt IF THIS.inainte_de_do_renunt() gnButon = 2 pnButon = 2 Buton = 2 pnIesire = 2 THIS.filtru="none" THIS.VISIBLE= .F. ENDIF ENDPROC PROCEDURE getcriteriu LPARAMETERS tcNumeCriteriu && tcNumeCriteriu : numele unui criteriu sau nimic && creeaza o colectie cu aparitiile criteriului sau ale tuturor criteriilor din fereastra de cautare LOCAL loCollection AS COLLECTION LOCAL i, lnNrTotalCriterii, lcNumeCriteriu, lnRanduri LOCAL lcNumeCriteriuCurent, lcOperatorCriteriuCurent, lcValoareCriteriuCurent EXTERNAL ARRAY taListaValori IF EMPTY(tcNumeCriteriu) OR TYPE('tcNumeCriteriu') <> 'C' lcNumeCriteriu = "" ELSE lcNumeCriteriu = UPPER(ALLTRIM(tcNumeCriteriu)) ENDIF loCollection = CREATEOBJECT("collection") lnRanduri = 1 lnNrTotalCriterii = THIS.nr_criterii FOR i = 1 TO lnNrTotalCriterii lcCriteriu = "Criteriu" + ALLTRIM(STR(i)) loCriteriu = THIS.containercriterii1.&lcCriteriu IF !INLIST(loCriteriu.TAG, "GroupOpen", "GroupClose", "Sters") lcNumeCriteriuCurent = UPPER(ALLTRIM(loCriteriu.lbl_Criteriu.CAPTION)) lcOperatorCriteriuCurent = loCriteriu.combo1.VALUE lcValoareCriteriuCurent = loCriteriu.text1.VALUE lcIdCampCriteriuCurent = loCriteriu.idcamp lcIdValoareCriteriuCurent = loCriteriu.idvalue lcTipCriteriu = UPPER(THISFORM.acriterii(loCriteriu.criteriu_nr,3)) lcOperatorCriteriuCurentInfo = "" DO CASE CASE INLIST(lcOperatorCriteriuCurent, "egala", "egal") lcOperatorCriteriuCurentInfo = "=" CASE INLIST(lcOperatorCriteriuCurent, "diferita", "diferit") lcOperatorCriteriuCurentInfo = "<>" CASE INLIST(lcOperatorCriteriuCurent, "mai mare") lcOperatorCriteriuCurentInfo = "<>" CASE INLIST(lcOperatorCriteriuCurent, "mai mica", "mai mic") lcOperatorCriteriuCurentInfo = "<" CASE INLIST(lcOperatorCriteriuCurent, "mai mica sau egala", "mai mic sau egal") lcOperatorCriteriuCurentInfo = "<=" CASE INLIST(lcOperatorCriteriuCurent, "mai mare sau egala", "mai mare sau egal") lcOperatorCriteriuCurentInfo = ">=" CASE INLIST(lcOperatorCriteriuCurent, "Lista...") lcOperatorCriteriuCurentInfo = "=" * CASE INLIST(lcOperatorCriteriuCurent, "are valori", "nu are valori") ENDCASE IF EMPTY(lcNumeCriteriu) OR (!EMPTY(lcNumeCriteriu) AND lcNumeCriteriuCurent == lcNumeCriteriu) loChild = CREATEOBJECT("empty") ADDPROPERTY(loChild,"criteriu", lcNumeCriteriuCurent) ADDPROPERTY(loChild,"operator_ro", lcOperatorCriteriuCurent) ADDPROPERTY(loChild,"operator", lcOperatorCriteriuCurentInfo) ADDPROPERTY(loChild,"valoare", lcValoareCriteriuCurent) ADDPROPERTY(loChild,"idcamp", lcIdCampCriteriuCurent) ADDPROPERTY(loChild,"idvaloare", lcIdValoareCriteriuCurent) loCollection.ADD(loChild) RELEASE loChild ENDIF ENDIF ENDFOR RETURN loCollection ENDPROC PROCEDURE Hide gfiltru=this.filtru gfiltruro=this.filtruro ENDPROC PROCEDURE inainte_de_do_termin *!* 19.12.2014 *!* marius.mutu *!* am pus temporar lcThislogic = '~~' + lcThislogic ca sa nu se incurce cu SI/SAU din conditie *!* 05.03.2015 *!* marius.mutu *!* Daca am o Expresie |E|ID_PARTD=<> OR ID_PARTC=<> pe campul lcCampId, se inlocuieste <> cu partenerul ales din nomenclator *!* Se foloseste in Registrul Jurnal la cautarea dupa Partener D&C. Conpress folosea cautare neoptimizata in Explicatii Local lcTipCriteriu, luValoareCriteriu, lcTag, lcLogic Local lcCaption, lcConditieSpeciala, lcIdValue, lcIdCamp, lcCodCriteriu, lcNumeCriteriu, lcValoareCript Local lcFiltru, lcFiltruRo, lcFiltruCript lcFiltru = "" lcFiltruRo = "" lcFiltruCript = "" *!* elementele posibile din lcFiltruCript : 'SI|', 'SAU|', '(|', '|)', 'caption;camp;index lista;id;valoarecamp|' Private pcerrorstr pcerrorstr="" lnpdeschis=0 lnpinchis=0 lnsterse=0 lcFiltru="" *!* If MessageBox("Debug?",4,"Atentie")=6 *!* Debug *!* suspend *!* EndIf For N= 1 To Thisform.nr_criterii ObjectName="Criteriu"+Transform(N) If Thisform.Containercriterii1.&ObjectName..Tag="GroupOpen" lnpdeschis=lnpdeschis+1 Endif && Numara toate parantezele deschise If Thisform.Containercriterii1.&ObjectName..Tag="GroupClose" lnpinchis=lnpinchis+1 Endif && Numara toate parantezele inchise If Thisform.Containercriterii1.&ObjectName..Tag="Sters" lnsterse=lnsterse+1 Endif && Numara toate obiectele sterse Endfor &&Parcurge toate obiectele de pe forma If lnpdeschis<>lnpinchis pcerrorstr=pcerrorstr+"Grupurile nu se potrivesc"+Chr(13)+Chr(10) Endif && Daca nr de paranteze deschise nu este acelasi cu nr de paranteze deschise && (parantezele nu se pot sterge) If lnpdeschis+lnpinchis=Thisform.nr_criterii-lnsterse And Thisform.nr_criterii>0 And lnsterse#Thisform.nr_criterii pcerrorstr=pcerrorstr+"Va trebuie un criteriu valid, nu numai grupuri"+Chr(13)+Chr(10) Endif && daca suma obiectelor nesterse este egala cu suma parantezelor inseamna ca && s-au introdus numai paranteze si niciun criteriu logic *!* *** *** *** *** * incheiere verificare erori *!* *** *** *** *** *Parcurgere criterii pentru limba romana lcFiltruRo="" For nn =1 To Thisform.nr_criterii ObjectName="Criteriu"+Transform(nn) If Thisform.Containercriterii1.&ObjectName..Tag#"Sters" If Thisform.Containercriterii1.&ObjectName..Tag="GroupOpen" Or Thisform.Containercriterii1.&ObjectName..Tag="GroupClose" lcFiltruRo=lcFiltruRo + [ ] + Alltrim(Thisform.Containercriterii1.&ObjectName..Caption) Loop Endif lcTipCriteriu = Upper(Thisform.acriterii(Thisform.Containercriterii1.&ObjectName..criteriu_nr,3)) If At('|', lcTipCriteriu) > 0 lcTipCriteriu = Left(lcTipCriteriu, At('|', lcTipCriteriu) -1) && tipul criteriului N|GetMask(12,gnPA) Endif *!* prepozitie operator lcPrepop = Alltrim(Thisform.Containercriterii1.&ObjectName..Combo1.List(Thisform.Containercriterii1.&ObjectName..Combo1.ListIndex)) lcPrepop1 = "" Do Case Case lcTipCriteriu = "E" * NU FAC NIMIC Case lcPrepop = "egala" lcPrepop1 = [ cu '] Case lcPrepop = "egal" lcPrepop1 = [ cu '] Case lcPrepop = "diferita" lcPrepop1 = [ de '] Case lcPrepop = "diferit" lcPrepop1 = [ de '] Case lcPrepop = "mai mare" lcPrepop1 = [ decat '] Case lcPrepop = "mai mica" lcPrepop1 = [ decat '] Case lcPrepop = "mai mic" lcPrepop1 = [ decat '] Case lcPrepop = "mai mica sau egala" lcPrepop1 = [ decat '] Case lcPrepop = "mai mare sau egala" lcPrepop1 = [ decat '] Case lcPrepop = "mai mica sau egal" lcPrepop1 = [ decat '] Case lcPrepop = "mai mare sau egal" lcPrepop1 = [ decat '] Case lcPrepop = "mai mic sau egal" lcPrepop1 = [ decat '] Case lcPrepop = "Lista..." lcFiltruRo=Strtran(lcFiltruRo,"Lista... "," este ") lcPrepop1 = [ '] Case Inlist(lcPrepop, "are valori", "nu are valori") lcPrepop1 = [ ] Otherwise lcPrepop1 = [ '] Endcase *!* Spatiu + Operator logic + NumeCriteriu + operator Do Case Case lcTipCriteriu = 'E' && Spatiu + Operator logic + NumeCriteriu lcFiltruRo = lcFiltruRo + [ ] + '~~'+Thisform.Containercriterii1.&ObjectName..logic + [ ] + Thisform.Containercriterii1.&ObjectName..numecriteriu + [ ] Otherwise lcFiltruRo = lcFiltruRo + [ ] + '~~'+Thisform.Containercriterii1.&ObjectName..logic + [ ] + Thisform.Containercriterii1.&ObjectName..numecriteriu + [ ]+ ; lcPrepop + lcPrepop1 Endcase *!* lcPrepop1 = "" *!* DO CASE *!* CASE lcTipCriteriu = "E" *!* * NU FAC NIMIC *!* lcPrepop = "" *!* CASE lcPrepop = "egala" *!* lcPrepop = "=" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "egal" *!* lcPrepop = "=" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "diferita" *!* lcPrepop = "<>" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "diferit" *!* lcPrepop = "<>" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "mai mare" *!* lcPrepop = ">" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "mai mica" *!* lcPrepop = "<" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "mai mic" *!* lcPrepop = "<" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "mai mica sau egala" *!* lcPrepop = "<=" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "mai mare sau egala" *!* lcPrepop = ">=" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "mai mica sau egal" *!* lcPrepop = "<=" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "mai mare sau egal" *!* lcPrepop = ">=" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "mai mic sau egal" *!* lcPrepop = "<=" *!* lcPrepop1 = [ '] *!* CASE lcPrepop = "Lista..." *!* lcPrepop = "=" *!* lcPrepop1 = [ '] *!* OTHERWISE *!* lcPrepop = "" *!* ENDCASE *!* *!* Spatiu + Operator logic + NumeCriteriu + operator *!* DO CASE *!* CASE lcTipCriteriu = 'E' && Spatiu + Operator logic + NumeCriteriu *!* lcFiltruRo = lcFiltruRo + [ ] + THISFORM.Containercriterii1.&ObjectName..logic + [ ] + THISFORM.Containercriterii1.&ObjectName..numecriteriu + [ ] *!* OTHERWISE *!* lcFiltruRo = lcFiltruRo + [ ] + THISFORM.Containercriterii1.&ObjectName..logic + [ ] + THISFORM.Containercriterii1.&ObjectName..numecriteriu + [ ]+ ; *!* lcPrepop + lcPrepop1 *!* ENDCASE luValoareCriteriu = Thisform.Containercriterii1.&ObjectName..Text1.Value && FILTRU ROMANA If(Thisform.Containercriterii1.&ObjectName..Text1.Visible=.T.) Do Case Case lcTipCriteriu = "D1" lcFiltruRo = lcFiltruRo + luValoareCriteriu + [' ] Case lcTipCriteriu = "D" lcdate = Alltrim(Dtos(luValoareCriteriu)) lcy = Substr(lcdate,1,4) lcm = Substr(lcdate,5,2) lcd = Substr(lcdate,7,2) lcFiltruRo = lcFiltruRo + lcd + "-" + lcm + "-" + lcy + [' ] Case lcTipCriteriu = "N" lcFiltruRo = lcFiltruRo + Alltrim(Transform(luValoareCriteriu)) + [' ] Case lcTipCriteriu = "E" Or Inlist(lcPrepop, "are valori", "nu are valori") * NU FAC NIMIC Otherwise lcFiltruRo = lcFiltruRo+Strtran(Alltrim(luValoareCriteriu),"'",[]) + ['] Endcase Endif Endif Endfor *Parcurgere criterii For N= 1 To Thisform.nr_criterii ObjectName="Criteriu"+Transform(N) lcTag = Thisform.Containercriterii1.&ObjectName..Tag lcLogic = Thisform.Containercriterii1.&ObjectName..logic If lcTag # "Sters" If Inlist(lcTag, "GroupOpen", "GroupClose") lcCaption = Thisform.Containercriterii1.&ObjectName..Caption lcFiltru = lcFiltru + [ ] + '~~'+lcLogic + [ ] + Right(Alltrim(lcCaption),1)+ [ ] *!* modificare ROAGEST v 2.0.55 lcFiltruCript = lcFiltruCript + Iif(!Empty(Nvl(lcLogic,[])),lcLogic + [|],[]) + ; RIGHT(Alltrim(lcCaption),1)+ [|] *!* modificare ROAGEST v 2.0.55 ^ && Daca obiectul curent este o paranteza Else && Daca obiectul curent nu este o paranteza lcTipCriteriu = Thisform.acriterii(Thisform.Containercriterii1.&ObjectName..criteriu_nr,3) If At('|', lcTipCriteriu) > 0 lcTipCriteriu = Left(lcTipCriteriu, At('|', lcTipCriteriu) -1) && tipul criteriului N|GetMask(12,gnPA) Endif luValoareCriteriu = Thisform.Containercriterii1.&ObjectName..Text1.Value *!* modificare ROAGEST v 2.0.55 lcCaption = Thisform.Containercriterii1.&ObjectName..lbl_criteriu.Caption Do Case Case lcTipCriteriu = "D" lcValoareCript = Dtoc(luValoareCriteriu) Case lcTipCriteriu = "N" lcValoareCript = Alltrim(Str(luValoareCriteriu,20,gnPCant)) Otherwise lcValoareCript = Upper(luValoareCriteriu) Endcase *!* modificare ROAGEST v 2.0.55 ^ * "Explicatie D&C\partd,partc\T\|E|ID_PARTD=<> OR ID_PARTC=<>\nom_parteneri" lcConditieSpeciala = Thisform.acriterii(Thisform.Containercriterii1.&ObjectName..criteriu_nr,4) lcIdValue = Thisform.Containercriterii1.&ObjectName..idValue lcIdCamp = Thisform.Containercriterii1.&ObjectName..idCamp lcCodCriteriu = Thisform.Containercriterii1.&ObjectName..codcriteriu lcNumeCriteriu=This.acriterii(Thisform.Containercriterii1.&ObjectName..criteriu_nr,2) If lcTipCriteriu = "E" lcFiltru = lcFiltru + [ ] + '~~'+lcLogic + [ ] + lcConditieSpeciala + [ ] *!* modificare ROAGEST v 2.0.55 lcFiltruCript = lcFiltruCript + Iif(!Empty(Nvl(lcLogic,'')),lcLogic + [|],[]) + ; ALLTRIM(lcCaption) + [;] + strtranx(lcNumeCriteriu,"([^a-zA-Z0-9])",[]) + [;;;|] *!* modificare ROAGEST v 2.0.55 ^ && Daca obiectul curent este un criteriu special atunci && copiaza codul special din array si opreste parcurgerea obiectelor Loop Endif && daca am completat camp id (obtinut din caut_alfa) If lcIdValue # "" *!* 21.11.2007 && VERIFIC DACA AM O EXPRESIE COMPLEXA |E| in loc de o lista de coloane && INLOCUIESC < CU lcIdValue DO CASE CASE '|E|'$lcNumeCriteriu lcFiltru = lcFiltru + [ ] + '~~'+lcLogic + " (" + Strtran(Substr(Upper(lcNumeCriteriu),4), [<>], lcIdValue) + ")" *!* modificare ROAGEST v 2.0.55 lcFiltruCript = lcFiltruCript + Iif(!Empty(Nvl(lcLogic,'')),lcLogic + [|],[]) + ; ALLTRIM(lcCaption) + [;] + ; strtranx(lcNumeCriteriu,"([^a-zA-Z0-9])",[]) + [;;] + lcIdValue + [;] + lcValoareCript + [|] *!* modificare ROAGEST v 2.0.55 ^ CASE '|E|'$lcIdCamp && |E|ID_PARTD=<> OR ID_PARTC=<> lcFiltru = lcFiltru + [ ] + '~~'+lcLogic + " (" + Strtran(Substr(Upper(lcIdCamp),4), [<>], lcIdValue) + ")" lcFiltruCript = lcFiltruCript + Iif(!Empty(Nvl(lcLogic,'')),lcLogic + [|],[]) + ; ALLTRIM(lcCaption) + [;] + ; strtranx(lcIdCamp,"([^a-zA-Z0-9])",[]) + [;;] + lcIdValue + [;] + lcValoareCript + [|] OTHERWISE lcFiltru = lcFiltru + [ ] + '~~'+lcLogic + " " + lcIdCamp + "=" + lcIdValue *!* modificare ROAGEST v 2.0.55 lcFiltruCript = lcFiltruCript + Iif(!Empty(Nvl(lcLogic,'')),lcLogic + [|],[]) + ; ALLTRIM(lcCaption) + [;] + ; lcNumeCriteriu + [;] + ; Alltrim(Str(Thisform.Containercriterii1.&ObjectName..Combo1.ListIndex)) + [;] + ; lcIdValue + [;] + ; lcValoareCript + [|] *!* modificare ROAGEST v 2.0.55 ^ ENDCASE Loop Endif If lcTipCriteriu = "A" lcFiltru = lcFiltru + [ ] + '~~'+lcLogic + [ (] + lcCodCriteriu +[) ] *!* modificare ROAGEST v 2.0.55 lcFiltruCript = lcFiltruCript + Iif(!Empty(Nvl(lcLogic,'')),lcLogic + [|],[]) + ; ALLTRIM(lcCaption) + [;] + ; lcNumeCriteriu + [;] + ; Alltrim(Str(Thisform.Containercriterii1.&ObjectName..Combo1.ListIndex)) + [;] + ; lcIdValue + [;|] *!* modificare ROAGEST v 2.0.55 ^ && Daca obiectul curent este un criteriu special atunci && copiaza codul special din array si opreste parcurgerea obiectelor Loop Endif lcExpresie = Alltrim(Thisform.Containercriterii1.&ObjectName..Combo1.List(Thisform.Containercriterii1.&ObjectName..Combo1.ListIndex)) Do Case Case lcTipCriteriu = "D1" lcvaloare = Alltrim(Str(Round(Val(Substr(luValoareCriteriu, 4))*12 + Val(Left(luValoareCriteriu, 2)),0))) && perioada = an*12+luna Case lcTipCriteriu = "D" lcvaloare = Alltrim(Dtos(luValoareCriteriu)) && data YYYYMMDD Case lcTipCriteriu = "N" lcvaloare = Alltrim(Transform(luValoareCriteriu)) Otherwise lcvaloare = Strtran(Alltrim(luValoareCriteriu),"'",['']) Endcase && Preluarea valorilor se face diferit in functie de tipul criteriului && mai exact daca este de tip data *!* modificare ROAGEST v 2.0.55 lcFiltruCript = lcFiltruCript + Iif(!Empty(Nvl(lcLogic,'')),lcLogic + [|],[]) + ; ALLTRIM(lcCaption) + [;] + ; Alltrim(lcNumeCriteriu) + [;] + ; Alltrim(Str(Thisform.Containercriterii1.&ObjectName..Combo1.ListIndex)) + [;] + ; Alltrim(lcIdValue) + [;] + Alltrim(lcValoareCript) + [|] *!* modificare ROAGEST v 2.0.55 ^ criteriustring="" *!* lcnumecriteriu=thisform.&ObjectName..numecriteriu *!* 21.11.2007 && VERIFIC DACA AM O EXPRESIE COMPLEXA |E| in loc de o lista de coloane If !'|E|'$lcNumeCriteriu *!* modificare ROACONT v 2.0.74 : UPPER Alines(Campuri, Upper(lcNumeCriteriu),2,",") *!* modificare ROACONT v 2.0.74 ^ Else Dimension Campuri(1) Campuri(1) = Substr(lcNumeCriteriu, 4) Endif *!* 21.11.2007 ^ If Alen(Campuri)>1 lcFiltru = lcFiltru + [ ] + '~~'+lcLogic + " (" Endif For NrCampuri = 1 To Alen(Campuri) If lcTipCriteriu = "D" Do Case ****************************************************************************************************** ************* * Criterii de tip Data * **************************************************** *************************************************************************************************CV*** Case lcExpresie = "egala" && criteriustring = [= To_Date('] + lcvaloare + [','YYYYMMDD')] && Case lcExpresie = "diferita" && criteriustring = [<> To_Date('] + lcvaloare + [','YYYYMMDD')] && Case lcExpresie = "mai mica" && criteriustring = [< To_Date('] + lcvaloare + [','YYYYMMDD')] && Case lcExpresie = "mai mica sau egala" && criteriustring = [<= To_Date('] + lcvaloare + [','YYYYMMDD')] && Case lcExpresie = "mai mare sau egala" && criteriustring = [>= To_Date('] + lcvaloare + [','YYYYMMDD')] && Case lcExpresie = "mai mare" && criteriustring = [> To_Date('] + lcvaloare + [','YYYYMMDD')] && Endcase && ******************Formarea stringului********************************************************************* Else && daca criteriul curent nu este de tip data(inseamna ca este numar sau text- cazurile speciale a fost tratat la inceput) Do Case ********************************************************************** ************* * Criterii de tip text * ******************** ******************************************************************CV** Case '|E|'$lcNumeCriteriu *!* 21.11.2007 && VERIFIC DACA AM O EXPRESIE COMPLEXA |E| in loc de o lista de coloane && INLOCUIESC <> cu lcValoare criteriustring = Strtran(Substr(Upper(lcNumeCriteriu),4), [<>], lcvaloare) Case lcExpresie="incepe cu" && criteriustring= [LIKE '] + Upper(lcvaloare) + [%'] && Case lcExpresie="este" && criteriustring=[='] + Upper(lcvaloare) + ['] && Case lcExpresie="nu este" && criteriustring=[!='] + Upper(lcvaloare) + ['] && Case lcExpresie="contine" && criteriustring= [LIKE '%] + Upper(lcvaloare) + [%'] && Case lcExpresie="nu contine" && criteriustring= [NOT LIKE '%] + Upper(lcvaloare) + [%'] && Case lcExpresie="nu are valori" && criteriustring= [is null] && Case lcExpresie="are valori" && criteriustring= [is not null] && ******************criterii numerice*********************************** Case lcExpresie="mai mare sau egal" && criteriustring = [>=]+Iif(lcvaloare="","0",lcvaloare) && Case lcExpresie="mai mic sau egal" && criteriustring = [<=]+Iif(lcvaloare="","0",lcvaloare) && Case lcExpresie="egal" && criteriustring = [=]+Iif(lcvaloare="","0",lcvaloare) && Case lcExpresie="diferit" && criteriustring = [<>]+Iif(lcvaloare="","0",lcvaloare) && Case lcExpresie="mai mic" && criteriustring = [<]+Iif(lcvaloare="","0",lcvaloare) && Case lcExpresie="mai mare" && criteriustring = [>]+Iif(lcvaloare="","0",lcvaloare) && Endcase && ******************Formarea stringului************************************* Endif && Verifica tipului de criteriu If NrCampuri > 1 lcThislogic = "SAU" Else If Alen(Campuri) > 1 lcThislogic = "" Else lcThislogic = lcLogic Endif ENDIF IF !EMPTY(m.lcThislogic) m.lcThislogic = '~~'+m.lcThislogic ENDIF *!* modificare ROAGEST v 2.0.118 *!* *!* modificare ROACONT v 2.0.74 : UPPER *!* lcFiltru= lcFiltru + [ ] + lcThislogic + [ UPPER(] + Alltrim(Campuri(NrCampuri)) + [) ] ; *!* + criteriustring *!* *!* modificare ROACONT v 2.0.74 ^ If Inlist(lcTipCriteriu ,[D],[D1],[N],[E],[A]) lcFiltru= lcFiltru + [ ] + '~~'+lcThislogic + [ ] + Alltrim(Campuri(NrCampuri)) + [ ] + criteriustring ELSE * pentru cautare dupa SCD, SCC (in registrul jurnal) nu fac UPPER(SCD/SCC) = XXX pentru ca nu se foloseste cautarea dupa index ACT.IDX_ACT_006 (SCD, SCC) IF INLIST(LOWER(Alltrim(Campuri(NrCampuri))), 'scd', 'scc') lcFiltru= lcFiltru + [ ] + '~~'+lcThislogic + [ ] + Alltrim(Campuri(NrCampuri)) + [ ] + criteriustring ELSE lcFiltru= lcFiltru + [ ] + '~~'+lcThislogic + [ UPPER(] + Alltrim(Campuri(NrCampuri)) + [) ] + criteriustring ENDIF Endif *!* modificare ROAGEST v 2.0.118 ^ If NrCampuri=Alen(Campuri) And NrCampuri > 1 lcFiltru= lcFiltru +")" Endif Endfor && NrCampuri = 1 TO ALEN(Campuri) NrCampuri=0 Release Campuri Endif && Verifica daca obiectul curent a fost operator de grup sau criteriu Endif && Verifica daca obiectul nu este sters Endfor && Parcurge toate obiectele de pe forma *!* lcFiltru=Strtran(lcFiltru, " SI ", " AND ") *!* lcFiltru=Strtran(lcFiltru, " SAU ", " OR ") lcFiltru=Strtran(lcFiltru, " ~~~~SI ", " AND ") lcFiltru=Strtran(lcFiltru, " ~~~~SAU ", " OR ") lcFiltru=Strtran(lcFiltru, " ~~SI ", " AND ") lcFiltru=Strtran(lcFiltru, " ~~SAU ", " OR ") Do While At(" ",lcFiltru)>0 lcFiltru=Strtran(lcFiltru," "," ") Enddo &&Scoate spatiile goale(din 2 spatii goale consecutive transforma in 1) Do While At("( )",lcFiltru)>0 Or At("( AND )",lcFiltru)>0 Or At("( OR )",lcFiltru)>0 Or At("( )",lcFiltru)>0 Or At("( AND",lcFiltru)>0 Or At("( OR",lcFiltru)>0 lcFiltru=Strtran(lcFiltru,"AND ( )","") lcFiltru=Strtran(lcFiltru,"OR ( )","") lcFiltru=Strtran(lcFiltru,"AND ( )","") lcFiltru=Strtran(lcFiltru,"OR ( )","") lcFiltru=Strtran(lcFiltru,"( )","") lcFiltru=Strtran(lcFiltru,"( AND )","") lcFiltru=Strtran(lcFiltru,"( OR )","") lcFiltru=Strtran(lcFiltru,"( AND","(") lcFiltru=Strtran(lcFiltru,"( OR","(") Do While At(" ",lcFiltru)>0 lcFiltru=Strtran(lcFiltru," "," ") Enddo Enddo && Curatare siruri goale, paranteze goale, si conditii logice goale "recursiv" lcFiltru = Alltrim(lcFiltru) lcFiltruRo = Alltrim(lcFiltruRo) If At("AND", lcFiltru) = 1 lcFiltru = Substr(lcFiltru, 4) Endif && curatare AND/OR de la inceputul conditiei If At("OR", lcFiltru) = 1 lcFiltru = Substr(lcFiltru, 3) Endif && curatare AND/OR de la inceputul conditiei If At("SI", lcFiltruRo) = 1 lcFiltruRo = Substr(lcFiltruRo, 3) Endif && curatare SI/SAU de la inceputul conditiei If At("SAU", lcFiltruRo) = 1 lcFiltruRo = Substr(lcFiltruRo, 4) Endif && curatare SI/SAU de la inceputul conditiei If Len(pcerrorstr)>0 AMESSAGEBOX(pcerrorstr,16) Return .F. && Daca au survenit erori Else lcFiltruRO = STRTRAN(m.lcFiltruRO, '~~', '') lcFiltru = STRTRAN(m.lcFiltru, '~~', '') lcFiltruCript = STRTRAN(m.lcFiltruCript, '~~', '') This.filtruro =Alltrim(lcFiltruRo) This.filtru= Alltrim(lcFiltru) *!* modificare ROAGEST v 2.0.55 This.filtrucript = Alltrim(lcFiltruCript) *!* modificare ROAGEST v 2.0.55 ^ Return .T. && Daca nu au survenit erori trimite stringul la forma principala Endif ENDPROC PROCEDURE Init lPARAMETERS tacriterii EXTERNAL ARRAY tacriterii DIMENSION this.acriterii(alen(tacriterii,1), 6) ACOPY(tacriterii,this.acriterii) DODEFAULT() this.lb_titlu_alb_b121.Caption="Criterii de filtrare" thisform.AddObject("SelectorCriteriu","mycrit",@tacriterii) *thisform.SelectorCriteriu.left=(thisform.Width-thisform.SelectorCriteriu.width)/2 thisform.SelectorCriteriu.left=25 thisform.SelectorCriteriu.Top=40 thisform.SelectorCriteriu.visible=.T. thisform.SelectorCriteriu.Combo1.Setfocus thisform.do_colectienom() thisform.SelectorCriteriu.Combo1.Setfocus this.Containercriterii1.Top=this.line1.Top + 10 currentcontainerheight= (this.Height-this.line1.Top-20)/30 this.Containercriterii1.height=FLOOR(currentcontainerheight)*30 ENDPROC PROCEDURE KeyPress Lparameters nKeyCode, nShiftAltCtrl If nKeyCode=27 Nodefault This.do_renunt() Else DoDefault(nKeyCode, nShiftAltCtrl) Endif ENDPROC PROCEDURE paramsmatrix ENDPROC PROCEDURE Show LPARAMETERS nStyle thisform.SelectorCriteriu.Combo1.Setfocus ENDPROC ENDDEFINE DEFINE CLASS mycrit AS container *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="lbl_Logic" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cmd_OpenGroup" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cmd_CloseGroup" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Combo1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cmd_Add" UniqueID="" Timestamp="" /> * *m: loadarray *p: logic *p: negat *a: acriteriiuns[1,4] *a: acriterii[1,4] *p: _memberdata && XML Metadata for customizable properties * * BackStyle = 0 BorderWidth = 0 Height = 25 logic = Name = "mycrit" negat = .F. Width = 425 _memberdata = * ADD OBJECT 'cmd_Add' AS commandbutton WITH ; BackColor = 255,255,255, ; Caption = "Adauga criteriu", ; Enabled = .F., ; Height = 21, ; Left = 327, ; Name = "cmd_Add", ; Top = 2, ; Visible = .F., ; Width = 96 *< END OBJECT: BaseClass="commandbutton" /> ADD OBJECT 'cmd_CloseGroup' AS commandbutton WITH ; BackColor = 255,255,255, ; Caption = ")", ; Height = 21, ; Left = 68, ; Name = "cmd_CloseGroup", ; TabStop = .F., ; Top = 2, ; Width = 17 *< END OBJECT: BaseClass="commandbutton" /> ADD OBJECT 'cmd_OpenGroup' AS commandbutton WITH ; BackColor = 255,255,255, ; Caption = "(", ; Height = 21, ; Left = 48, ; Name = "cmd_OpenGroup", ; TabStop = .F., ; Top = 2, ; Width = 17 *< END OBJECT: BaseClass="commandbutton" /> ADD OBJECT 'Combo1' AS combobox WITH ; DisplayCount = 8, ; Height = 21, ; Left = 99, ; Name = "Combo1", ; NumberOfElements = 8, ; RowSource = "", ; RowSourceType = 1, ; SpecialEffect = 1, ; Style = 2, ; Top = 1, ; Visible = .F., ; Width = 223 *< END OBJECT: BaseClass="combobox" /> ADD OBJECT 'lbl_Logic' AS label WITH ; Alignment = 2, ; BackStyle = 0, ; Caption = "SI", ; FontBold = .T., ; FontName = "Verdana", ; FontSize = 10, ; FontUnderline = .T., ; ForeColor = 0,0,255, ; Height = 17, ; Left = 15, ; MousePointer = 15, ; Name = "lbl_Logic", ; Top = 4, ; Width = 33 *< END OBJECT: BaseClass="label" /> PROCEDURE Destroy _Screen.StatusBar.ctlMessage="" _Screen.StatusBar.tag="" ENDPROC PROCEDURE Init Lparameters tacriterii External Array tacriterii This.logic="SI" This.negat=.F. This.lbl_Logic.Caption=This.logic Dimension This.acriterii(Alen(tacriterii,1),7) Dimension This.acriteriiuns(Alen(tacriterii,1),6) Acopy(tacriterii,This.acriteriiuns) For x=1 To Alen(This.acriterii,1) For i = 1 To 6 This.acriterii(x,i)=tacriterii(x,i) Endfor This.acriterii(x,7)=x Endfor nleft=110 ntop=55 ncontor=0 ncontorcols=1 nrlines=Ceiling(Alen(This.acriterii,1)/7) Asort(This.acriterii) For N = 1 To Alen(This.acriterii,1) ncontor=ncontor+1 This.combo1.AddItem(This.acriterii(N,1)) lbl_Criteriu="lbl_Criteriu"+Transform(N) This.Parent.AddObject(lbl_Criteriu,"cmd_addcriteriu") This.Parent.&lbl_Criteriu..Top=ntop + ncontor *17 This.Parent.&lbl_Criteriu..Left=nleft * ncontorcols - 70 This.Parent.&lbl_Criteriu..Caption=This.acriteriiuns(N,1) IF !EMPTY(This.acriteriiuns(N,6)) This.Parent.&lbl_Criteriu..ToolTipText=This.acriteriiuns(N,6) ENDIF This.Parent.&lbl_Criteriu..Visible=.T. If ncontor=nrlines ncontor=0 ncontorcols=ncontorcols+1 Endif Endfor This.Parent.line1.Top=nrlines*17 + ntop+ 20 This.Parent.currentHeight=10 This.combo1.ListIndex=1 This.cmd_Add.Enabled= .T. ENDPROC PROCEDURE loadarray Lparameters tacriterii External Array tacriterii This.logic="SI" This.negat=.F. This.lbl_Logic.Caption=This.logic Dimension This.acriterii(Alen(tacriterii,1),7) Acopy(tacriterii,This.acriterii) This.combo1.Clear For N = 1 To Alen(This.acriterii,1) lctestText=This.acriterii(N,1) lbExists=.F. For x=1 To This.Parent.nr_criterii ObjectName="Criteriu"+Transform(x) If This.Parent.Containercriterii1.&ObjectName..Tag#"GroupOpen" And This.Parent.Containercriterii1.&ObjectName..Tag#"GroupClose" And This.Parent.Containercriterii1.&ObjectName..Tag#"Sters" If This.Parent.Containercriterii1.&ObjectName..numecriteriu=lctestText lbExists=.T. Endif Endif Endfor If lbExists And (This.acriterii(N,3)="E" Or This.acriterii(N,3)="A") This.combo1.AddItem("\]"+This.acriterii(N,1),N,1) Else This.combo1.AddItem(This.acriterii(N,1),N,1) Endif Endfor This.cmd_Add.Enabled= .T. ENDPROC PROCEDURE cmd_Add.Click *!* Adauga criteriu pe container lctextoptions="incepe cu,este,nu este,contine,nu contine,nu are valori,are valori" lcnroptions="egal,diferit,mai mare sau egal,mai mic sau egal,mai mare,mai mic" lcdataoptions="egala,diferita,mai mare,mai mica,mai mare sau egala,mai mica sau egala" lctext="" lcClassId="" lnoftimes=1 IF SUBSTR(THIS.PARENT.combo1.LIST(THIS.PARENT.combo1.LISTINDEX),1,1)#"\" LOCAL lcTipCriteriu lcTipCriteriu = THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),3) IF AT('|', lcTipCriteriu) > 0 lcTipCriteriu = LEFT(lcTipCriteriu, AT('|', lcTipCriteriu) -1) && tipul criteriului N|GetMask(12,gnPA) ENDIF DO WHILE lnoftimes < 3 DO CASE CASE INLIST(lcTipCriteriu, "N", "D1") lcOptions = lcnroptions CASE lcTipCriteriu = "T" lcOptions=lctextoptions CASE lcTipCriteriu = "I" lcOptions="Doarlista" CASE lcTipCriteriu = "D" lcOptions=lcdataoptions CASE lcTipCriteriu = "E" lcOptions="Disabled" CASE lcTipCriteriu = "A" lcOptions = SUBSTR(THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),4),1,AT("#",THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),4))-1) lctext = SUBSTR(THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),4),AT("#",THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),4))+1) IF(THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),2))#"nofield" lcClassId = THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),2) ENDIF OTHERWISE lcOptions = lctextoptions ENDCASE IF THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),5)#"" AND THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),5)#"none" lcKeyNomenclator=THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),5) lcIdCamp=THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),4) ELSE lcKeyNomenclator="none" lcIdCamp="" ENDIF THIS.PARENT.PARENT.nr_criterii=THIS.PARENT.PARENT.nr_criterii+1 NrCriterii=THIS.PARENT.PARENT.nr_criterii ObjectName="Criteriu"+TRANSFORM(NrCriterii) PreviusObjectName="Criteriu"+TRANSFORM(NrCriterii-1) IF(NrCriterii=1 OR THIS.PARENT.PARENT.Containercriterii1.&PreviusObjectName..TAG="GroupOpen") logicCaption="" ELSE *** in caz ca sunt sterse primele inregistrari lbexinreg=.F. FOR i = 1 TO NrCriterii-1 locurObj="Criteriu"+TRANSFORM(i) IF THIS.PARENT.PARENT.Containercriterii1.&locurObj..TAG#"Sters" lbexinreg=.T. ENDIF ENDFOR *** IF lbexinreg=.T. logicCaption=THIS.PARENT.logic ELSE logicCaption="" ENDIF ENDIF WITH THIS.PARENT.PARENT .Containercriterii1.ADDOBJECT("&ObjectName","_ccriteriu",THIS.PARENT.combo1.LIST(THIS.PARENT.combo1.LISTINDEX),logicCaption,lcOptions,lcKeyNomenclator,THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),3)) IF lcIdCamp#"" .Containercriterii1.&ObjectName..idCamp=lcIdCamp ENDIF .currentHeight=.currentHeight+.Containercriterii1.&ObjectName..HEIGHT+10 .Containercriterii1.&ObjectName..LEFT=.currentLeft .Containercriterii1.&ObjectName..criteriu_nr=THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6) lcthiscrit="lbl_Criteriu"+TRANSFORM(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6)) THIS.PARENT.PARENT.&lcthiscrit..FORECOLOR=RGB(15,15,200) *!* setare Mai mare sau egal / Mai mic sau egal in functie de ce e selectat IF lcTipCriteriu = "D" IF lnoftimes=1 .Containercriterii1.&ObjectName..combo1.VALUE=.Containercriterii1.&ObjectName..combo1.LIST(5) ELSE .Containercriterii1.&ObjectName..combo1.VALUE=.Containercriterii1.&ObjectName..combo1.LIST(6) ENDIF ENDIF IF INLIST(lcTipCriteriu, "N", "D1") IF lnoftimes=1 .Containercriterii1.&ObjectName..combo1.VALUE=.Containercriterii1.&ObjectName..combo1.LIST(3) ELSE .Containercriterii1.&ObjectName..combo1.VALUE=.Containercriterii1.&ObjectName..combo1.LIST(4) ENDIF ENDIF *!* sfarsit setare Mai mare sau egal / Mai mic sau egal in functie de ce e selectat lcspecial="false" IF lctext#"" .Containercriterii1.&ObjectName..text1.VALUE=lctext .Containercriterii1.&ObjectName..codcriteriu=SUBSTR(lctext,1,AT(",",lctext)-1) .Containercriterii1.&ObjectName..text1.VISIBLE=.F. .Containercriterii1.&ObjectName..ClassId=lcClassId .Containercriterii1.&ObjectName..combo1.WIDTH=275 THIS.PARENT.combo1.LIST(THIS.PARENT.combo1.LISTINDEX)="\]"+THIS.PARENT.combo1.LIST(THIS.PARENT.combo1.LISTINDEX) IF(THIS.PARENT.combo1.LISTINDEX *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="Combo1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lbl_Logic" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cmd_Add" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cmd_OpenGroup" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cmd_CloseGroup" UniqueID="" Timestamp="" /> * *m: loadarray *p: logic *p: negat *a: acriteriiuns[1,4] *a: acriterii[1,4] * * BackStyle = 0 BorderWidth = 0 Height = 21 logic = Name = "mycrit" negat = .F. Width = 425 * ADD OBJECT 'cmd_Add' AS commandbutton WITH ; BackColor = 255,255,255, ; Caption = "Adauga criteriu", ; Enabled = .F., ; Height = 21, ; Left = 282, ; Name = "cmd_Add", ; Top = 1, ; Width = 96 *< END OBJECT: BaseClass="commandbutton" /> ADD OBJECT 'cmd_CloseGroup' AS commandbutton WITH ; BackColor = 255,255,255, ; Caption = ")", ; Height = 21, ; Left = 401, ; Name = "cmd_CloseGroup", ; Top = 1, ; Width = 17 *< END OBJECT: BaseClass="commandbutton" /> ADD OBJECT 'cmd_OpenGroup' AS commandbutton WITH ; BackColor = 255,255,255, ; Caption = "(", ; Height = 21, ; Left = 381, ; Name = "cmd_OpenGroup", ; Top = 1, ; Width = 17 *< END OBJECT: BaseClass="commandbutton" /> ADD OBJECT 'Combo1' AS combobox WITH ; DisplayCount = 8, ; Height = 21, ; Left = 54, ; Name = "Combo1", ; NumberOfElements = 8, ; RowSource = "", ; RowSourceType = 1, ; SpecialEffect = 1, ; Style = 2, ; Top = 0, ; Width = 223 *< END OBJECT: BaseClass="combobox" /> ADD OBJECT 'lbl_Logic' AS label WITH ; Alignment = 2, ; BackStyle = 0, ; Caption = "SI", ; FontBold = .T., ; FontName = "Verdana", ; FontSize = 10, ; FontUnderline = .T., ; ForeColor = 0,0,255, ; Height = 17, ; Left = 15, ; MousePointer = 15, ; Name = "lbl_Logic", ; Top = 4, ; Width = 33 *< END OBJECT: BaseClass="label" /> PROCEDURE Destroy _Screen.StatusBar.ctlMessage="" _Screen.StatusBar.tag="" ENDPROC PROCEDURE Init LPARAMETERS tacriterii EXTERNAL ARRAY tacriterii this.logic="SI" this.negat=.F. this.lbl_Logic.caption=this.logic DIMENSION this.acriterii(ALEN(tacriterii,1),6) DIMENSION this.acriteriiuns(ALEN(tacriterii,1),5) ACOPY(tacriterii,this.acriteriiuns) FOR x=1 TO ALEN(this.acriterii,1) FOR i = 1 TO 5 this.acriterii(x,i)=tacriterii(x,i) ENDFOR this.acriterii(x,6)=x ENDFOR nleft=110 ntop=55 ncontor=0 ncontorcols=1 nrlines=Ceiling(ALEN(this.acriterii,1)/7) ASORT(this.acriterii) FOR n = 1 TO ALEN(this.acriterii,1) ncontor=ncontor+1 this.combo1.AddItem(this.acriterii(n,1)) lbl_Criteriu="lbl_Criteriu"+TRANSFORM(n) this.Parent.AddObject(lbl_Criteriu,"cmd_addcriteriu") this.Parent.&lbl_Criteriu..top=ntop + nContor *17 this.Parent.&lbl_Criteriu..left=nleft * nContorcols - 70 this.Parent.&lbl_Criteriu..caption=this.acriteriiuns(n,1) this.Parent.&lbl_Criteriu..visible=.T. IF ncontor=nrlines ncontor=0 ncontorcols=ncontorcols+1 ENDIF ENDFOR this.Parent.line1.top=nrlines*17 + ntop+ 20 this.Parent.currentHeight=10 this.combo1.ListIndex=1 this.cmd_Add.Enabled= .T. ENDPROC PROCEDURE loadarray LPARAMETERS tacriterii EXTERNAL ARRAY tacriterii this.logic="SI" this.negat=.F. this.lbl_Logic.caption=this.logic DIMENSION this.acriterii(ALEN(tacriterii,1),6) ACOPY(tacriterii,this.acriterii) this.combo1.Clear FOR n = 1 TO ALEN(this.acriterii,1) lctestText=this.acriterii(n,1) lbExists=.F. FOR x=1 TO this.Parent.nr_criterii ObjectName="Criteriu"+Transform(x) IF this.Parent.Containercriterii1.&ObjectName..Tag#"GroupOpen" AND this.Parent.Containercriterii1.&ObjectName..Tag#"GroupClose" AND this.Parent.Containercriterii1.&ObjectName..Tag#"Sters" IF this.Parent.Containercriterii1.&ObjectName..numecriteriu=lctestText lbExists=.T. ENDIF ENDIF ENDFOR IF lbExists AND (this.acriterii(n,3)="E" OR this.acriterii(n,3)="A") this.combo1.AddItem("\]"+this.acriterii(n,1),n,1) ELSE this.combo1.AddItem(this.acriterii(n,1),n,1) ENDIF ENDFOR this.cmd_Add.Enabled= .T. ENDPROC PROCEDURE cmd_Add.Click *!* Adauga criteriu pe container lctextoptions="incepe cu,este,nu este,contine,nu contine,nu are valori,are valori" lcnroptions="egal,diferit,mai mare sau egal,mai mic sau egal,mai mare,mai mic" lcdataoptions="egala,diferita,mai mare,mai mica,mai mare sau egala,mai mica sau egala" lctext="" lcClassId="" lnoftimes=1 IF SUBSTR(THIS.PARENT.combo1.LIST(THIS.PARENT.combo1.LISTINDEX),1,1)#"\" LOCAL lcTipCriteriu lcTipCriteriu = THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),3) IF AT('|', lcTipCriteriu) > 0 lcTipCriteriu = LEFT(lcTipCriteriu, AT('|', lcTipCriteriu) -1) && tipul criteriului N|GetMask(12,gnPA) ENDIF DO WHILE lnoftimes < 3 DO CASE CASE INLIST(lcTipCriteriu, "N", "D1") lcOptions = lcnroptions CASE lcTipCriteriu = "T" lcOptions=lctextoptions CASE lcTipCriteriu = "I" lcOptions="Doarlista" CASE lcTipCriteriu = "D" lcOptions=lcdataoptions CASE lcTipCriteriu = "E" lcOptions="Disabled" CASE lcTipCriteriu = "A" lcOptions = SUBSTR(THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),4),1,AT("#",THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),4))-1) lctext = SUBSTR(THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),4),AT("#",THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),4))+1) IF(THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),2))#"nofield" lcClassId = THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),2) ENDIF OTHERWISE lcOptions = lctextoptions ENDCASE IF THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),5)#"" AND THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),5)#"none" lcKeyNomenclator=THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),5) lcIdCamp=THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),4) ELSE lcKeyNomenclator="none" lcIdCamp="" ENDIF THIS.PARENT.PARENT.nr_criterii=THIS.PARENT.PARENT.nr_criterii+1 NrCriterii=THIS.PARENT.PARENT.nr_criterii ObjectName="Criteriu"+TRANSFORM(NrCriterii) PreviusObjectName="Criteriu"+TRANSFORM(NrCriterii-1) IF(NrCriterii=1 OR THIS.PARENT.PARENT.Containercriterii1.&PreviusObjectName..TAG="GroupOpen") logicCaption="" ELSE *** in caz ca sunt sterse primele inregistrari lbexinreg=.F. FOR i = 1 TO NrCriterii-1 locurObj="Criteriu"+TRANSFORM(i) IF THIS.PARENT.PARENT.Containercriterii1.&locurObj..TAG#"Sters" lbexinreg=.T. ENDIF ENDFOR *** IF lbexinreg=.T. logicCaption=THIS.PARENT.logic ELSE logicCaption="" ENDIF ENDIF WITH THIS.PARENT.PARENT .Containercriterii1.ADDOBJECT("&ObjectName","_ccriteriu",THIS.PARENT.combo1.LIST(THIS.PARENT.combo1.LISTINDEX),logicCaption,lcOptions,lcKeyNomenclator,THIS.PARENT.acriteriiuns(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6),3)) IF lcIdCamp#"" .Containercriterii1.&ObjectName..idCamp=lcIdCamp ENDIF .currentHeight=.currentHeight+.Containercriterii1.&ObjectName..HEIGHT+10 .Containercriterii1.&ObjectName..LEFT=.currentLeft .Containercriterii1.&ObjectName..criteriu_nr=THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6) lcthiscrit="lbl_Criteriu"+TRANSFORM(THIS.PARENT.acriterii(THIS.PARENT.combo1.LISTINDEX,6)) THIS.PARENT.PARENT.&lcthiscrit..FORECOLOR=RGB(15,15,200) *!* setare Mai mare sau egal / Mai mic sau egal in functie de ce e selectat IF lcTipCriteriu = "D" IF lnoftimes=1 .Containercriterii1.&ObjectName..combo1.VALUE=.Containercriterii1.&ObjectName..combo1.LIST(5) ELSE .Containercriterii1.&ObjectName..combo1.VALUE=.Containercriterii1.&ObjectName..combo1.LIST(6) ENDIF ENDIF IF INLIST(lcTipCriteriu, "N", "D1") IF lnoftimes=1 .Containercriterii1.&ObjectName..combo1.VALUE=.Containercriterii1.&ObjectName..combo1.LIST(3) ELSE .Containercriterii1.&ObjectName..combo1.VALUE=.Containercriterii1.&ObjectName..combo1.LIST(4) ENDIF ENDIF *!* sfarsit setare Mai mare sau egal / Mai mic sau egal in functie de ce e selectat lcspecial="false" IF lctext#"" .Containercriterii1.&ObjectName..text1.VALUE=lctext .Containercriterii1.&ObjectName..codcriteriu=SUBSTR(lctext,1,AT(",",lctext)-1) .Containercriterii1.&ObjectName..text1.VISIBLE=.F. .Containercriterii1.&ObjectName..ClassId=lcClassId .Containercriterii1.&ObjectName..combo1.WIDTH=275 THIS.PARENT.combo1.LIST(THIS.PARENT.combo1.LISTINDEX)="\]"+THIS.PARENT.combo1.LIST(THIS.PARENT.combo1.LISTINDEX) IF(THIS.PARENT.combo1.LISTINDEX * *p: codcriteriu *p: _memberdata && XML Metadata for customizable properties * * Caption = "Label1" codcriteriu = Height = 20 MousePointer = 15 Name = "paranteza" Width = 68 _memberdata = * PROCEDURE Click CurrentObjectNumber=VAL(ALLTRIM(SUBSTR(THIS.NAME,9))) lnDeletedHeight =THIS.HEIGHT + 10 THIS.PARENT.PARENT.CurrentHeight=THIS.PARENT.PARENT.CurrentHeight - lnDeletedHeight THIS.HEIGHT=0 DO CASE CASE THIS.TAG="GroupClose" THIS.TAG="Sters" THIS.PARENT.PARENT.currentLeft=THIS.PARENT.PARENT.currentLeft+25 CASE THIS.TAG="GroupOpen" AND THIS.PARENT.PARENT.currentLeft > 25 THIS.TAG="Sters" THIS.PARENT.PARENT.currentLeft = THIS.PARENT.PARENT.currentLeft-25 OTHERWISE THIS.TAG="Sters" ENDCASE FOR N=CurrentObjectNumber TO THIS.PARENT.PARENT.nr_criterii ObjectName="Criteriu"+TRANSFORM(N) THIS.PARENT.&ObjectName..TOP=THIS.PARENT.&ObjectName..TOP-lnDeletedHeight ENDFOR ENDPROC PROCEDURE MouseEnter LPARAMETERS nButton, nShift, nXCoord, nYCoord this.ForeColor=RGB(0,0,255) this.FontBold=.T. ENDPROC PROCEDURE MouseLeave LPARAMETERS nButton, nShift, nXCoord, nYCoord this.ForeColor=RGB(0,0,0) this.FontBold=.F. ENDPROC ENDDEFINE DEFINE CLASS scontainer AS container *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="up_1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="down_1" UniqueID="" Timestamp="" /> * *m: do_refresh *m: do_scrolldown *m: do_scrollup *m: scroll_bottom *p: aaaaaaa *p: offset *p: pic * * aaaaaaa = BackStyle = 0 BorderWidth = 0 Height = 330 Name = "scontainer" offset = 0 pic = .F. Picture = Width = 817 * ADD OBJECT 'down_1' AS but_jos WITH ; Left = 780, ; Name = "down_1", ; Top = 43 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'up_1' AS but_sus WITH ; Left = 780, ; Name = "up_1", ; Top = 13 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> PROCEDURE do_refresh LOCAL lnNr lnheight=10 For Each Item In This.Controls If Item.Name#"up_1" And Item.Name#"down_1" And Item.Tag#"Sters" And Item.Top>0 lnheight=lnheight+Item.Height+10 Endif Endfor If lnheight> This.Height This.down_1.Tag="activ" This.down_1.Visible=.T. Else This.down_1.Tag="inactiv" This.down_1.Visible=.F. Endif lnNr=0 goodobjectname="none" DO WHILE lnNr