fs-danaus
2023-03-30 665b0603d09890014f982fdfbd6ec47938f504b0
提交 | 用户 | 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;