Grid에서 특정 조건에 해당하는 레코드에 대해서만 field의 hotspot을 설정해 주고싶은데 그게 가능한지요?
예를 들어
자재 입고처리를 할 경우 입고구분 필드에 '입고' 또는 '미입고'로 출력을 하는데
입고처리가 되지 않은 것은 '미입고'로 출력하고 '미입고'인 경우만 hotspot이 설정되도록 하려고 할경우
어떻게 제어를 해주어야 하는지 모르겠습니다.
물론 모두 hotspot을 설정하여 event handler에서 조건문으로 입고처리여부를 결정할수도 있겠지만
그렇게 하는 방법 말고는 없는지요?
방법을 알고계신 고수님들의 도움 부탁드립니다.
댓글 10
-
창천 구 만리
2008.02.12 01:09
-
icarus
2008.02.12 17:49
Cell 단위 Attribute에서 특정 조건일 경우에만 Hotspot 을 주시면 됩니다. -
Waiting
2008.02.13 02:18
저의 짧은 소견으로는 창천 구만리님의 방법이 떠올랐는데..
icarus 님의 방법이 간단해보이는 듯 한데요..
자세한 설명 부탁드려도 될까요?
Cell 단위 Attribute가 무엇을 말하는지 잘 모르겠습니다.
-
창천 구 만리
2008.02.13 02:47
아...그렇군요...
필드카탈로그에 제어하면 한 셀이 아니라 셀이 포함된 필드 전체가 속성을 먹게 되는군요...
icarus 님이 말씀하신 방법대로 해야되는군요.
style 을 이용해야 합니다.
미입고 일때 style 을 이용해 해당 셀에 hotspot 설정을 해주셔야 합니다.
이벤트 부분은 동일하고요.
-
icarus
2008.02.13 17:40
1) 일단 디스플레이되는 인터널테이블에 Cell 단위 Style 을 갖는 칼럼을 추가합니다.
DATA: BEGIN OF gt_display OCCURS 0,
INCLUDE STRUCTURE ....
DATA: cellstyl TYPE lvc_t_styl,
END OF gt_display.
2) 디스플레이되는 인터널테이블에 데이터를 넣고, 루프를 돌리면서
특정 조건일 경우 Hotspot을 주거나 뺍니다...
전역변수: gs_cellstyl TYPE lvc_s_styl.
gt_cellstyl TYPE lvc_t_styl.
LOOP AT gt_display.
CLEAR: gt_cellstyl, gt_cellstyl[], gt_display-cellstyl[].
LOOP AT gt_fieldcatalog INTO gs_fieldcatalog.
CLEAR gs_style.
* 조건에 따라 Hotspot을 넣거나 뺍니다...
IF ~~~.
gs_style-style = cl_gui_alv_grid=>mc_style_hotspot. "HotSpot ON
ELSEIF ~~~.
gs_style-style = cl_gui_alv_grid=>mc_style_hotspot_no. "HotSpot OFF
ENDIF.
gs_cellstyl-fieldname = gs_fieldcatalog-fieldname.
gs_cellstyl-style = gs_style-style.
insert gs_cellstyl into table gt_cellstyl.
ENDLOOP.
gt_display-cellstyl[] = gt_cellstyl[].
MODIFY gt_display.
ENDLOOP.
3) 요렇게 데이터와 Cell 단위 Style을 채운뒤에 Set_table_for_first_display 메소드를 호출하시면 됩니다.
-
Waiting
2008.02.13 18:17
자세한 설명과 답변 감사드립니다. :)
-
SkyDream
2008.02.13 18:58
icarus님 답변 감사드립니다.
전에 cell 속성 제어할때 style을 사용하긴 했었는데 그때는 input 속성 제어만 해봤거든요.^^
제가 지금 Release 4.6C를 사용하는데 4.6C에는 mc_style_hotspot 과 mc_style_hotspot_no가 제공되지 않는 것 같습니다.
그리고..
style속성 설정할때 LVC_S_STYL structure의 field중 style필드만 주로 사용했었는데
style2, style3, style4 필드는 어느 경우에 사용하는지 아시는 분은 추가 설명 좀 부탁드립니다.
-
icarus
2008.02.13 22:37
저는 현재 ECC 6.0 인데, 4.6C 에서는 cl_gui_alv_grid 클래스의 속성에 mc_style_hotspot,
mc_style_hotspot_no 속성이 없습니까?(SE24에서 확인 부탁드립니다.)
Style3,4 는 저도 써보질 않아서 잘 모르겠구요,
Style2는 그리드의 Border(경계선)를 나타나지 않게 제어할 수 있습니다.
(즉 Left, Right, Top, Bottom 을 Cell 단위로 나타나지 않게 할 수 있습니다.)
-
SkyDream
2008.02.14 01:56
4.6C에서 cl_gui_alv_grid 클래스의 속성을 보면 mc_style_hotspot, mc_style_hotspot_no 속성이 없네요.^^
친절한 답변 많은 도움이 되었습니다.
-
pcj
2008.03.30 21:04
감사합니다~
필드 카탈로그 설정할 때 hotspot 을 조건에 따라 설정하고 싶다는 말씀이신지요?
그렇다면 조회된 데이터에 미입고 일때 그에 따라 hotspot을 설정해 주면 간단할 것 같은데요?
먼저 필드카탈로그를 만들고 데이터와 비교하면서 미입고 일때만 hotspot으로 modify 시켜주면 간단할 것 같군요.