提交 | 用户 | age
|
25ab64
|
1 |
// ----------------------------------------------------------------------------------------------------------- |
F |
2 |
// Key events |
|
3 |
// ----------------------------------------------------------------------------------------------------------- |
|
4 |
MS.Key; |
|
5 |
// ----------------------------------------------------------------------------------------------------------- |
|
6 |
// Global handler in document.onkeydown |
|
7 |
// It is global because of Mozilla, which has not onkeydown events in tag that cannot have focus |
|
8 |
function GlobalKeyDown(ev){ |
|
9 |
if(!ev) ev = window.event; |
|
10 |
var key = ev.keyCode ? ev.keyCode : ev.charCode; |
|
11 |
Grids.Keys[key] = true; |
|
12 |
if(key == 45) Grids.InsKey = !Grids.InsKey; |
|
13 |
var ret = true, F = Grids.Focused; |
|
14 |
if(F){ |
|
15 |
if((key==13 || key==27) && F.Message && F.Message.Close){ F.Message.Close(key==13?-1:-2); ret = false; } |
|
16 |
else if(!F.Disabled) ret = Grids.Focused.GridKeyDown(ev); |
|
17 |
} |
|
18 |
if(!ret) CancelEvent(ev); |
|
19 |
|
|
20 |
} |
|
21 |
// ----------------------------------------------------------------------------------------------------------- |
|
22 |
// Global handler in document.onkeyup |
|
23 |
function GlobalKeyUp(ev){ |
|
24 |
if(!ev) ev = window.event; |
|
25 |
var key = ev.keyCode ? ev.keyCode : ev.charCode; |
|
26 |
if(!key) Grids.Keys = []; |
|
27 |
else Grids.Keys[key] = null; |
|
28 |
if(Grids.OnKeyUp){ |
|
29 |
var F = Grids.Focused; |
|
30 |
if(F) Grids.OnKeyUp(F,key,ev,F.KeyCodes[key],F.GetKeyPrefix(ev)); |
|
31 |
} |
|
32 |
|
|
33 |
} |
|
34 |
// ----------------------------------------------------------------------------------------------------------- |
|
35 |
// Global handler in document.onkeypress |
|
36 |
// It is global because of Mozilla, which has not onkeydown events in tag that cannot have focus |
|
37 |
function GlobalKeyPress(ev){ |
|
38 |
if(!ev) ev = window.event; |
|
39 |
var ret = true; |
|
40 |
var key = ev.keyCode ? ev.keyCode : ev.charCode; |
|
41 |
if(Grids.CancelKey == key){ |
|
42 |
Grids.CancelKey = 0; |
|
43 |
ret = false; |
|
44 |
} |
|
45 |
var F = Grids.Focused; if(F && !F.Disabled) ret = F.GridKeyPress(ev); |
|
46 |
if(!ret) CancelEvent(ev); |
|
47 |
|
|
48 |
} |
|
49 |
// ----------------------------------------------------------------------------------------------------------- |
|
50 |
// Fires on key down on grid |
|
51 |
TGP.GridKeyDown = function(ev){ |
|
52 |
if(this.Disabled || BIPAD&&!this.EditMode) return true; |
|
53 |
var key = ev.keyCode ? ev.keyCode : ev.charCode; |
|
54 |
var prefix = this.GetKeyPrefix(ev); |
|
55 |
if(Grids.OnKeyDown && Grids.OnKeyDown(this,key,ev,this.KeyCodes[key],prefix)) return true; |
|
56 |
|
|
57 |
var fr = this.FRow, fc = this.FCol, target = ""; |
|
58 |
if(this.EditMode){ |
|
59 |
MS.Lines; |
|
60 |
if(this.IsMultiline(this.FRow,this.FCol)){ |
|
61 |
if(BIE && (key==38 || key==40)) Grids.NoClickTo = (new Date).getTime()+100; |
|
62 |
if(key==13 && prefix.search(/Alt|Ctrl/)<0 && this.CanAcceptEnters(fr,fc) && this.CanEdit(fr,fc)==1) return true; |
|
63 |
} |
|
64 |
ME.Lines; |
|
65 |
|
|
66 |
if(this.Edit && this.Edit.SuggestMenu && (key==38 || key==40)) return; |
|
67 |
} |
|
68 |
|
|
69 |
var ret = this.KeyCodes[key] ? this.RunKeyActions(this.KeyCodes[key],prefix) : false; |
|
70 |
if(ret){ |
|
71 |
|
|
72 |
CancelEvent(ev); |
|
73 |
Grids.CancelKey = key; |
|
74 |
this.HoldKey = key; |
|
75 |
|
|
76 |
} |
|
77 |
else { |
|
78 |
if(BMozilla && !ev.ctrlKey && !ev.altKey && !ev.metaKey && (key<112||key>123)) this.RunKeyPress(key,ev,prefix); |
|
79 |
Grids.CancelKey = 0; |
|
80 |
if(key==9 && this.EditMode) CancelEvent(ev); |
|
81 |
} |
|
82 |
return !ret; |
|
83 |
} |
|
84 |
// ----------------------------------------------------------------------------------------------------------- |
|
85 |
TGP.GridKeyPress = function(ev){ |
|
86 |
if(this.Disabled || BIPAD&&!this.EditMode) return true; |
|
87 |
var key = ev.keyCode ? ev.keyCode : ev.charCode; |
|
88 |
var prefix = this.GetKeyPrefix(ev); |
|
89 |
if(BSafariMac&&!BChrome&&!BIPAD&&ev.metaKey) return true; |
|
90 |
if(Grids.OnKeyPress && Grids.OnKeyPress(this,key,ev,this.KeyCodes[key],prefix)) return true; |
|
91 |
if(!BMozilla) this.RunKeyPress(key,ev,prefix); |
|
92 |
if(BMozilla || BOpera) { |
|
93 |
|
|
94 |
if(this.HoldKey==key) this.HoldKey = -key; |
|
95 |
else if(this.HoldKey==-key) this.RunKeyActions(this.KeyCodes[key],prefix); |
|
96 |
else this.HoldKey = 0; |
|
97 |
} |
|
98 |
|
|
99 |
return true; |
|
100 |
} |
|
101 |
// ----------------------------------------------------------------------------------------------------------- |
|
102 |
TGP.RunKeyPress = function(key,ev,prefix){ |
|
103 |
if(key>=32 && (BIEA || ev.charCode || ev.which)) { |
|
104 |
var em = this.EditMode, ret = this.RunKeyActions("Key",prefix); |
|
105 |
if(!ret && !em && this.EditMode){ |
|
106 |
var I = this.FocusCursors.firstChild.firstChild.firstChild; |
|
107 |
|
|
108 |
if(Try){ |
|
109 |
|
|
110 |
if(!I && this.FRow && this.FRow.Tag) I = this.GetCell(this.FRow,this.FCol).firstChild; |
|
111 |
if(I) { |
|
112 |
|
|
113 |
var F = I.onkeydown; if(F) F.apply(I,[ev]); |
|
114 |
|
|
115 |
var F = I.onkeypress; if(F) F.apply(I,[ev]); |
|
116 |
} |
|
117 |
} else if(Catch){ } |
|
118 |
} |
|
119 |
} |
|
120 |
} |
|
121 |
// ----------------------------------------------------------------------------------------------------------- |
|
122 |
ME.Key; |