Poniendo el grid en el modo de edición de eventos
En el botón de Lista de Object seleccione Form 101 frmgrid
En el Botón de Lista de Control seleccione Grid 204 grdmaestroGrid
En el Botón de Lista de Eventos seleccione Grid Edit Mode
En el área de edición del Guibuilder digite el siguiente código:
while add_in_progress
rem muestra y edita valor en columna 0 (llave primaria)
add_in_progress=0
if gb__notice.col = 0 then gosub crear_nueva_llave;
: trash$=sendmsg(gb__sysgui,gb__notice.id,gridSetEdit,0,newkey$);
: trash$=sendmsg(gb__sysgui,gb__notice.id,gridEndEdit,0,$$);
: desc$="mask:c(1*=0),restore:c(1*=0),initstr:c(1*=0),";
: desc$=desc$+"key:u(2),col:u(2),row:u(4)";
: dim editparams$:desc$;
: editparams.key = 0;
: editparams.col = gb__notice.col+1;
: editparams.row = gb__notice.row;
: trash$=sendmsg(gb__sysgui,gb__notice.id,gridStartEdit,0,editparams$)
wend
Creando la Subrutina de creación de nueva Llave
En el Botón de Lista de Object seleccione New Subroutine/Function
De el Nombre Crear Nueva Llave y OK
Seguido de las marcas de Encabezado en una nueva línea digite lo siguiente:
Crear_nueva_llave:
rem asigna un nuevo número
trash$=fattr(datarec$,"código")
keylen = dec(trash$(10,2))
keymask$ = fill(keylen,"0")
newkey$=keyl(alt_chan,err=no_keyl)
done=0
bump_it:
while !(done)
newkey$=str(num(newkey$)+1:keymask$)
done=1
read(alt_chan,key=newkey$,dom=got_it)
done=0
got_it:
wend
return
no_keyl:
rem esto maneja el caso de que no exista ningún registro
newkey$=str(0:keymask$)
goto bump_it
Borrando un registro
En el Botón de Lista de Object seleccione Form 101 frmgrid
En el Botón de Lista de Control seleccione Push Button 202 btnBorrar
En el Botón de Lista de Eventos seleccione Button Pushed
En el área de edición del GuiBuilder digite lo siguiente
gosub Borrar_fila_actual
En el Botón de Lista de Object seleccione New Subroutine/Function
Y digite el nombre Borrar Fila actual y OK
Seguidamente a las marcas de encabezado en una nueva línea digite lo siguiente:
Borrar_fila_actual:
rem obtiene la columna actual
grid_id=num(fattr(datagrid_temp$,"grdmaestroGrid","ID"))
row$=sendmsg(gb__sysgui,grid_id,gridGetSelectedRow,0,"")
row = dec($00$+row$)
rem crea un template temporal para tener el contenido de la fila
dim tmp_datarec$:datarec_desc$
rem obtiene los datos de la fila actual
tmp_datarec$=sendmsg(gb__sysgui,grid_id,gridDataAwareFunctions,row,gridRetrieveRow$)
rem confirma el borrado
msg$="Esta seguro que desea Borrar el código "+tmp_datarec.código$+"?"
style = msgboxYesNo+msgboxInfo+msgboxSecond
title$="Confirma Exclusión"
resp = msgbox(msg$,style,title$)
rem si la respuesta es afirmativa entonces se envía el mensaje de borrar
if resp<>msgboxYes then
: return
rem borra la fila
trash$=sendmsg(gb__sysgui,grid_id,gridDataAwareFunctions,row,gridDeleteRo
: w$)
rem desconecta el grid
trash$=sendmsg(gb__sysgui,grid_id,gridSetDataAware,0,$$)
rem resetea el puntero del archivo
read(data_chan,key="",err=dr_continue)
dr_continue:
rem reconecta el grid
trash$=sendmsg(gb__sysgui,grid_id,gridSetDataAware,data_chan,datarec_desc$)
return
|