Populate Listview from a cursor
* Put that code in Listview.INIT
cALIAS = 'table1'
LOCAL I,lnHeaderWidth
FOR I = 1 TO
FCOUNT(cALIAS)+1
Element = FIELD(I)
THIS.ColumnHeaders.Add(,Element ,Element,60,0,0)
NEXT I
DECLARE INTEGER LockWindowUpdate
IN user32 INTEGER hWndLock
v = LockWindowUpdate(THIS.hWnd)
this.Enabled= .F.
**** PUT DATA IN LISTVIEW
SELECT &cALIAS
SCAN
**** EVALUATE
FIRST ITEM
cFIELD1 = FIELD(1)
cFIELD1VALUE = EVALUATE(cFIELD1)
DO CASE
CASE TYPE("cFIELD1VALUE")="N"
cFIELD1VALUE = ALLTRIM(STR(cFIELD1VALUE))
CASE
TYPE("cFIELD1VALUE")="G"
cFIELD1VALUE = "Gen"
ENDCASE
loListItem = this.ListItems.Add(,,AllTrim(cFIELD1VALUE),,)
**** EVALUATE REST
ITEMS
FOR J = 2 TO
FCOUNT()+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)
this.Enabled= .T.
DECLARE INTEGER SendMessage
IN user32;
INTEGER hWnd,;
INTEGER Msg,;
INTEGER wParam,;
INTEGER lParam
SET_COLUMN_WIDTH =
4126
AUTOSIZE_USEHEADER =
-2
loListViewCC =
This.ColumnHeaders.Count
ctrlHwnc = This.hWnd
FOR I = 0 TO
loListViewCC - 1
= SendMessage(This.hWnd , SET_COLUMN_WIDTH,
I,@AUTOSIZE_USEHEADER)
NEXT I