Los usuarios de mi sistema me han sugerido que las funciones del teclado sea mas amplia, lo cual lo he estado haciendo hasta que me tope con el jefe; que quiere que cunado de enter cambie de el foco de un control a otro; por ejemplo, si estoy en un listbox, doy enter me sale un valor por defecto y luego quiero que pase al control que por el tab order ya esta definido, luego de estar en ese control supongamos un single line edit doy enter y cambia de foco para supongamos un edit mask y así susecibamente; que funciones puedo utilizar no encuentro l a adecuada todavía.
1 respuesta
Respuesta de aldob
1
1
aldob, Ingeniero en Sistemas con amplia experiencia en desarrollo de...
1. Lo que queres no es funcionamiento estandar de PB, por lo que vas a tener que cammbiar cosas asi que explicale el costo en horas a tu jefe. 2. Abajo te paso un metodo para que la dw interprete los enter como tabs. 3. Basicamente tenes que detectar para los controles el evento de keyDown y disparar un equivalente a un tab. Lo que te paso es para una dw. Una opcion es usar dws externas en vez de controles independientes (como listboxes, etc). Saludos AldoB Por favor cerrá la pregunta --------- Ejemplo --------- Using the Enter key to Move Between Columns in a DataWindow ----------------------------------------------------------- CAUTION: This PowerTips applies to PowerBuilder Version 2.0 only. See Powertip #7 for Version 1.0. Because the facility described below is undocumented, the reader is cautioned to use it with discretion. To have the enter key act like a tab key, create a user event to correspond with the pbm_dwnprocessenter event on a datawindow. In that user event, add the following 2 lines: Send(Handle(this),256,9,Long(0,0)) SetActionCode(dw_1,1) |__|-----> change this to whatever you called your datawindow. This will send the windows message for the tab key, and will bypass the processing for the enter key. Example ------- // The following example does an accepttext. If it gets a negative // Return code, then there was an error on the column, and you bypass // The enter processing, and do not send the message for the tab key. // // It then checks to see if the current row and column are the last in // the datawindow. If they are, it inserts a new row, scrolls to it, // And sets the column to the first column in the row. // // If it is not the last row and column, it sends the tab key message, // and bypasses the enter key processing. // // NOTE: this script is in the user event for pbm_dwnprocessenter. if AcceptText(dw_1) < 0 then SetActionCode(dw_1,1) Return end if if GetColumn(dw_1) = Long(DwDescribe(dw_1,"datawindow.column.count")) then if GetRow(dw_1) = RowCount(dw_1) then Insertrow(dw_1,0) ScrollToRow(dw_1,GetRow(dw_1) + 1) SetColumn(dw_1,1) SetActionCode(dw_1,1) Return end if end if Send(Handle(this),256,9,Long(0,0)) SetActionCode(dw_1,1) |***|--|***|--|***|--|***|--|***|--|***|--|***|--|***|--|***|--|***||***|--|