Page 1 of 1

Una más sobre xBrowse (SOLUCIONADO)

Posted: Sun Aug 20, 2023 4:38 pm
by Armando
Hola Foreros:

Verán, tengo la necesidad de crear un xBrowse con N cantidad de renglones y N cantidad de columnas, me explico:

Primero, el usuario debe decidir cuantos renglones y cuantas columnas requiere, digamos 20 renglones y 3 columnas

Segundo, recibiendo esos parámetros (Renglones y columnas) debo crear el Browse (xBrowse) llenando los renglones
y columnas en blanco y mostrarlo en un dialogo.

Tercero, el usuario deberá poder llenar las celdas a sus necesidades, tal vez una sí dos no, etc.

Mi duda, hasta ahora he creado los Browse tomando renglones y columnas desde una Tabla de MySql por lo que siempre
son la misma cantidad de renglones y columnas. como en el siguiente ejemplo

Code: Select all | Expand

      REDEFINE XBROWSE oBrw ID 105 OF oDlg;
         DATASOURCE oRsOri;
         COLUMNS "RUT_NOM","RUT_CVE","RUT_AUW","RUT_NDR";           <===== Cantidad fija de columnas
         HEADERS "Nombre o Descripción","Clave","Autobuses","Niv.Rol";
         COLSIZES 200,40,60,45;
         PICTURES NIL,NIL,"@Z 999",Nil;
         JUSTIFY {AL_LEFT,AL_LEFT,AL_RIGHT,AL_LEFT};
         FOOTERS AUTOSORT
 
Ahora, como van a ser variables, tal vez debo hacerlo construyendo primero una ARRAY y de ahí crear el Browse, y ahí
esta mi problema, si hubiera un ejemplo creando un browse desde un array?

Muy agradecido por el apoyo que puedan dar.

Saludos

Re: Una más sobre xBrowse (SOLUCIONADO)

Posted: Mon Aug 21, 2023 10:37 am
by nageswaragunupudi
No need to create array
Directly Xbrowse recordset.
If you set oCol:nEditType := 1 user can edit any cell he wants.
XBrowse automatically saves the changes.
What more you want to know?

Re: Una más sobre xBrowse (SOLUCIONADO)

Posted: Mon Aug 21, 2023 1:09 pm
by Marc Venken
Here is part of code that will generate xbrowsers from dbf settings.
dbf 1 = main settings with position, dbf,...
dbf 2 = detail settings like colums, size, ...

Code: Select all | Expand

function getXbrowser(cData,oTarget)
  local aBrw:={}, aVeld:={}, aKop:={}, aSizes:={}, aFields:={}
  local aBrwCols:={}
  local aBrwget:={}, aBrwedit:={}
  /// more code
  //  I take all my data (layout) from a dbf, you can fill array like you want.

  // main database
  cDbf = alltrim(upper(hBrw["database"]))
  cIndex = alltrim(tempXb->index)
  cAlias = if(empty(alltrim(tempXb->alias)),cDbf,alltrim(tempXb->alias))
  cMaster = alltrim(tempXb->master)
  nTop = tempXb->top
  nLeft = tempXb->left
  nBreed = tempXb->Breed
  nHoogte = tempXb->hoogte
  cRelation = alltrim(tempXb->relation)


  //  detail database
  //  in a loop get all xbrowse fields
    aadd(aVeld,alltrim(tempXb->veld))
    aadd(aKop,alltrim(tempXb->brnaam))
    aadd(aSizes,tempXb->size)
  //
  then define xbrowse


   @ nTop,nLeft XBROWSE oBrw size nBreed,nHoogte PIXEL OF oTarget font oFont ;
      DATASOURCE cAlias ;  // cDbf
      COLUMNS aVeld ;
      HEADERS aKop ;
      COLSIZES aSizes ;
      AUTOSORT CELL LINES NOBORDER FOOTERS

   ///  more settings
return

 

Re: Una más sobre xBrowse (SOLUCIONADO)

Posted: Mon Aug 21, 2023 4:29 pm
by Armando
nageswaragunupudi wrote:No need to create array
Directly Xbrowse recordset.
If you set oCol:nEditType := 1 user can edit any cell he wants.
XBrowse automatically saves the changes.
What more you want to know?
Mr. Rao:

Thanks, I will comment on the problems

Regards