[ 파워빌더.DataWindow - 라인 선택  ]

 

☞   여러 라인 선택

 

윈도우 탐색기를 보면 Ctrl + Click의 경우 계속해서 선택하고, Shift + Click의 경우

처음과 나중클릭을 전부 선택하는 기능이 있습니다. 이 기능을 DataWindow에 적용하는 방법입니다. 

 

    먼저 Global 함수를 만듭니다.

    //**************************************//

    함수명 :gf_multi_select

    전달값 :a_dw(datawindow),al_row(현재row)

    //**************************************//

 

    long  w_selrow, i

 

    if al_row <= 0 then return

 

     if keydown(keyshift!)then

         w_selrow = a_dw.GetSelectedRow(0)

         if w_selrow > 0 then

               for i = min(w_selrow,al_row) to max(w_selrow, al_row)

                        a_dw.SelectRow(i,true)

               next

         else

               a_dw.SelectRow(al_row,true)

         end if

     elseif keydown(KeyControl!) then

         if a_dw.isSelected(al_row) then

               a_dw.SelectRow(al_row,false)

         else

               a_dw.SelectRow(al_row,true)

         end if

      else

         if a_dw.isSelected(al_row) then

               a_dw.SelectRow(0,false)

         else

               a_dw.SelectRow(0,false)

               a_dw.SelectRow(al_row,true)

         end if

       end if 

    //**************************************//

 

    이 함수를 해당 Datawindow의 Clicked Event에서 부르면 됩니다.

 

    Clicked Event Script

    if row < 1 then return

    gf_multi_select(this,row)

☞  선택 row갯수 파악

 

ll_selectedcount = Long(dw_1.Describe("Evaluate('sum(if(isselected(),1,0) for all)',1)"))

☞  row에 마우스 Over 되면 row 색 변하게 하기

 

[mousemove]
Event ID : pbm_mosemove


long ll_pos
String dwobject
string ls_row

dwobject = dw_data.GetObjectAtPointer()
ll_pos = Pos(dwobject, "~t")
IF ll_pos > 0 THEN
ls_row = Mid(dwobject, ll_pos + 1)
END IF

IF Long(ls_row) = 0 THEN RETURN

dw_data.Modify("DataWindow.Detail.Color=~"553648127~tif ( getrow() = " + ls_row + ", rgb(255,240,240), rgb(255,255,255) )~"")

 

Posted by 농부지기
,