*-------------------------------------------------------------------------------------------------------------------------------------------------------- * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- *< FOXBIN2PRG: Version="1.21" SourceFile="_cb_base.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * * DEFINE CLASS _cbautofill AS _combobox OF "_baza.vcx" *< CLASSDATA: Baseclass="combobox" Timestamp="" Scale="Pixels" Uniqueid="" /> * *p: acstyle *p: cpk && Numele campului cheie primara ( PK ) din cursorul atasat *p: lastdisplayvalue *p: lastsellength *p: lastselstart *p: npk && Valoarea campului cheie primara ( PK ) corespunzator valorii afisate * * acstyle = 2 BorderStyle = 1 cpk = FontCharSet = 238 Format = "!" Height = 24 lastdisplayvalue = lastsellength = 0 lastselstart = 0 Name = "_cbautofill" npk = 0 RowSourceType = 2 SelectOnEntry = .T. Style = 0 Width = 240 * PROCEDURE InteractiveChange *!* modificare adrese parteneri 12.2013 If This.Style = 0 *!* modificare adrese parteneri 12.2013 ^ Local lnStyle, lnLastKey, lcDisplayValue lnLastKey=Lastkey() lnStyle = This.Style *!* modificare adrese parteneri 12.2013 *!* If This.Style = 2 *!* This.Style = 0 *!* Endif *!* modificare adrese parteneri 12.2013 ^ If (lnLastKey>=32 And lnLastKey<=126) If This.SelStart>=1 lcDisplayValue=Substr(This.DisplayValue,1,This.SelStart-1)+(Chr(lnLastKey)) Else lcDisplayValue=(Chr(lnLastKey))+Allt(This.DisplayValue) Endif If Empty(lcDisplayValue) lcDisplayValue=Allt(Chr(lnLastKey)) Endif For i = 1 To This.ListCount If Upper(lcDisplayValue)=Upper(Substr(This.List(i),1,Len(lcDisplayValue))) This.DisplayValue=This.List(i) If Len(Allt(This.DisplayValue))>Len(lcDisplayValue) This.SelStart=Len(lcDisplayValue) This.SelLength=Len(Allt(This.DisplayValue))-Len(lcDisplayValue) Endif This.lastdisplayvalue = This.DisplayValue This.lastselstart = This.SelStart This.lastsellength = This.SelLength Return Endif Endfor *&& Removed the next for line to allow for the DisplayValue to be added to the table. *!* if this.acStyle = 2 *!* this.displayvalue = this.lastdisplayvalue *!* this.selstart = this.lastselstart *!* this.sellength = this.lastsellength *!* endif Endif *!* modificare adrese parteneri 12.2013 Else DoDefault() Endif *!* modificare adrese parteneri 12.2013 ^ ENDPROC PROCEDURE Requery This.Value = This.DisplayValue && Just to reset the display value ENDPROC PROCEDURE Valid *!* 09.03.2014 *!* marius.mutu *!* in caz ca sunt mai multe campuri delimitate prin virgula, iau primul camp *!* modificare adrese parteneri 12.2013 Local cTableName,cFieldName,nAnswer,cValue,cPK cTableName = Substr(This.RowSource,1,At('.',This.RowSource)-1) If This.Style = 0 *!* modificare adrese parteneri 12.2013 ^ If !Empty(This.DisplayValue) *Store substr(This.RowSource,1,at('.',This.RowSource)-1) To cTableName &&Won't work for VFP5.0 *Store substr(This.RowSource,at('.',This.RowSource)+1) To cFieldName && This is normally used for 3 character extension, but it works for any lenght. Won't work for VFP5.0 cFieldName = Substr(This.RowSource,At('.',This.RowSource)+1) cFieldName = GETWORDNUM(m.cFieldName,1, ',') && in caz ca sunt mai multe campuri delimitate prin virgula, iau primul camp Select (cTableName) Locate For &cFieldName = This.DisplayValue If !Found() *nAnswer = Messagebox("Aceasta valoare nu exista in baza de date,"+Chr(13)+"Doriti sa o adaugati?",36,"") *If nAnswer = 6 Insert Into &cTableName (&cFieldName) Values (This.DisplayValue) If CursorGetProp("Buffering") > 1 && Check to see if we should use tableupdate Tableupdate(1,.T.,cTableName) Endif This.Requery() && To reset the display value *!* Else *!* Store '' To This.DisplayValue *!* Endif Endif Endif *!* modificare adrese parteneri 12.2013 Else DoDefault() Endif cPK = This.cpk If !EMPTY(cPK) Select (cTableName) This.npk = &cPK Endif *!* modificare adrese parteneri 12.2013 ^ ENDPROC ENDDEFINE DEFINE CLASS _cbbase AS _combobox OF "_baza.vcx" *< CLASSDATA: Baseclass="combobox" Timestamp="" Scale="Pixels" Uniqueid="" /> #INCLUDE "c:\program files\microsoft visual foxpro 8\foxpro.h" * FontCharSet = 238 Name = "_cbbase" * ENDDEFINE DEFINE CLASS _cbsearch AS _combobox OF "_baza.vcx" *< CLASSDATA: Baseclass="combobox" Timestamp="" Scale="Pixels" Uniqueid="" /> * *p: acstyle *p: lastdisplayvalue *p: lastsellenght *p: lastselstart *p: sellenght * * acstyle = 2 lastdisplayvalue = lastsellenght = 0 lastselstart = 0 Name = "_cbsearch" sellenght = 0 Style = 0 _memberdata = * PROCEDURE InteractiveChange Local lnStyle, lnLastKey, lcDisplayValue lnLastKey=Lastkey() lnStyle = This.Style If This.Style = 2 This.Style = 0 Endi If (lnLastKey>=32 And lnLastKey<=126) If This.SelStart>=1 lcDisplayValue=Substr(This.DisplayValue,1,This.SelStart-1)+(Chr(lnLastKey)) Else lcDisplayValue=(Chr(lnLastKey))+Allt(This.DisplayValue) Endi If Empty(lcDisplayValue) lcDisplayValue=Allt(Chr(lnLastKey)) Endi For i = 1 To This.ListCount If Upper(lcDisplayValue) == Upper(Substr(This.List(i),1,Len(lcDisplayValue))) This.DisplayValue=This.List(i) This.SelStart=Len(lcDisplayValue) nlLength=Len(Allt(This.DisplayValue))-Len(lcDisplayValue) This.SelLength=Iif(nlLength <0,0,nlLength) This.lastdisplayvalue = This.DisplayValue This.lastselstart = This.SelStart This.lastsellenght = This.sellenght Return Endi Endfor Endif ENDPROC ENDDEFINE DEFINE CLASS _cbsql AS _combobox OF "_baza.vcx" *< CLASSDATA: Baseclass="combobox" Timestamp="" Scale="Pixels" Uniqueid="" /> * *m: findrow *m: log *m: resettext *p: csearchstring *p: isclick *p: llimittolist *p: pcursorname *p: pfieldactiv *p: prowsource *p: secondfield *p: secondsearchfield * * csearchstring = Height = 24 isclick = .F. llimittolist = .T. Name = "_cbsql" pcursorname = pfieldactiv = prowsource = secondfield = secondsearchfield = SelectOnEntry = .T. Style = 0 Width = 97 _memberdata = * PROCEDURE Click This.Log('Click') this.isclick = .T. this.sellength = MAX(LEN(RTRIM(NVL(this.displayvalue,''))) - this.selstart, 0) this.csearchstring = LEFT(NVL(this.displayvalue,''), this.selstart) This.Log('Click ^') ENDPROC PROCEDURE findrow This.Log('FindRow') LOCAL lcExact lcExact = SET("Exact") SET EXACT OFF LOCATE FOR UPPER(EVALUATE(this.pfieldactiv)) = UPPER(this.csearchstring) IF !FOUND() IF !EMPTY(this.secondfield) LOCATE FOR EVALUATE(this.secondfield) = UPPER(this.csearchstring) + " " OR EVALUATE(this.secondfield) = "RO" + UPPER(this.csearchstring) + " " IF !FOUND() LOCATE FOR EVALUATE(this.secondfield) = UPPER(this.csearchstring) OR EVALUATE(this.secondfield) = "RO" + UPPER(this.csearchstring) ENDIF SET EXACT &lcExact IF FOUND() RETURN 3 ELSE RETURN 2 ENDIF ELSE SET EXACT &lcExact RETURN 2 ENDIF ELSE SET EXACT &lcExact RETURN 1 ENDIF ENDPROC PROCEDURE GotFocus LOCAL lcDisplayValue This.Log('GotFocus') lcDisplayValue = NVL(this.displayvalue, '') IF this.selectonentry AND !this.isClick AND INLIST(LASTKEY(), 13, 5, 24, 4, 19, 9) AND !ISNULL(this.displayvalue) FOR iii = 1 TO LEN(ALLTRIM(this.displayvalue)) KEYBOARD '{SHIFT + rightarrow}' ENDFOR ENDIF this.selstart = 0 this.sellength = LEN(RTRIM(m.lcDisplayValue)) this.csearchstring = "" this.isclick = .F. This.Log('GotFocus ^') ENDPROC PROCEDURE InteractiveChange This.Log('InteractiveChange') this.csearchstring = "" This.Log('InteractiveChange ^') ENDPROC PROCEDURE KeyPress LPARAMETERS nkeycode, nshiftaltctrl LOCAL lnrecno, msearchstring, mselstart, lcDisplayValue This.Log('KeyPress') lcDisplayValue = NVL(this.DisplayValue, '') SELECT (this.pcursorname) IF (EMPTY(this.csearchstring) OR (m.lcDisplayValue <> this.csearchstring AND m.lcDisplayValue <> "RO" + this.csearchstring)) AND !EMPTY(m.lcDisplayValue) this.resettext() IF nkeycode = 13 this.findrow() ENDIF ENDIF msearchstring = this.csearchstring mselstart = 0 IF BITAND(4, nshiftaltctrl) == 4 RETURN ENDIF IF (nkeycode = 54 .AND. ; nshiftaltctrl = 1) .OR. ; (nshiftaltctrl = 2 .AND. ; nkeycode = 97) this.resettext() ENDIF IF this.rowsourcetype = 3 AND !INLIST(nkeycode, 5, 24, 13, 54, 160, 152) IF !EMPTY(this.prowsource) this.rowsource = "" this.requery() this.rowsource = this.prowsource this.prowsource = "" this.requery() this.refresh() this.csearchstring = "" ELSE IF nkeycode = 10 IF !EMPTY(this.secondsearchfield) mfieldactiv = this.secondsearchfield ELSE mfieldactiv = this.pfieldactiv ENDIF mQuery="SELECT * FROM (This.pCursorName) WHERE ALLTRIM(This.DisplayValue)$ UPPER(&mFieldActiv) INTO CURSOR (This.pCursorName)" IF this.rowsource <> mquery NODEFAULT this.prowsource = this.rowsource this.rowsource = mquery this.requery() this.resettext() KEYBOARD '{ALT + DNARROW}' RETURN ENDIF ENDIF ENDIF ENDIF IF INLIST(nkeycode, 6) OR (INLIST(nkeycode, 52, 54) AND BITAND(1, nshiftaltctrl) == 1) .OR. (INLIST(2, 26) .AND. BITAND(2, nshiftaltctrl) == 2) RETURN ENDIF SELECT (this.pcursorname) lnrecno = RECNO() DO CASE CASE nkeycode = 4 this.csearchstring = LEFT(this.csearchstring, this.selstart) + SUBSTR(m.lcDisplayValue, this.selstart + 1, 1) mselstart = this.selstart + 1 CASE nkeycode = 19 this.csearchstring = LEFT(this.csearchstring, this.selstart - 1) mselstart = this.selstart - 1 this.sellength = MAX(LEN(RTRIM(m.lcDisplayValue)) - mselstart, 0) IF mselstart < 0 RETURN ENDIF CASE nkeycode = 7 IF this.selstart = 0 this.csearchstring = "" this.displayvalue = "" ELSE this.csearchstring = LEFT(this.csearchstring, this.selstart) + RIGHT(this.csearchstring, LEN(this.csearchstring) - this.selstart - 1) this.displayvalue = this.csearchstring ENDIF mselstart = LEN(this.csearchstring) CASE nkeycode = 127 IF this.selstart = 0 this.csearchstring = "" this.displayvalue = "" ELSE this.csearchstring = LEFT(this.csearchstring, this.selstart - 1) + RIGHT(this.csearchstring, LEN(this.csearchstring) - this.selstart) this.displayvalue = this.csearchstring mselstart = LEN(this.csearchstring) ENDIF CASE nkeycode = 24 IF .NOT. EOF() SKIP ENDIF IF EOF() GOTO BOTTOM ENDIF CASE nkeycode = 5 IF .NOT. BOF() SKIP -1 ENDIF IF BOF() GOTO TOP ENDIF CASE BETWEEN(nkeycode, 32, 126) OR BETWEEN(nkeycode, 97, 122) OR BETWEEN(nkeycode, 48, 57) IF this.selstart = 0 AND this.sellength > 1 this.csearchstring = UPPER(CHR(nkeycode)) ELSE this.csearchstring = LEFT(this.csearchstring, this.selstart) + UPPER(CHR(nkeycode)) + RIGHT(this.csearchstring, LEN(this.csearchstring) - this.selstart) ENDIF mselstart = this.selstart + 1 OTHERWISE RETURN ENDCASE NODEFAULT msemafor = 0 IF nkeycode <> 4 AND nkeycode <> 19 AND nkeycode <> 5 AND nkeycode <> 24 AND !EMPTY(this.csearchstring) msemafor = this.findrow() ENDIF IF nkeycode <> 7 AND nkeycode <> 127 AND nkeycode <> 4 AND nkeycode <> 19 IF (EMPTY(this.csearchstring) OR msemafor = 2) AND nkeycode <> 5 AND nkeycode <> 24 IF lnrecno > RECCOUNT() GOTO TOP ELSE GOTO lnrecno ENDIF IF !this.lLimitToList this.displayvalue = this.csearchstring ELSE this.csearchstring = msearchstring ENDIF ELSE IF msemafor = 1 OR nkeycode = 5 OR nkeycode = 24 this.displayvalue = EVALUATE(this.pfieldactiv) IF nkeycode = 5 OR nkeycode = 24 this.resettext() RETURN ENDIF ENDIF IF msemafor = 3 this.displayvalue = EVALUATE(this.secondfield) ENDIF ENDIF ENDIF this.selstart = MAX(mselstart, 0) IF TXTWIDTH(RTRIM(NVL(this.DisplayValue,'')), this.fontname, this.fontsize) * FONTMETRIC(6, this.fontname, this.fontsize) < this.width - 15 this.sellength = MAX(LEN(RTRIM(NVL(this.DisplayValue,''))) - LEN(RTRIM(this.csearchstring)), 0) ELSE this.sellength = 0 ENDIF This.Log('KeyPress ^') ENDPROC PROCEDURE log LPARAMETERS tcEvent lcText = TRANSFORM(tcEvent) + ' ' + ttoc(DATETIME()) + ' selstart ' + TRANSFORM(this.SelStart) + CHR(13) STRTOFILE(m.lcText, "e:\selstart.txt", .T.) ENDPROC PROCEDURE LostFocus IF .NOT. EMPTY(this.prowsource) SELECT (this.pcursorname) mcamp = ALLTRIM(this.pcursorname) + ; "." + ; this.pfieldactiv mCurrentValue=&mCamp mthisvalue = this.value this.rowsource = this.prowsource this.prowsource = "" this.requery() SELECT (this.pcursorname) LOCATE FOR &mCamp=mCurrentValue this.value = mthisvalue ENDIF IF .NOT. EMPTY(this.secondfield) SELECT (this.pcursorname) IF this.displayvalue = ; EVALUATE(this.secondfield) ; .OR. "RO" + ; this.displayvalue = ; EVALUATE(this.secondfield) this.displayvalue = EVALUATE(this.pfieldactiv) ENDIF ENDIF this.csearchstring = "" this.selstart = 0 ENDPROC PROCEDURE MouseMove LPARAMETERS nButton, nShift, nXCoord, nYCoord this.isclick = .T. ENDPROC PROCEDURE resettext This.Log('ResetText') this.csearchstring = ALLTRIM(NVL(this.displayvalue,'')) this.selstart = 0 this.sellength = LEN(RTRIM(NVL(this.displayvalue,''))) This.Log('ResetText ^') ENDPROC ENDDEFINE DEFINE CLASS combosql AS combobox *< CLASSDATA: Baseclass="combobox" Timestamp="" Scale="Pixels" Uniqueid="" /> * *m: getdata && Retrieves data from the OLE drag and drop DataObject object. *m: refreshdata *m: selectdata *p: csearchstring *p: csourceorder && Ordinea pentru SourceSql *p: csourcesql && Select SQL fara where si order *p: csourcewhere && Conditia Where pentru cSourceSql *p: isclick *p: llimittolist *p: ncharcountbegin && Dupa cate caractere incepe cautarea pe server. Implicit 0 *p: pcursorname && Numele cursorului *p: pfieldactiv && Campul dupa care se face cautarea *p: prowsource && Camp intern *p: psecondfield && Al doilea camp de cautare (optional) *p: _memberdata && XML Metadata for customizable properties * * BackColor = 252,252,225 BorderStyle = 0 csearchstring = csourceorder = csourcesql = csourcewhere = Format = "K" Height = 24 isclick = .F. llimittolist = .F. Name = "combosql" ncharcountbegin = 0 pcursorname = pfieldactiv = prowsource = psecondfield = RowSourceType = 3 SpecialEffect = 1 Width = 100 _memberdata = * PROCEDURE Click This.isclick = .T. This.SelLength = Max(Len(Rtrim(This.DisplayValue)) - this.SelStart, 0) This.csearchstring = Left(This.DisplayValue, This.SelStart) ENDPROC PROCEDURE getdata && Retrieves data from the OLE drag and drop DataObject object. ENDPROC PROCEDURE Init Local lcCursor, lcCursorS, lcSourceSql, lcSql, lcSqlRowSource, llSucces lcSourceSql = This.cSourceSql lcCursor = This.pCursorName lcCursorS= 's' + m.lcCursor lcSql = m.lcSourceSql + " where 1=2" lcSqlRowSource = "select * from " + m.lcCursorS + " into cursor " + m.lcCursor llSucces = This.RefreshData(0) If m.llSucces Select (m.lcCursorS) Append Blank TABLEUPDATE() Endif This.RowSource = m.lcSqlRowSource ENDPROC PROCEDURE InteractiveChange This.csearchstring = "" ENDPROC PROCEDURE KeyPress Lparameters nkeycode, nshiftaltctrl Local lnrecno, lcSearchString, m.lnSelStart, llQueried llQueried = .F. lcSearchString = This.csearchstring lnSelStart = 0 *!* IF nkeycode = 24 *!* SET STEP ON *!* ENDIF If Bitand(4, nshiftaltctrl) == 4 Return Endif If nkeycode = 54 .And. nshiftaltctrl = 1 This.SelStart = 0 This.SelLength = Len(Rtrim(This.DisplayValue)) This.csearchstring = "" ENDIF *** CAUTARE "CONTINE" DACA SE APASA CTRL+ENTER If This.RowSourceType = 3 .And. .Not. Inlist(nkeycode, 5, 24, 13, 54) && FARA SAGETI *!* If .Not. Empty(This.prowsource) *!* This.RowSource = This.prowsource *!* This.prowsource = "" *!* This.Requery() *!* Endif If nkeycode = 10 && CTRL+ENTER => SELECTIA CONTINE CUVANTUL CHEIE IN LOC DE INCEPE CU Nodefault This.prowsource = This.RowSource this.RowSource = "" This.RefreshData(2) && cautare contine llQueried = .T. this.RowSource = This.prowsource This.prowsource = "" This.csearchstring = "" Keyboard '{ALT + DNARROW}' Return Endif Endif If Inlist(nkeycode, 6) .Or. (Inlist(nkeycode, 52, 54) .And. Bitand(1, nshiftaltctrl) == 1) .Or. (Inlist(2, 26) .And. Bitand(2, nshiftaltctrl) == 2) Return Endif Select (This.pcursorname) lnrecno = Recno() *** TRATARE SAGETI, DEL, BACKSPACE Do Case Case nkeycode = 4 && RIGHT ARROW This.csearchstring = Left(This.csearchstring, This.SelStart) + Substr(This.DisplayValue, This.SelStart + 1, 1) m.lnSelStart = This.SelStart + 1 Case nkeycode = 19 && LEFT ARROW This.csearchstring = Left(This.csearchstring, This.SelStart - 1) m.lnSelStart = This.SelStart - 1 This.SelLength = Max(Len(Rtrim(This.DisplayValue)) - m.lnSelStart, 0) If m.lnSelStart < 0 Return Endif Case nkeycode = 7 && DEL If This.SelStart = 0 This.csearchstring = "" This.DisplayValue = "" Else This.csearchstring = Left(This.csearchstring, This.SelStart) + Right(This.csearchstring, Len(This.csearchstring) - This.SelStart - 1) This.DisplayValue = This.csearchstring Endif m.lnSelStart = Len(This.csearchstring) Case nkeycode = 127 && BACKSPACE If This.SelStart = 0 This.csearchstring = "" This.DisplayValue = "" Else This.csearchstring = Left(This.csearchstring, This.SelStart - 1) + Right(This.csearchstring, Len(This.csearchstring) - This.SelStart) This.DisplayValue = This.csearchstring m.lnSelStart = Len(This.csearchstring) Endif Case nkeycode = 24 && DOWN ARROW If .Not. Eof() Skip Endif If Eof() Goto Bottom Endif Case nkeycode = 5 && UP ARROW If .Not. Bof() Skip -1 Endif If Bof() Goto Top Endif Case Between(nkeycode, 32, 126) .Or. Between(nkeycode, 97, 122) .Or. Between(nkeycode, 48, 57) If This.SelStart = 0 .And. This.SelLength > 1 This.csearchstring = Upper(Chr(nkeycode)) Else This.csearchstring = Left(This.csearchstring, This.SelStart) + Upper(Chr(nkeycode)) + Right(This.csearchstring, Len(This.csearchstring) - This.SelStart) Endif m.lnSelStart = This.SelStart + 1 Otherwise Return Endcase NODEFAULT *** CAUTARE "INCEPE CU" msemafor = 0 If nkeycode <> 4 .And. nkeycode <> 19 .And. nkeycode <> 5 .And. nkeycode <> 24 .And. .Not. Empty(This.csearchstring) * Execut cautarea INCEPE CU pe serverul baza de date, daca nu cumva am facut cautarea deja CONTINE la CTRL+ENTER This.Requery(2) IF !m.llQueried && AND m.lcSearchString <> this.cSearchString This.prowsource = This.RowSource this.RowSource = "" This.RefreshData(1) && cautare incepe cu... this.RowSource = this.pRowSource This.prowsource = "" ENDIF * Verific daca textul cautat este in inregistrarile selectate (daca am rezultate in cursor) SELECT (this.pCursorName) Locate For Upper(Evaluate(This.pfieldactiv)) = Upper(This.csearchstring) If .Not. Found() If .Not. Empty(This.pSecondField) Locate For Evaluate(This.pSecondField) = Upper(This.csearchstring) + " " .Or. Evaluate(This.pSecondField) = "RO" + Upper(This.csearchstring) + " " If .Not. Found() Locate For Evaluate(This.pSecondField) = Upper(This.csearchstring) .Or. Evaluate(This.pSecondField) = "RO" + Upper(This.csearchstring) Endif If Found() msemafor = 3 Else msemafor = 2 Endif Else msemafor = 2 Endif Else msemafor = 1 Endif ENDIF SELECT (this.pCursorName) If nkeycode <> 7 .And. nkeycode <> 127 .And. nkeycode <> 4 .And. nkeycode <> 19 If (Empty(This.csearchstring) .Or. msemafor = 2) .And. nkeycode <> 5 .And. nkeycode <> 24 If lnrecno > Reccount() Goto Top Else Goto lnrecno Endif If .Not. This.llimittolist This.DisplayValue = This.csearchstring Else This.csearchstring = m.lcSearchString Endif Else If msemafor = 1 .Or. nkeycode = 5 .Or. nkeycode = 24 This.DisplayValue = Evaluate(This.pfieldactiv) Endif If msemafor = 3 This.DisplayValue = Evaluate(This.pSecondField) Endif Endif Endif This.SelStart = Max(m.lnSelStart, 0) If Txtwidth(Rtrim(This.DisplayValue), This.FontName, This.FontSize) * Fontmetric(6, This.FontName, This.FontSize) < This.Width - 15 This.SelLength = Max(Len(Rtrim(This.DisplayValue)) - Len(Rtrim(This.csearchstring)), 0) Else This.SelLength = 0 Endif ENDPROC PROCEDURE LostFocus *!* If .Not. Empty(This.prowsource) *!* This.RowSource = This.prowsource *!* This.prowsource = "" *!* This.Requery() *!* Endif If .Not. Empty(This.pSecondField) Select (This.pcursorname) If This.DisplayValue = EVALUATE(This.pSecondField) .Or. "RO" + this.DisplayValue = EVALUATE(This.pSecondField) This.DisplayValue = Evaluate(This.pfieldactiv) Endif Endif This.csearchstring = "" This.SelStart = 0 ENDPROC PROCEDURE refreshdata Lparameters tnTip Local lnTip, lcSourceOrder, lcSourceSql, lcSourceWhere, lcSql, lnHandle, llSucces, lcCursor Private pcValue pcValue = '' lnTip = Iif(Type('tnTip') = 'N', m.tnTip, 0) If m.lnTip <> 0 AND Len(Alltrim(This.cSearchString)) <= This.nCharCountBegin Return Endif lcSourceSql = This.cSourceSql lcWhereFirst = This.pFieldActiv + " like ?pcValue" lcWhereSecond = Iif(!Empty(This.pSecondField), This.pSecondField + " like ?pcValue", "") lcSourceWhere = [ where ] + Iif(!Empty(This.cSourceWhere), [(] + This.cSourceWhere + [)], []) + [ and (] + m.lcWhereFirst + Iif(!Empty(m.lcWhereSecond), [ or ] + m.lcWhereSecond, []) + [)] lcSourceOrder = " order by " + Iif(!Empty(This.cSourceOrder), This.cSourceOrder, This.pFieldActiv) Do Case Case m.lnTip = 0 && INIT lcSourceWhere = [ where 1=2] lcSourceOrder = "" Case m.lnTip = 1 && CAUTARE INCEPE CU pcValue = This.cSearchString + '%' Case m.lnTip = 2 && CAUTARE CONTINE pcValue = '%' + This.cSearchString + '%' ENDCASE lcCursor = 's' + This.pCursorName lcSql = m.lcSourceSql + m.lcSourceWhere + m.lcSourceOrder WAIT WINDOW 'RefreshData ' + m.lcSql NOWAIT llSucces = This.SelectData(m.lcSql, m.lcCursor) Return m.llSucces ENDPROC PROCEDURE selectdata Lparameters tcSql, tcCursor Local llSucces WAIT WINDOW 'Sql: ' + m.tcSql + ' cursor: ' + m.tcCursor + IIF(TYPE('pcValue') = 'C', ' pcValue: ' + m.pcValue, '') NOWAIT llSucces = goExecutor.oExecuta(m.tcSql, m.tcCursor) Return m.llSucces ENDPROC ENDDEFINE