Deshabilitar uso de teclas
Publicado: Mar Feb 21, 2012 1:57 am
Hola a Todos:
uso la clase TEdit
CLASS TEdit FROM XEdit
PUBLISHED:
PROPERTY lAutoSelect INIT asSELECTALL
PROPERTY nClrBorder INIT clRed EDITOR PE_Color
METHOD WMKeyDown( nKey, nFlags )
METHOD WMKillFocus( wParam, lParam ) INLINE Super:WMKillFocus(
wParam,lParam ), ::lInsert := .T., 0
PUBLIC:
METHOD WMNCPaint()
ENDCLASS
METHOD WMKeyDown( nKey, nFlags ) CLASS TEdit
IF nKey == VK_UP
::GoPrevControl()
ELSEIF nKey == VK_DOWN
::GoNextControl()
ELSE
RETURN Super:WMKeyDown( nKey, nFlags )
ENDIF
RETURN 0
//---------------------------------------------------------- ----------------
#pragma BEGINDUMP
#include "windows.h"
#include "xailer.h"
#include "colors.ch"
HB_FUNC_STATIC( TEDIT_WMNCPAINT )
{
PHB_ITEM Self = hb_stackSelfItem();
HWND hWnd = GetHandleOf( Self );
if( XA_ObjGetL( Self, "lFocused" ) )
{
HDC hdc = GetWindowDC( hWnd );
RECT rect;
HBRUSH hbr = CreateSolidBrush( (COLORREF) XA_ObjGetNL( Self,
"nClrBorder" ) );
GetWindowRect( hWnd, &rect );
rect.right -= rect.left;
rect.bottom -= rect.top;
rect.left = 0;
rect.top = 0;
FrameRect( hdc, &rect, hbr );
InflateRect( &rect, -1, -1 );
FrameRect( hdc, &rect, hbr );
DeleteObject( hbr );
}
else
PrevWindowProc( hWnd, WM_NCPAINT, hb_parnl( 1 ), 0 );
hb_retnl( 0 );
}
#pragma ENDDUMP
//---------------------------------------------------------- ----------------
Funciona perfecto el movimiento entre controles con las teclas Flecha
Arriba y Flecha Abajo.
Pero quiero desactivar este comportamiento cuando haga foco en un
Control TMemo. y que al salir de este se active nuevamente el uso de
teclas Arriba y Abajo para cambiarme entre controles
Si alguien me puede dar alguna sugerencia , gracias de antemano.
Saludos...
uso la clase TEdit
CLASS TEdit FROM XEdit
PUBLISHED:
PROPERTY lAutoSelect INIT asSELECTALL
PROPERTY nClrBorder INIT clRed EDITOR PE_Color
METHOD WMKeyDown( nKey, nFlags )
METHOD WMKillFocus( wParam, lParam ) INLINE Super:WMKillFocus(
wParam,lParam ), ::lInsert := .T., 0
PUBLIC:
METHOD WMNCPaint()
ENDCLASS
METHOD WMKeyDown( nKey, nFlags ) CLASS TEdit
IF nKey == VK_UP
::GoPrevControl()
ELSEIF nKey == VK_DOWN
::GoNextControl()
ELSE
RETURN Super:WMKeyDown( nKey, nFlags )
ENDIF
RETURN 0
//---------------------------------------------------------- ----------------
#pragma BEGINDUMP
#include "windows.h"
#include "xailer.h"
#include "colors.ch"
HB_FUNC_STATIC( TEDIT_WMNCPAINT )
{
PHB_ITEM Self = hb_stackSelfItem();
HWND hWnd = GetHandleOf( Self );
if( XA_ObjGetL( Self, "lFocused" ) )
{
HDC hdc = GetWindowDC( hWnd );
RECT rect;
HBRUSH hbr = CreateSolidBrush( (COLORREF) XA_ObjGetNL( Self,
"nClrBorder" ) );
GetWindowRect( hWnd, &rect );
rect.right -= rect.left;
rect.bottom -= rect.top;
rect.left = 0;
rect.top = 0;
FrameRect( hdc, &rect, hbr );
InflateRect( &rect, -1, -1 );
FrameRect( hdc, &rect, hbr );
DeleteObject( hbr );
}
else
PrevWindowProc( hWnd, WM_NCPAINT, hb_parnl( 1 ), 0 );
hb_retnl( 0 );
}
#pragma ENDDUMP
//---------------------------------------------------------- ----------------
Funciona perfecto el movimiento entre controles con las teclas Flecha
Arriba y Flecha Abajo.
Pero quiero desactivar este comportamiento cuando haga foco en un
Control TMemo. y que al salir de este se active nuevamente el uso de
teclas Arriba y Abajo para cambiarme entre controles
Si alguien me puede dar alguna sugerencia , gracias de antemano.
Saludos...