viernes, 22 de julio de 2011

Manipular varios campos al modificar un campo principal de un formulario

Hola, vamos a realizar un caso en que al momento de modificar un campo, se modifiquen otros a consecuencia. Para facilitar el ejemplo los campos seran de tipo enum (NoYes).
Utilizaremos lo siguiente:
TABLA: Table1
     CAMPO: Field1, Field2, Field3
     METODO: Update()
FORMULARIO: Form1
     DATASOURCE: Table1
     DISEÑO: Grid(todos los campos del datasource)
--------------------------------------Pasos---------------------------------------------------
En el metodo update() de la tabla ponemos las condiciones:

public void update()
{
     if(this.Field1 == noyes::Yes)
    {
          this.Field2 = noyes::No;
          this.Field3 = noyes::No;
    }
     if(this.Field2 == noyes::Yes)

    {
          this.Field1 = noyes::No;
          this.Field3 = noyes::No;
    }
     if(this.Field3 == noyes::Yes)
    {
          this.Field1 = noyes::No;
          this.Field2 = noyes::No;
    }
     super();
}

En cada campo del grid del formulario vamos a crear metodos clicked() y poner lo siguiente:

public void clicked()
{
     super();
     Table1_ds.research();
}

Con lo realizado, al momento de que un campo este con check, los otros se van a blanquear.
Saludos.

jueves, 21 de julio de 2011

Manejando columnas y filas de un grid

Hola, hay veces que nos piden capturar especificamente algunas columnas o filas de un grid en un formulario. Daré un ejemplo de cómo hacer dicho procedimiento, utilizando un botón. Para esto pondremos el siguiente código en el metodo clicked() del botón:

void clicked()
{
     int i;
     int numcol, f;
     ;

     numcol = tuGrid.controlCount();
     if (TuDatasource_ds.first())
    {
          do
         {
               for (f=1;f<=numcol;f++)
              {
                   box::info(tuGrid.controlNum(f).valueStr());
              }
          } While (TuDatasource_ds.next());
    }
    super();
}

Nota: es importante tener la propiedad "AutoDeclaration" del grid en TRUE.
Saludos.