GetNumFolderDisplayFields method

The number of display fields for the active folder is returned in the specified variable.

Method
short GetNumFolderDisplayFields(
VARIANT * pNumFields )
Parameters
pNumFields
Points to a variable to receive the number of display fields for the active folder. On return, this variable is set to type VT_I2.
Description
The number of display fields for the active folder is returned in the specified variable.
Return Value
Refer to return codes.
See Also
GetNumFolderDisplayNames

C/C + +

The following example creates a list box of the folder document list names and associated values and opens the document selected by a user.
 CArsOle * pArsCtrl;
 ArsOleName * pNames;
 ArsOleValue * pValues;
 CListBox * pDocList;
 char * pLine;
 short rc, k, opr, num_fields;
 long j, num_docs;
 int size;
 VARIANT vari;
   .
   .
 // During dialog initialization:

 rc = pArsCtrl->GetNumFolderDisplayFields( &vari );
 if ( rc != ARS_OLE_RC_SUCCESS )
   ERROR;
 num_fields = var.iVal;

 pNames = new ArsOleName[ max( num_fields, 1 ) ];
 rc = pArsCtrl->GetNumFolderDisplayFields( (IUnknown*)pNames, num_fields );
 if ( rc != ARS_OLE_RC_SUCCESS )
   ERROR;

 rc = pArsCtrl->GetNumDocsInList( &vari );
 if ( rc != ARS_OLE_RC_SUCCESS )
   ERROR;
 num_docs = var.lVal;
   .
   .
   .
   .
 pValues = new ArsOleValue[ max( num_fields, 1 ) ];
 size = num_fields * ( sizeof(ArsOleName) + sizeof(ArsOleValue) + 5 );
 pLine = new char[ size ];
 for ( j = 0, pLine[0] = '\0'; j < num_docs; j++ )
 {
   rc = pArsCtrl->GetDocDisplayValues( j, pValues, num_fields );
   if ( rc != ARS_OLE_RC_SUCCESS )
     ERROR;

   for ( k = 0; k < num_fields; k++ )
   {
     strcat( pLine, pNames[k] );
     strcat( pLine, " = " );
     strcat( pLine, pValues[k] );
     if ( k < num_fields - 1 )
       strcat( pLine, ", " );
   }
   pDocList->InsertString( -1, pLine );
 }
 pDocList->SetCurSel( 0 );
   .
   .
 // During OK button processing:

 rc = pArsCtrl->OpenDoc( (long)pDocList->GetCurSel( ) , NULL, 0 );
 if ( rc != ARS_OLE_RC_SUCCESS )
   ERROR;
   .
   .

Visual Basic

Dim rc, count, i, j As Integer
Dim num_fields, num_docs As Variant
Dim Names() As String
Dim Line As String
Dim Temp As String
 .
 .
 .
rc = ArsOle.GetNumFolderDisplayFields(num_fields)
If rc <> ARS_OLE_RC_SUCCESS Then
    MsgBox "ERROR"
    End
End If

ReDim Names(num_fields -1)

For count = 0 To num_fields -1
    rc = ArsOle.GetFolderDisplayFieldName(count, Temp)
    Names(count) = Temp
Next count
rc = ArsOle.GetNumDocsInList(num_docs)
If rc <> ARS_OLE_RC_SUCCESS Then
    MsgBox "ERROR"
    End
End If

For j = 0 To num_docs -1
    For i = 0 To num_fields -1
        rc = ArsOle.GetDocDisplayValue(j, i, Temp)

        Line = Line + Names(i) + " = " + Temp
        If i < num_fields Then
            Line = Line + ", "
        End If
    Next i

    lbDocs.AddItem Line
Next j
 .
 .
 .
'During OK button processing:

rc = ArsOle.OpenDoc (lbDocs.List(lbDocs.ListIndex), "", 0)
If rc <> ARS_OLE_RC_SUCCESS Then
    MsgBox "ERROR"
    End
End If