Hi John,
In a read-only DataWindow, when you click on any column that is not in the current row, the RowFocusChanging and RowFocusChanged events fire, but the current column is not changed -- the current column remains at 0, since no column can have focus. DataWindows are read-only if updates are not allowed, all tab orders are set to 0, or all tab columns are protected.
If, however, focus is on an editable column in an updatable DataWindow (a DataWindow that has one or more editable columns), the row focus events do not fire when you click on a protected column or on a column whose tab order is 0. The focus remains on the current, editable column.
If focus moves off an editable column in an updatable DataWindow, the DataWindow switches to read-only mode. This can happen when the last row in the DataWindow does not have an editable column. In this case, tabbing off the last editable column causes the row focus to move to the row following the row with the last editable column. The DataWindow then remains in read-only mode until focus is given to an editable column.
When you use the ScrollToRow method to change focus, the RowFocusChanging event is triggered before the scroll occurs, and the RowFocusChanged event is triggered after the scroll occurs.
You may find out more about these on page 535 here: https://www.appeon.com/system/files/product-manual/datawindow_reference_0.pdf
As a workaround/solution, I would suggest you to use SetFocus(), SetColumn() and/or SetRow() as needed.
Regards,
If you use PFC then there is a work arround:
//cch Variable declararion
LONG ll_rows, ll_rows_array[], ll_row, ll_i
STRING ls_userid
////CCH GET THE MARKED ROWS AND Because the RowSelect PFC Service is set to single row my ll_rows_array[] has only one row
ll_rows = dw_2.inv_RowSelect.of_SelectedCount( ll_rows_array )
//CCH IF NO ROWS SELECTED THEN DO NOTHING
IF ll_rows 1 THEN
MESSAGEBOX('Warning No Rows Selected...','No Rows were Selected.~rPls Select a Row and Clicked this Botton Again...')
RETURN
END IF
ll_row = ll_rows_array[1]
IF gstr_gen.lenguage = 'S' THEN
IF MESSAGEBOX('Aviso de Borrar Registro...','Desea Borrar este Registro:',QUESTION!,YESNO!) = 2 THEN
RETURN
END IF
ELSE
IF MESSAGEBOX('Warning Deleting Record...','Do you Want to Delete Record:',QUESTION!,YESNO!) = 2 THEN
RETURN
END IF
END IF
//cch delete selected row
dw_2.DELETEROW(ll_row)
This way I solve my issue selecting rows of read only datawindow.
Clarence.