MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   cl_gui_alv_grid and checkbox (Color a Row) (foro/showthread.php?t=73337)

jamiguel77 21/01/15 21:57:16

cl_gui_alv_grid and checkbox (Color a Row)
 
Hola amigos, como estan?

tengo mi programa funcionando en el cual incluyo una columna con checkbox, ya esta trabajando como quiero solo quiero agregarle una funcionalidad mas:
Cuando el usuario le da click a algun renglon en el checkbox, quiero colorear el renglon (claro si el valor del checkbox es TRUE).

Alguna idea de como hacerlo?

Me imagino que debo de detectar el evento CLICK o no?

Me base en este ejemplo para hacer trabajar mi alv, con el checkbox:
BCALV_EDIT_05


Gracias

luise32 29/01/15 19:19:54

Hola, espero que no sea un poco tarde para responderte.

Voy a suponer que la estructura de tu tabla la cual muestras en el ALV es la siguiente:

Ojo: Ten en cuenta que estoy agregando una columna adicional la cual se llamara COLOR, el nombre no importa pero si debes tenerlo muy presente.


Cuando generas el loyout seguramente utilizas unas lineas de código similares a lo siguiente: Ten en cuenta la linea que esta en negrilla la cual le permitirá a tu ALV identificar cual es la columna que almacenara el dato del color. Debes llamarlo igual al campo que creaste para almacenar el COLOR en la parte del TYPES:


Por ultimo solo falta identificar las columnas que ya fueron marcadas para colorearlas, los colores son los siguientes:


Usa los que necesites en realidad, el resto deséchalos o comentarealos.

Por ultimo podrias hacer un loop para recorrer la tabla y determinar que color ira en cada fila del ALV o tambien justo en el momento cuando marcas el check en el evento change o change_finished.


Espero te sirva esta guía.

Saludos!

jamiguel77 29/01/15 21:09:01

Hola luise32

Gracias por responder y no es tarde.

Ahorita mi gran problema es.... como detecto el Click en la columna del checkbox (en el preciso momento de darle click al checkbox) quisiera hacer lo siguiente:

Algoritmo:

si celdacheckada[indicedecolumna] entonces
si columna3='AAA' entonces
renglon[indicedecolumna].color=rojo
endsi
endsi

El gran problema que he visto es detectar el CLICK, he visto que facilmente detectan el DOBLECLICK pero no asi el CLICK.

algunos mencionan que hay que cambiar la columna de tipo checkbox a HOTSPOT, pero no entiendo mucho todavia al respecto.

Te agradezco y tu codigo es sumamente claro.

Gracias por compartir.

luise32 02/02/15 20:47:35

Hola nuevamente

Es preferible que coloques el evento del data_change_finished o data_change y con ellos entrar a validar. No tienes que detectar el evento del clic en la columna, mas bien valida si la fila cambio sus datos y si esta marcada pintala de un color y sino pintala de otro.

Ejemplo: El usuario hace clic en el campo de check, al cambiar de vacio a 'X' y si presionas TAB o si te ubicas con la ayuda del mouse en otra celda o campo, el programa detectará que cambió la información de la tabla (siempre y cuando tengas declarados los eventos data_changed_finished o data_changed).

Definition

Implementation

En las rutinas entra a validar si hubo algún cambio en los datos, ten en cuenta que este codigo se disparará siempre que realices un cambio en los datos de cualquier campo y los finalices. Cuando digo finalizar me refiero a:

1. El usuario hizo el cambio en la columna y presiono TAB o Enter
2. El usuario hizo clic en una celda diferente a la actual.

En una de esas rutinas (yo optaría por la change_finished) validaría la tabla haciendo un loop.


Saludos, cualquier duda coméntame...


Husos Horarios son GMT. La hora en este momento es 11:25:06.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web