martedì 5 giugno 2012

Inserire un TreeView in una SmartWindow.


- Creare una nuova SmartWindow.
- Selezionare dalla Palette OCX Control.
- Scegliere Microsoft TreeView Control 6.0

Nel nostro esempio popoleremo il tv partendo dalla tabella sports2000.customer

- Create un override procedure initializeObject e copiate il codice seguente :

/*------------------------------------------------------------------------------
  Purpose:     Super Override
  Parameters: 
  Notes:      
------------------------------------------------------------------------------*/
DEFINE VARIABLE i AS INTEGER     NO-UNDO.
DEFINE VARIABLE iNode AS INTEGER     NO-UNDO.


  /* Code placed here will execute PRIOR to standard behavior. */

  RUN SUPER.

  /* Code placed here will execute AFTER standard behavior.    */
 
  chCtrlFrame:TreeView:Nodes:Add(,,"root" ,"root"). /* Crea tag root */

  FOR EACH customer NO-LOCK
      WHERE custnum < 10: /* Naviga temp-table */

    chCtrlFrame:TreeView:Nodes:Add("root", 4, "k" + string(custnum),NAME).

    /* Crea tag figlio di Root */
    chCtrlFrame:TreeView:Nodes:Add("k" + string(custnum), 4, "ka" + string(custnum),address + " - " + city + " - " + State).

    /* Crea tag figlio del precedente */
    chCtrlFrame:TreeView:Nodes:Add("ka" + string(custnum), 4, "kab" + string(custnum),"Balance: " + STRING(Balance) +
                                   " - Credit Limit : " + STRING(creditlimit) +
                                   " - Discount : " + STRING(Discount) +
                                   " ** Comments : " + Comments
                                   ).

  END.
  /* Naviga l'xml in cerca di nodi padri da espandere */
  DO i = 1 TO chCtrlFrame:TreeView:nodes:COUNT:
      iNode = chCtrlFrame:TreeView:nodes(i):children.
      IF iNode > 0 THEN /* Se non ha figli  espande nodo */
          chCtrlFrame:TreeView:nodes(i):expanded = TRUE.

  END.
END PROCEDURE.


0 commenti: