>Hi Craig,
>Thats trick.. I made Office2007 buttons style (using container and styled pictures for background). The button looks 100% same as Office product has, but the problem - I need to use navigation keys to set focus on the button or Hot keys.
This is your fault ::)
>So, for this reason, I put into container button with Button.Style=1 - now navigation with arrow or Tab works perfect.. and also, I have selection rectangle.. so.. all features there!
>User can see a Label caption what I put into container before - and invisible button works as background object for selection.
>
>Now problem only in Hot Keys
Let me explain again:
1)
Set Form.KeyPreview = .T.
So the form catches Keystrokes first
2)
Add your buttons (it is a class isn't it?) a Property "gaKeys(36,2)"
3)
in Buttons Init
*Inkey codes
WITH THIS
.gaKeys(01,1) = '1'
.gaKeys(01,2) = 120
.gaKeys(02,1) = '2'
.gaKeys(02,2) = 121
.gaKeys(03,1) = '3'
.gaKeys(03,2) = 122
.gaKeys(04,1) = '4'
.gaKeys(04,2) = 123
.gaKeys(05,1) = '5'
.gaKeys(05,2) = 124
.gaKeys(06,1) = '6'
.gaKeys(06,2) = 125
.gaKeys(07,1) = '7'
.gaKeys(07,2) = 126
.gaKeys(08,1) = '8'
.gaKeys(08,2) = 127
.gaKeys(09,1) = '9'
.gaKeys(09,2) = 128
.gaKeys(10,1) = '0'
.gaKeys(10,2) = 19
.gaKeys(11,1) = 'a'
.gaKeys(11,2) = 30
.gaKeys(12,1) = 'b'
.gaKeys(12,2) = 48
.gaKeys(13,1) = 'c'
.gaKeys(13,2) = 46
.gaKeys(14,1) = 'd'
.gaKeys(14,2) = 32
.gaKeys(15,1) = 'e'
.gaKeys(15,2) = 18
.gaKeys(16,1) = 'f'
.gaKeys(16,2) = 33
.gaKeys(17,1) = 'g'
.gaKeys(17,2) = 34
.gaKeys(18,1) = 'h'
.gaKeys(18,2) = 35
.gaKeys(19,1) = 'I'
.gaKeys(19,2) = 23
.gaKeys(20,1) = 'j'
.gaKeys(20,2) = 36
.gaKeys(21,1) = 'k'
.gaKeys(21,2) = 37
.gaKeys(22,1) = 'l'
.gaKeys(22,2) = 38
.gaKeys(23,1) = 'm'
.gaKeys(23,2) = 50
.gaKeys(24,1) = 'n'
.gaKeys(24,2) = 49
.gaKeys(25,1) = 'o'
.gaKeys(25,2) = 24
.gaKeys(26,1) = 'p'
.gaKeys(26,2) = 25
.gaKeys(27,1) = 'q'
.gaKeys(27,2) = 16
.gaKeys(28,1) = 'r'
.gaKeys(28,2) = 19
.gaKeys(29,1) = 's'
.gaKeys(29,2) = 31
.gaKeys(30,1) = 't'
.gaKeys(30,2) = 20
.gaKeys(31,1) = 'u'
.gaKeys(31,2) = 22
.gaKeys(32,1) = 'v'
.gaKeys(32,2) = 47
.gaKeys(33,1) = 'w'
.gaKeys(33,2) = 17
.gaKeys(34,1) = 'x'
.gaKeys(34,2) = 45
.gaKeys(35,1) = 'y'
.gaKeys(35,2) = 21
.gaKeys(36,1) = 'z'
.gaKeys(36,2) = 44
ENDWITH &&THIS
4)
Add your buttons (it is a class isn't it?) a Method "CatchKey_Event"
LPARAMETERS tnKeyCode, tnShiftAltCtrl
LOCAL;
lnPos,;
lcKey
lnPos = AT('\<',THIS.CAPTION)
IF lnPos>0 AND tnShiftAltCtrl=4 THEN
lcKey = LOWER(SUBSTR(THIS.CAPTION,lnPos+2,1))
lnPos = ASCAN(THIS.gaKeys,lcKey,1,-1,1,8)
IF lnPos >0 AND tnKeyCode=THIS.gaKeys(lnPos ,2) THEN
RAISEEVENT(THIS,'Click')
ENDIF
ENDIF
5)
Somewhere in forms init, BINDEVENT(THIS,'KEYPRESS',RefToYourButton,'CatchKey_Event')
This will catch the key and raise the click event
There is one problem with this. If you assign the same key to more then one button, it will raise the events of all buttons with the same key. VFP nativ is only the first one.
Code is untested and without any errorhandling
Agnes
>>If the button is invisible, how is the user going to know they can press Alt+S?
>>
>>>Hi,
>>>Is there a way to make invisible buttons behaviour like standard buttons for hot keys?
>>>For example, when I have a
button.caption = "\<Search"
- then Hot key is ALT+S.
>>>In case with vfp standard button - when I press ALT+S - its automatically starts CLCK() event.
>>>In case with invisible button - its just set focus to the button and raise no click event.
>>>
>>>Any ideas,
>>>Thanks
>>>Denis
Words are given to man to enable him to conceal his true feelings.
Charles Maurice de Talleyrand-Périgord
Weeks of programming can save you hours of planning.
OffThere is no place like [::1]