// Key_Pressed Script for sle_find
// key pressed in datawindow
// capture up and down arrows to move the selection up and down
int li_movement
long ll_row
If KeyDown (keyUparrow!) then
li_movement = -1
End If
If Key=keyBack! then
li_movement = 0
End If
If KeyDown (keyDownarrow!) then
li_movement = 1
End If
If li_movement <> 0 Then
dw_1.SetRedraw(False)
ll_row = dw_1.GetSelectedRow(0)
ll_row = ll_row + li_movement
If ll_row < 1 or ll_row > dw_1.RowCount( ) Then
Beep(1)
Return
End If
dw_1.selectrow(0,False)
dw_1.SelectRow(ll_row , True)
dw_1.ScrollToRow (ll_row)
sle_find.text = dw_1.GetItemString(ll_row , 1)
is_filter = sle_find.text
il_selectedrow = ll_row
dw_1.SetRedraw(True)
sle_find.SelectText(len(sle_find.text) + 1,0)
message.processed = true
Return
End If
string ls_character
long ll_found_row
int li_num_chars
ls_character = Char(message.wordparm)
//filter out non alpha characters
//CR149983
If ls_character <> " " Then
If (Lower(ls_character) < "a" or Lower(ls_character) > "z") and ls_character <> Char(8) Then
message.processed = true
Return
End If
End If
// Backspace
If message.wordparm = 8 then
// li_num_chars = Len(is_filter)
li_num_chars = Len(sle_find.text)
If li_num_chars > 0 and Len(is_filter) > li_num_chars then
is_filter = Left(is_filter, li_num_chars -1)
end if
else
is_filter = is_filter + ls_character
end if
// Do case-insensitive search
If Len(is_filter) > 0 Then
// ll_found_row = dw_1.Find("Lower(#12) >=~"" + Lower(is_filter) + "~"",1, 99999)
ll_found_row = dw_1.Find("Lower(#12) like '%" + Lower(is_filter) + "%'",1, 99999)
If ll_found_row > 0 then
dw_1.SetRedraw(FALSE)
dw_1.SelectRow(0, FALSE)
dw_1.ScrollToRow(ll_found_row)
dw_1.SelectRow(ll_found_row, TRUE)
dw_1.SetRedraw(TRUE)
pb_repetir.enabled=true
// is_filterer function did not find any matching row
Else
dw_1.ScrollToRow(1)
dw_1.SetRedraw(FALSE)
dw_1.SelectRow(0, FALSE)
dw_1.SetRedraw(TRUE)
Beep(1)
li_num_chars = Len(is_filter)
If li_num_chars > 0 Then
is_filter = Left(is_filter, li_num_chars -1)
// sle_find.text = Left(sle_find.text, li_num_chars -1)
end if
// Throw away last character
message.processed = true
pb_repetir.enabled=false
End If
// is_filterer length is 0, so unhighlight former selected row
Else
dw_1.SelectRow(0, FALSE)
End If
// Remember number of highlighted row
il_selectedrow = ll_found_row