zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    927小程序繁星计划峰会 · 看完这七大话题 你会更了解阿里小程序
    不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式
    虽然他们说是水题,但我觉得思想蛮好的
    新学dfs(看懂了)
    01背包,死记硬背(我是真的蠢)
    装箱问题(太笨、还没想通)
    高精度乘法,string中的坑
    双十一用python秒杀京东好货!
    高精度减法用string 和 stack
    n阶汉诺塔 记住吧。。
  • 原文地址:https://www.cnblogs.com/maxxua/p/15505621.html
Copyright © 2011-2022 走看看