电竞比分网-中国电竞赛事及体育赛事平台

分享

WPS JSA 宏編程(JS):7.用戶窗體

 我的狗狗叫小白 2022-04-23

一、與 VBA 窗體的差異

WPS JSA 也提供了用戶窗體,用戶也可以通過拖控件的方式,制作自己的對話框,以完成宏編程中的交互任務(wù)。

但它與 VBA 中的用戶窗體有很大的不同:

  1. 界面與事件邏輯分離,界面元素的繪制是一個模塊,事件邏輯放在之外的模塊,不是嵌入到窗體界面模塊的。
  2. 界面元素的 Name 屬性不可修改,屬性編輯器中也不提供這個屬性。雖然在官方文檔上說的是支持修改,但從 JSA 事件訂閱入口,即可知道,Name 屬性可能在以后的升級版本中也無法修改,因為它的名稱不變,才能方便事件訂閱,也就是事件訂閱機制鎖死了這方面的改進(jìn)的可能性。
  1. 界面對象繪制完成后,它是一個實例,不是一個類型,不允許使用 new 語句,來構(gòu)造它的新實例
  2. 只有頂級容器,也就是窗體本身有 Controls 成員,且它是一個方法,不是集合,它只接受字符串的 Name 參數(shù),不接受 Index 參數(shù),且 Name 參數(shù)不可省,無法直接得到整個子控件集合
  1. 因為無法得到整個子控件集合,也就無法對它進(jìn)行動態(tài)的添加控件
  2. 控件元素都有 Move(Left, Top, Width, Height) 方法,竊以為拆分成 Move(Left, Top)Resize(Width, Height),更符合邏輯
  1. 再沒有 Load/Unload 了,都是 Show()/Hide() 方法,這很好,這是面向?qū)ο蟮摹?/li>
  2. 新增了 HLayout/VLayout/HSpacer/VSpacer 控件,用來協(xié)助布局控件,有了它們你可以更方便地拖控件了

 

二、吐槽

  1. 相較于 VBA 的用戶窗體,JSA 的用戶窗體太死板了,主要體現(xiàn)在:
  1. 不能對控件集合,動態(tài)增刪新控件,動態(tài)性太差,想要玩兒點花活兒,比如按需求動態(tài)生成界面,是不可能的。當(dāng)然,就這一點而言,因為這只是初版,也許以后升級可以支持這個,這本身也不會破壞現(xiàn)有的規(guī)則。只需要在不給 Controls(Name) 傳遞參數(shù)時,返回整個控件集合就好,這樣就可以在這個集合上進(jìn)行動態(tài)增刪控件了。也即只需要增量改進(jìn)即可,其它容器控件添加上 Controls(Name) 方法,也不是難事兒。
  2. 修改控件元素的 Name 是無效的,簡單的界面還好,控件多了,分組多了,很容易亂套
    1. 創(chuàng)建的窗體界面,它不是一個類型,而是一個實例,不允許new 出新實例,這一點都不面向?qū)ο?/li>
  1. ZOrder 或者BringToFront()/SendToBack(),都不支持,控件堆疊是不可能的了
  2. CommandButton 的類型實際上是 PushButton,連官方文檔上都是 CommandButton,這叫用戶如何是從啊。而且直接訪問這個 PushButton 也是不存在的,而且 CommandButton 也不存在

 

三、總結(jié)

基于以上了解,JSA 的用戶窗體,還非常初級,死板而孱弱,功能也不健全。直接用基于網(wǎng)頁的 HTA 都要比它強。

還不如直接在文檔中使用代碼繪制控件,用這種方式封裝出一個庫,也比現(xiàn)在這個要強,要好用。

渣渣渣。。。也就將將滿足可用,遠(yuǎn)遠(yuǎn)談不上強大,更沒有任何靈活性。

希望官方推倒重來,這套界面,無論是類型系統(tǒng),還是窗體模塊的組織形式,事件的訂閱機制,整個都太差勁了,遠(yuǎn)古 UI 也比這個健全、強大吧。

.NET WinForm 風(fēng)格的 UI 就很不錯,既靈活,又強大。建議用這套風(fēng)格實現(xiàn)一套 UI。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多