uniGUI學習之運行第三方JavaScript代碼的兩種方法JS(42)


要在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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM