DeWeb進階 :控件開發 --- 2 改造成DeWeb控件


2、根據純html,改造成DeWeb控件

如何生成DeWeb支持的控件?
其實不難,也就是編譯一個符合DeWeb規范的動態鏈接庫DLL即可。
DeWeb規范有2點:
(1)命名,命名必須是“dw”+“Delphi中相應控件的類名”,如“dwTButton”,“dwTComboBox”,也可以是第三方的控件類名,如“dwTRzPageControl”
有時,一個Delphi的控件需要同時改造成多個Web(也即DeWeb)中的控件,可以通過控件的HelpKeyword屬性進行再次區分。
本例中需要用增加editor.md控件, 感覺用Delphi中的TRichEdit比較相近,所以准備用TRichEdit來改造,DLL的工程命名為dwTRichEdit.dpr,
為了方便其見,直接打開dwTButton.dpr,另存為dwTRichEdit.dpr,並保存在同一目錄,即source\dwVcls
注: 如果是完全手動創建,建議也放到這個目錄,並設置Project Options -> Building -> Delphi Compiler -> Output directory 為 ..\Runtime\Vcls
並設置 run -> Parameters -> Debugger ->
Browse 為 ..\Runtime\DeWebServer.exe
Work directory 為 ..\Runtime\

(2)接口函數,共7個
dwGetExtra,用於引入非ElementUI框架的js/css,
函數聲明為
function dwGetExtra(ACtrl:TComponent):string;stdCall;
返回值為JSON數組表示的字符串
比如本例,需要引入




返回值應該為
[
"<link rel="stylesheet" href="dist/_editormd/style.css" />",
"<link rel="stylesheet" href="dist/_editormd/editormd.css" />",
"<script src="dist/_jquery/jquery.min.js">",
"<script src="dist/_editormd/editormd.min.js">"
]
為了防止在組合JSON出錯,建議采用JSON單元來創建,可以自動轉義

 **dwGetHead**,用於生成對應DeWeb控件(也就是HTML)的頭部
 函數聲明為
 function dwGetHead(ACtrl:TComponent):string;StdCall;

 **dwGetTail**,用於生成對應DeWeb控件(也就是HTML)的尾部
 函數聲明為
 function dwGetTail(ACtrl:TComponent):string;StdCall;


 **dwGetData**,用於生成對應DeWeb控件(也就是HTML)的相應數據
 函數聲明為
 function dwGetData(ACtrl:TControl):string;StdCall;


 **dwGetEvent**,針對相應的事件進行處理
 函數聲明為
 function dwGetEvent(ACtrl:TComponent;AData:String):string;StdCall;
 
 **dwGetMethod**,根據實時控件數據,生成更新控件狀態的代碼
 函數聲明為
 function dwGetMethod(ACtrl:TControl):string;StdCall;

 **dwGetMounted**,頁面渲染完成后控件需要執行的代碼(這個函數大部分控件未用到)
 函數聲明為
 function dwGetMounted(ACtrl:TControl):string;StdCall;


免責聲明!

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



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