PARAMETERS p_fldlist,p_headers,p_width,indx1,indx2,indx1name,indx2name,cw1,cw2,cw3,cw4,cw5,p_refresh, p_ndx1,p_ndx2 * PARAMTERS * p_fldlist = passed field list * p_headers = field descriptions * p_width = width of form * indx1 = search field1 * indx2 = search field2 * indx1name = search field1 caption * indx2name = search field2 caption * cw1 = width of column1 * cw2 = width of column2 * cw3 = width of column3 * cw4 = width of column4 * cw5 = width of column5 * p_refresh = always refresh selection * tah - 02/22/2002 per DRS removed this line of code so the lookup will always be grey. If it is the * same color as the other forms it can blend into the calling form. If it is always grey it stands out * from the calling form. *!* thisform.backcolor = mainmenu.background * Store the column widths and the total of the column widths THISFORM.r_fldLengths(6) = 0 FOR pCnt = 1 TO 5 pCW = "cw" + STR(pCnt,1) THISFORM.r_fldLengths(pCnt) = &pCW THISFORM.r_fldLengths(6) = THISFORM.r_fldLengths(6) + &pCW ENDFOR * tah - 03/13/2002 #271 If p_ndx1 or p_ndx2 is not numeric and/or is less than 1 ... set to 1 IF TYPE("p_ndx1") # "N" OR p_ndx1 < 1 p_ndx1 = 1 ENDIF IF TYPE("p_ndx2") # "N" OR p_ndx2 < 1 p_ndx2 = 1 ENDIF THISFORM.indexcol1 = p_ndx1 THISFORM.indexcol2 = p_ndx2 THISFORM.r_refresh = p_refresh THISFORM.OldExact = SET("exact") SET EXACT OFF THISFORM.srchindex1 = ' ' THISFORM.srchindex2 = ' ' DO CASE CASE !EMPTY(indx1) AND !EMPTY(indx2) THISFORM.srchindex1 = indx1 THISFORM.srchindex2 = indx2 THISFORM.sortby.option1.CAPTION=indx1name THISFORM.sortby.option2.CAPTION=indx2name IF jnLookUpOrder = 1 SET ORDER TO (indx1) ELSE SET ORDER TO (indx2) ENDIF THISFORM.sortby.VALUE = jnLookUpOrder *!* Set order to (indx1) OTHERWISE THISFORM.sortby.option1.VISIBLE=.F. THISFORM.sortby.option2.VISIBLE=.F. THISFORM.lblsort.VISIBLE=.F. ENDCASE * tah - 06/21/00 removed the "go top" to remain at the spot in the file where you are. *!* Go top PUSH KEY CLEAR * tah - 06/21/00 removed the "on key label esc" so the user can press esc to exit. *!* On KEY LABEL ESC * THISFORM.WIDTH = p_width * tah - 07/03/00 reset autocenter after form width is set center the form. THISFORM.AUTOCENTER = .T. PRIVATE ALL LIKE l_* DIMENSION THISFORM.r_flds[1] THISFORM.r_flds = "" THISFORM.r_alias = ALIAS() IF !EOF() THISFORM.r_oldrec=RECNO() ELSE LOCATE IF EOF() * No records in table mainmenu.cemmessagebox('SM-5') * Set public variable .f. so menu items are active plLookUp = .F. *!* mainmenu.plLookUp = .f. * Exit without displaying the grid RETURN .F. ELSE THISFORM.r_oldrec = RECNO() ENDIF ENDIF * If the table has a field named "FormName"...see if any records are able to be selected. nnn = AFIELDS(FieldsArry) nnn = ASCAN(FieldsArry,"FORMNAME") IF nnn # 0 rrr = RECNO() COUNT TO x FOR EMPTY(FormName) GO rrr IF x = 0 * No records able to be selected. mainmenu.cemmessagebox("SM-3") * Set public variable .f. so menu items are active plLookUp = .F. *!* mainmenu.plLookUp = .f. * Exit without displaying the grid RETURN .F. ENDIF THISFORM.r_FormName = .T. ENDIF l_firstchr = 1 l_lastchr = 1 l_numfld = 0 l_fldlen = 0 DO WHILE l_lastchr <= LEN(p_fldlist) l_numfld = l_numfld+1 DIMENSION THISFORM.r_flds[l_numfld] IF AT(",",p_fldlist,l_numfld) > 0 l_lastchr = AT(",",p_fldlist,l_numfld)-1 ELSE l_lastchr = LEN(p_fldlist)+1 ENDIF THISFORM.r_flds[l_numfld] = ; ALLTRIM(SUBSTR(p_fldlist,l_firstchr,l_lastchr-l_firstchr+1)) IF AT(",",p_fldlist,l_numfld)>0 l_firstchr=AT(",",p_fldlist,l_numfld)+1 ELSE l_firstchr = LEN(p_fldlist) ENDIF l_fldname = THISFORM.r_alias+"."+THISFORM.r_flds[l_numfld] DO CASE CASE TYPE("&l_fldname") = "N" lcsub = ALLTRIM(STR(&l_fldname)) l_fldlen = l_fldlen + LEN(lcsub) THISFORM.grdsearch.COLUMNS(l_numfld).REMOVEOBJECT('_editbox1') CASE TYPE("&l_fldname") = "L" lcsub = IIF(&l_fldname,"T","F") l_fldlen = l_fldlen + 1 THISFORM.grdsearch.COLUMNS(l_numfld).REMOVEOBJECT('_editbox1') CASE TYPE("&l_fldname") = "C" OR TYPE("&l_fldname") = "M" l_fldlen = l_fldlen + LEN(&l_fldname) THISFORM.grdsearch.COLUMNS(l_numfld).CURRENTCONTROL='_editbox1' CASE TYPE("&l_fldname") = "U" DIMENSION Error_Arry(1) Error_Arry(1) = l_fldname CLEAR TYPEAHEAD mainmenu.cemmessagebox("SM-22", @Error_Arry) RETURN .F. CASE TYPE("&l_fldname") = "D" THISFORM.grdsearch.COLUMNS(l_numfld).REMOVEOBJECT('_editbox1') ENDCASE ENDDO THISFORM.r_numfld = l_numfld THISFORM.r_fldlen = l_fldlen DIMENSION a_head[1] a_head = "" l_firstchr = 1 l_lastchr = 1 l_numfld = 0 l_headlen = 0 DO WHILE l_lastchr <= LEN(p_headers) l_numfld = l_numfld+1 DIMENSION a_head[l_numfld] IF AT(",",p_headers,l_numfld)>0 l_lastchr=AT(",",p_headers,l_numfld)-1 ELSE l_lastchr = LEN(p_headers)+1 ENDIF a_head[l_numfld]=ALLTRIM(SUBSTR(p_headers,; l_firstchr,l_lastchr-l_firstchr+1)) IF AT(",",p_headers,l_numfld)>0 l_firstchr=AT(",",p_headers,l_numfld)+1 ELSE l_firstchr = LEN(p_headers) ENDIF ENDDO WITH THISFORM.grdsearch .RECORDSOURCE=THISFORM.r_alias .COLUMNCOUNT = l_numfld .WIDTH = THISFORM.WIDTH .HEIGHT=THISFORM.HEIGHT-60 ENDWITH l_grdwidth=THISFORM.grdsearch.WIDTH-30 FOR l_indx = 1 TO l_numfld *!* l_col="thisform.grdsearch.column"+; *!* ltrim(str(l_indx)) WITH THISFORM.grdsearch.COLUMNS(l_indx) .CONTROLSOURCE=(THISFORM.r_flds[l_indx]) l_fldname=THISFORM.r_alias+"."+THISFORM.r_flds[l_indx] DO CASE CASE TYPE("&l_fldname") = "N" lcsub = ALLTRIM(STR(&l_fldname)) CASE TYPE("&l_fldname") = "L" lcsub = IIF(&l_fldname,"T","F") CASE TYPE("&l_fldname") = "C" lcsub = &l_fldname ENDCASE mylen = 'cw' + STR(l_indx,1) IF LEN(lcsub) > &mylen LEN(lcsub) *!* .width=round((len(lcsub)/l_fldlen)*l_grdwidth,0) ELSE .WIDTH=&mylen *!* .width=round((&mylen/l_fldlen)*l_grdwidth,0) ENDIF .READONLY = .T. ENDWITH *.l_head = l_col+".header1" WITH THISFORM.grdsearch.COLUMNS(l_indx).header1 .CAPTION = (a_head[l_indx]) ENDWITH ENDFOR THISFORM.CAPTION = "Search: " * Scroll down 3 lines so the initial selection is not at the top of the grid. FOR x = 1 TO 3 THISFORM.grdsearch.DOSCROLL(0) ENDFOR glapprunning = .T. THISFORM.grdsearch.SETFOCUSMy OS is Windows 2000 and at home is XP in both have the same problem.