• 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,并保存在同一目录,即sourcedwVcls
    注: 如果是完全手动创建,建议也放到这个目录,并设置Project Options -> Building -> Delphi Compiler -> Output directory 为 ..RuntimeVcls
    并设置 run -> Parameters -> Debugger ->
    Browse 为 ..RuntimeDeWebServer.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;
  • 相关阅读:
    十一月计划
    归并排序+例题
    今年暑假不AC(简单贪心)
    路障(BFS)
    堆优化版Dijkstra模板
    十月计划
    Find a way(BFS)
    Prime Path(BFS)
    Find The Multiple
    k8s中node节点资源不足
  • 原文地址:https://www.cnblogs.com/maxxua/p/15505621.html
Copyright © 2020-2023  润新知