CONTROL GRID - Edición en línea

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
edufloriv
Posts: 134
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB
Location: PERU
Has thanked: 1 time
Been thanked: 4 times

CONTROL GRID - Edición en línea

Post by edufloriv » Mon Jun 04, 2018 5:43 pm

Saludos amigos,

Comentarles que recién estoy empezando a usar el control GRID en hmg 3.4.3 ya que habia estado acostumbrado a usar BROWSE y la verdad tengo muy poca experiencia usando el control GRID con edición en línea.

Tengo definido este GRID en un formulario:

Code: Select all

*
*    BOTONES DETALLES
*
   @ 190 , 010 BUTTON BotAgregar ;
      PICTURE "imagen\agregar.bmp" ;
      ACTION NotaAddItem() ;
      WIDTH  30 ;
      HEIGHT 80

   @ 280 , 010 BUTTON BotBorrar ;
      PICTURE "imagen\borrar.bmp" ;
      ACTION NotaDelItem() ;
      WIDTH  30 ;
      HEIGHT 80
*
*    GRID DE DETALLES
*
   @ 190 , 050 GRID GrdArticulos ;
   WIDTH 1000 ;
   HEIGHT 400 ;
   HEADERS {'Código','Artículo','Unidades','Costo','Porcent.','Prec.Unit.','Total','Igv' ,'Importe'} ;
   WIDTHS  {  150   ,   300    ,   080    ,  080  ,  080     ,  080       ,  080  , 060  ,  080    } ;
   JUSTIFY { BrwL   ,  BrwL    ,   BrwR   , BrwR  , BrwR    ,   BrwR     , BrwR  , BrwR ,  BrwR   } ;
   EDIT ;
   COLUMNCONTROLS { NIL , NIL , aCtrl_1 , aCtrl_2 , aCtrl_2 , aCtrl_2 , aCtrl_2 , aCtrl_2 , aCtrl_2 } ;
   COLUMNWHEN     { {|| .F. } , {|| .F. } , {|| .T. } , {|| .T. } , {|| .T. } , {|| .F. } , {|| .F. } , {|| .F. } , {|| .F. } } ;
   COLUMNVALID    { NIL       , NIL       , {|| GrdValUnids() } , {|| GrdValCosto() } , {|| GrdValPorc() } , NIL       , NIL       , NIL       , NIL       }
Como verán solo dejé editables los campos "Unidades","Costo" y "Porcent." La procedure NotaAddItem() esta así :

Code: Select all

PROC NotaAddItem

LOCAL aArtiCodigo
LOCAL aArtiDatos
LOCAL aArtiNuevos

aArtiCodigo := Ayuda_Articulo()  //<-- Aquí llamó a otra procedure para seleccionar el producto a agregar
IF LEN(aArtiCodigo) > 0
   ADD ITEM { aArtiCodigo[1] ,;
              aArtiCodigo[2] ,;
              1 ,;
              0.00 ,;
              0.00 ,;
              0.00 ,;
              0.00 ,;
              0.00 ,;
              0.00 } TO GrdArticulos OF Win_Notas
   Win_Notas.GrdArticulos.Setfocus
   HMG_PressKey(VK_RETURN) // <- AQUI TRATO DE INICIAR LA EDICION DEL DETALLE PERO NO FUNCIONA.
ENDIF

RETURN
Como ven llamó a la función Ayuda_Articulo() que muestra la lista de productos, se selecciona uno y agrego un item al grid con el codigo y descripción del mismo más los datos que ingresará el usuario. El tema es que no logro hacer que; INMEDIATAMENTE DESPUES DE AGREGAR EL ITEM EL CAMPO "UNIDADES" se active en modo de edición para que el usuario empieze a digitar estas unidades y de allí continue con el resto de datos del detalle.

Agradeceré su experiencia con este control.

Saludos cordiales a todos,

Eduardo Flores Rivas


LIMA - PERU

User avatar
edufloriv
Posts: 134
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB
Location: PERU
Has thanked: 1 time
Been thanked: 4 times

Post by edufloriv » Mon Jun 04, 2018 6:17 pm

Amigos lo resolví:

Code: Select all

PROC NotaAddItem

LOCAL aArtiCodigo

aArtiCodigo := Ayuda_Articulo()
IF LEN(aArtiCodigo) > 0
   ADD ITEM { aArtiCodigo[1] ,;
              aArtiCodigo[2] ,;
              1 ,;
              0.00 ,;
              0.00 ,;
              0.00 ,;
              0.00 ,;
              0.00 ,;
              0.00 } TO GrdArticulos OF Win_Notas
   nLast := Win_Notas.GrdArticulos.ItemCount
   Win_Notas.GrdArticulos.Value := nLast
   Win_Notas.GrdArticulos.Setfocus
   HMG_PressKey(VK_RETURN)
ENDIF

RETURN
Mas bien, otra consulta, definí la tecla INSERT para ejecutar por teclado esta misma función NotaAddItem()

Code: Select all

   ON KEY INSERT OF Win_Notas ACTION NotaAddItem()
   ON KEY DELETE OF Win_Notas ACTION NotaDelItem()
   ON KEY ESCAPE OF Win_Notas ACTION NotaSalir()
Pero al pulsar la tecla INSERT no sucede nada, la procedure solo se dispara cuando pulso el botón en el formulario que también ejecuta esta función.


Saludos cordiales,

Eduardo Flores Rivas


LIMA - PERU

User avatar
luisvasquezcl
Posts: 1086
Joined: Thu Jul 31, 2008 3:23 am
Location: Chile
Has thanked: 13 times
Been thanked: 14 times
Contact:

Post by luisvasquezcl » Wed Jun 06, 2018 7:14 pm

Hola Eduardo,
Te comento que para mostrar datos uso grid con array.
Cuando muestro los registros dejo la última línea vacía para que el usuario pueda agregar un nuevo registro.
Al grabar el registro consulto si la primera celda de la última línea del grid está vacía, agrego una nueva línea, sino se lo salta.
con esto te evitas tener que ir presionando botones para agregar líneas.
espero te sea de utilidad.
saludos cordiales,
Luis Vasquez

Post Reply