El tab como el enter

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
1
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)
|***|--|***|--|***|--|***|--|***|--|***|--|***|--|***|--|***|--|***||***|--|

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas