要在uniGUI里引用JavaScript代碼
1】直接引用運行
// UniSession在uniGUIApplication單元 UniSession.AddJS('alert(unigui調用了JS方法)');
html與delphi間交互代碼 [ClientEvents操作] Js存取Edit,Memo組件值getValue,setValue MainForm.Edit1.setValue(“ABCDE”); //把值設定給Edit1 Ext.getCmp( MainForm.Edit1.id ).setValue(值); //把值設定給Edit1 MainForm.Edit1.getValue(); //取Edit1的值 Ext.getCmp( MainForm.Edit1.id ).getValue() ); Js存取Label MainForm.Label1.setText(值); //設定 Ext.getCmp( MainForm.Label1.id ).setText(值); Ext.getCmp( MainForm.Label1.id ).getWidth(); //取寬度 var a=document.getElementByIdx_x( MainForm.Label1.id ). innerText; //取值 var a=Ext.getCmp( MainForm.Label1.id ).text; //取值 MainForm.UniButton4.getId(); //取Unigui控件id MainForm.UniButton4.id; //取Unigui控件id [UniURLFrame之使用] UniLoginForm1.UniURLFrame1.iframe.contentWindow.document.getElementByIdx_x('container'). innerHTML=''; UniLoginForm1.UniURLFrame1.iframe.contentWindow.oldPoint = null; top.document.getElementByIdx_x(top.MainForm1.BT_del.getId()).click(); top.MainForm.UniEdit1; 你在UniURLFrame中可以直接用top.form.控件 這是extjs封裝過的 top.ajaxRequest(top.MainForm.UniURLFrame1,'TestEvent',null); 這樣的服務端的UniURLFrame1的OnAjaxEvent就會觸發 所以得一個結論 在UniURLFrame使用extjs的東西要加top. 控件如top.MainForm.UniEdit1 函數如top.ajaxRequest 多參考demo中ajax的范例
在js中界面上所有組件都當成html裡來控制 1、控制按鈕事件 js code如下 document.getElementById(MainForm.UniButton4.getId()).click(); //模擬按鈕事件 extjs code如下
MainForm.UniButton4.fireEvent("click", MainForm.UniButton4); //模擬按鈕事件
在delphi里代碼
UniSession.AddJS('MainForm.UniButton4.fireEvent("click", MainForm.UniButton4);');
2、給edit賦值,extjs code如下
MainForm.UniEdit1.setValue("1");
在delphi里代碼
UniSession.AddJS('MainForm.UniEdit1.setValue("1"); ');
procedure TMainForm.UniBitBtn1Click(Sender: TObject); begin UniSession.AddJS('function addFunc01(p1,p2) {'+ ' return p1+p2; '+ '} ');//添加函數addFunc01 UniSession.AddJS('alert(addFunc01(3,5));');//調用函數addFunc01 end;
JavaScript代碼只能用/* */注釋,不能用 //注釋,
UniSession.AddJS('function addFunc01(p1,p2) {'+ ' return p1-p2; '+ '} /*JavaScript里的注釋*/');//JavaScript代碼只能用/* */注釋,不能用 //注釋, UniSession.AddJS('alert(addFunc01(3,5));');//調用函數addFunc01
2】從.js文件中引用。這樣只有第一次 編譯 UniGui有用,而改寫JavaScript腳本 不再產生效果,瀏覽器 可能 緩存 第一次 JS調用。跟 瀏覽器有關。
a]雙擊ServerModule單元的” CustomFiles”屬性添加JS庫文件路徑,然后在界面里面執行代碼。
b].js文件要放在相對於Project1.exe的相對目錄路徑 下
c]myFunction.js代碼
function addFunc02(p1,p2) { return p1+p2; }
d]執行JavaScripts
procedure TMainForm.UniBitBtn2Click(Sender: TObject); begin UniSession.AddJS('alert(addFunc02(3,5));');//調用函數addFunc02 end;