create cursor table1 (code n(7),party c(20),qty n(8)) insert into table1 values (1,'Eric',15) insert into table1 values (2,'Boris',281) insert into table1 values (3,'Cetin',2484) insert into table1 values (4,'Tushar',12585) insert into table1 values (5,'Tariq Mehmood',128695) lcHeaderT = "Code;Party;Qty" lcHeaderW = "50;100;70" lcHeaderA = "0;0;1" && 0 Left,1 Right, 2 Center lcFields = "FieldName1;FieldName2;TRANSFORM(FieldName3,99,99,999)" lnFldcnt = 3 cALIAS = 'Table1' LOCAL I,lnHeaderWidth FOR I = 1 TO lnFldcnt lcHeaderText = GETWORDNUM(lcHeaderT,I,";") lcHeaderWidth = VAL(GETWORDNUM(lcHeaderW,I,";")) lcHeaderAlign = VAL(GETWORDNUM(lcHeaderA,I,";")) THISform.oListView.ColumnHeaders.Add(, ,lcHeaderText,lcHeaderWidth ,lcHeaderAlign,0) NEXT I THISform.oListView.View= 3 && lvwReport thisform.oListView.gridLines= .T. DECLARE INTEGER LockWindowUpdate IN user32 INTEGER hWndLock v = LockWindowUpdate(THISform.oListView.hWnd) thisform.oListView.Enabled= .F. SELECT &cALIAS SCAN **** EVALUATE FIRST ITEM cFIELD1 = FIELD(1) *cFIELD1VALUE = &cFIELD1 cFIELD1VALUE = EVALUATE(cFIELD1) DO CASE CASE TYPE("cFIELD1VALUE")="N" cFIELD1VALUE = ALLTRIM(STR(cFIELD1VALUE)) CASE TYPE("cFIELD1VALUE")="G" cFIELD1VALUE = "Gen" ENDCASE loListItem = thisform.oListView.ListItems.Add(,,AllTrim(cFIELD1VALUE),,) **** EVALUATE REST ITEMS FOR J = 2 TO FCOUNT()+1-1 cFIELDNAME = FIELD(j) DO CASE CASE TYPE("&cFIELDNAME")="N" cFIELDVALUE = ALLTRIM(STR(&cFIELDNAME)) CASE TYPE("&cFIELDNAME")="G" cFIELDVALUE = "Gen" CASE TYPE("&cFIELDNAME")="C" OR TYPE("&cFIELDNAME")="M" cFIELDVALUE = ALLTRIM(&cFIELDNAME) CASE TYPE("&cFIELDNAME")="D" cFIELDVALUE = DTOC(&cFIELDNAME) CASE TYPE("&cFIELDNAME")="L" cFIELDVALUE = IIF(&cFIELDNAME=.t.,"Y","N") ENDCASE loListItem.subitems(J-1)=ALLTRIM(cFIELDVALUE) NEXT ENDSCAN v = LockWindowUpdate(0) thisform.oListView.Enabled= .T.