表单修改方法、装置、存储介质和电子设备制造方法及图纸

技术编号:20944288 阅读:29 留言:0更新日期:2019-04-24 02:19
本公开涉及一种表单修改方法、装置、存储介质和电子设备,该方法包括:根据当前表单的原始表单模型,生成当前表单的第一虚拟表单模型,该第一虚拟表单模型与原始表单模型一致;当检测到对当前表单的第一操作时,将复制第一虚拟表单模型得到的第二虚拟表单模型放入当前的事件循环内,用于使事件循环内发生的针述当前表单的所有的修改操作均作用于第二虚拟表单模型上;根据事件循环结束后得到的第三虚拟表单模型与第一虚拟表单模型的对比结果,对该原始表单模型进行修改。能够在一个事件循环内对虚拟表单模型进行多次修改,从而不必每次修改表单模型都触发表单的重新绘制,因此能够避免不必要的资源消耗,降低性能损耗。

Form modification methods, devices, storage media and electronic devices

The present disclosure relates to a form modification method, device, storage medium and electronic device. The method includes: generating the first virtual form model of the current form based on the original form model of the current form, the first virtual form model is consistent with the original form model; when the first operation on the current form is detected, the second virtual form model obtained from the first virtual form model will be copied. The form model is put into the current event cycle to make all the modifications that pinpoint the current form occur in the event cycle act on the second virtual form model. According to the comparison between the third virtual form model and the first virtual form model after the event cycle, the original form model is modified. It can modify the virtual form model many times in an event cycle, so it does not need to trigger the redrawing of the form every time the form model is modified, so it can avoid unnecessary resource consumption and reduce performance loss.

【技术实现步骤摘要】
表单修改方法、装置、存储介质和电子设备
本公开涉及计算机
,具体地,涉及一种表单修改方法、装置、存储介质和电子设备。
技术介绍
现有的表单设计器,在进行表单修改操作时都是直接基于表单的表单模型(也称为表单图形模型、表单绘图模型)直接进行修改,但是这种方式容易造成性能的损耗,这是由于每次对表单模型的修改都会触发表单的重新绘制。例如我们通常在一个事件中同时操作多个节点,这些节点可能有相同的父节点,但是每修改一次子节点,就会导致一次重新绘制,特别是在有些情况下,可能只修改了个别节点,但是也需要对整个表单模型进行重新绘制。由此可见,在现有技术中,每次对表单模型的修改都会触发表单的重新绘制,会造成不必要的资源消耗,从而造成性能损耗。
技术实现思路
本公开的目的是提供一种表单修改方法、装置、存储介质和电子设备,用于解决现有技术中容易造成性能损耗的问题。为了实现上述目的,本公开的第一方面,提供一种表单修改方法,所述方法包括:根据当前表单的原始表单模型,生成所述当前表单的第一虚拟表单模型,所述第一虚拟表单模型与所述原始表单模型一致;当检测到对所述当前表单的第一操作时,将复制所述第一虚拟表单模型得到的第二虚拟表单模型放入当前的事件循环内,用于使所述事件循环内发生的针对所述当前表单的所有的修改操作均作用于所述第二虚拟表单模型上,所述事件循环是由所述第一操作触发产生,并在所述第一操作中断时结束;根据所述事件循环结束后得到的第三虚拟表单模型与所述第一虚拟表单模型的对比结果,对所述原始表单模型进行修改,所述第三虚拟表单模型是所述第二虚拟表单模型经过所述事件循环内的所述所有的修改操作修改后得到的。可选地,所述根据所述事件循环结束后得到的第三虚拟表单模型与所述第一虚拟表单模型的对比结果,对所述原始表单模型进行修改,包括:根据所述第三虚拟表单模型中的每层的节点与所述第一虚拟表单模型中的同层的节点的对比结果,对所述原始表单模型中的同层节点进行修改操作,以将所述原始表单模型修改为与所述第三虚拟表单模型一致。可选地,所述根据所述第三虚拟表单模型中的每层的节点与所述第一虚拟表单模型中的同层的节点的对比结果,对所述原始表单模型中的同层节点进行修改操作,以将所述原始表单模型修改为与所述第三虚拟表单模型一致,包括:在将所述第三虚拟表单模型中的第i层与所述第一虚拟表单模型中的第i层进行对比时,将所述第三虚拟表单模型中的第i层中的节点作为第一组,将所述第一虚拟表单模型中的第i层中的节点作为第二组,i为正整数,i的起始值为1;将第一头索引设置在所述第一组中的首节点处,第一尾索引设置在所述第一组中的尾节点处,以及将所述第二头索引设置在所述第二组中的首节点处,第二尾索引设置在所述第二组中的尾节点处;执行所述第一组和所述第二组的节点对比流程,以根据对比结果对所述原始表单模型的第i层中的节点进行修改;取i=i+1,并重复执行所述在将所述第三虚拟表单模型中的第i层与所述第一虚拟表单模型中的第i层进行对比时,将所述第三虚拟表单模型中的第i层中的节点作为第一组,将所述第一虚拟表单模型中的第i层中的节点作为第二组,至所述执行所述第一组和所述第二组的节点对比流程,以根据对比结果对所述原始表单模型的第i层中的节点进行修改的步骤,直至将所述原始表单模型修改为与所述第三虚拟表单模型一致。可选地,所述执行所述第一组和所述第二组的节点对比流程,以根据对比结果对所述原始表单模型的第i层中的节点进行修改,包括:当所述第一头索引所指的节点和所述第二头索引所指的节点相同时,将所述第一头索引指向所述第一组的下一个节点,所述第二头索引指向所述第二组的下一个节点,并重新执行所述节点对比流程;当所述第一头索引所指的节点和所述第二头索引所指的节点不同时,判断所述第一尾索引所指的节点和所述第二尾索引所指的节点是否相同;当所述第一尾索引所指的节点和所述第二尾索引所指的节点相同时,将所述第一尾索引指向所述第一组的上一个节点,所述第二尾索引指向所述第二组的上一个节点,并重新执行所述节点对比流程;当所述第一尾索引所指的节点和所述第二尾索引所指的节点不同时,判断所述第一尾索引所指的节点和所述第二头索引所指的节点是否相同;当所述第一尾索引所指的节点和所述第二头索引所指的节点相同时,在所述原始表单模型中的第i层中将所述第一尾索引所指的节点移动至所述第二尾索引所指的节点之后,并将所述第一尾索引指向所述第一组的上一个节点,所述第二头索引指向所述第二组的下一个节点,并重新执行所述节点对比流程;当所述第一尾索引所指的节点和所述第二头索引所指的节点不同时,判断所述第一头索引所指的节点和所述第二尾索引所指的节点是否相同;当所述第一头索引所指的节点和所述第二尾索引所指的节相同时,在所述原始表单模型中的第i层中将所述第一头索引所指的节点移动至所述第二头索引所指的节点之前,并将所述第一头索引指向所述第一组的下一个节点,所述第二尾索引指向所述第二组的上一个节点,并重新执行所述节点对比流程;当所述第一头索引所指的节点和所述第二尾索引所指的节不同时,遍历所述第二头索引到所述第二尾索引之间的所有节点,以确定是否存在所述第一头索引所指的节点;当不存在所述第一头索引所指的节点时,在所述原始表单模型中的第i层中将所述第一头索引所指的节点移动至所述第二头索引所指的节点之前,并将所述第一头索引指向所述第一组的下一个节点,并重新执行所述节点对比流程;当存在所述第一头索引所指的节点时,在所述原始表单模型中的第i层中将所述第一头索引所指的节点移动至所述第二头索引所指的节点之前,将所述第一头索引所指的节点在所述第二组中标记为已处理,并将所述第一头索引指向所述第一组的下一个节点,并重新执行所述节点对比流程;当所述第一头索引与所述第一尾索引先相遇时,将所述第二组中从所述第二头索引到所述第二尾索引之间的所有节点,在所述原始表单模型中的第i层中删除;当所述第二头索引与所述第二尾索引先相遇时,将所述第二组中从所述第二头索引到所述第二尾索引之间的所有节点,在所述原始表单模型中的第i层中插入至所述第二尾索引所指的节点之前。可选地,所述将所述第二组中从所述第二头索引到所述第二尾索引之间的所有节点,在所述原始表单模型中的第i层中删除,包括:当所述所有节点中的第一节点存在子节点时,在删除所述第一节点时将所述第一节点和所述第一节点的所有子节点一起删除,所述第一节点为所述所有节点中的任一节点。第二方面,提供一种表单修改装置,所述装置包括:生成模块,用于根据当前表单的原始表单模型,生成所述当前表单的第一虚拟表单模型,所述第一虚拟表单模型与所述原始表单模型一致;预修改模块,用于当检测到对所述当前表单的第一操作时,将复制所述第一虚拟表单模型得到的第二虚拟表单模型放入当前的事件循环内,用于使所述事件循环内发生的针对所述当前表单的所有的修改操作均作用于所述第二虚拟表单模型上,所述事件循环是由所述第一操作触发产生,并在所述第一操作中断时结束;表单修改模块,用于根据所述事件循环结束后得到的第三虚拟表单模型与所述第一虚拟表单模型的对比结果,对所述原始表单模型进行修改,所述第三虚拟表单模型是所述第二虚拟表单模型经过所述事件循环内的所述所有的修改操作修改后得到的。可选地,所述表单修改本文档来自技高网...

【技术保护点】
1.一种表单修改方法,其特征在于,所述方法包括:根据当前表单的原始表单模型,生成所述当前表单的第一虚拟表单模型,所述第一虚拟表单模型与所述原始表单模型一致;当检测到对所述当前表单的第一操作时,将复制所述第一虚拟表单模型得到的第二虚拟表单模型放入当前的事件循环内,用于使所述事件循环内发生的针对所述当前表单的所有的修改操作均作用于所述第二虚拟表单模型上,所述事件循环是由所述第一操作触发产生,并在所述第一操作中断时结束;根据所述事件循环结束后得到的第三虚拟表单模型与所述第一虚拟表单模型的对比结果,对所述原始表单模型进行修改,所述第三虚拟表单模型是所述第二虚拟表单模型经过所述事件循环内的所述所有的修改操作修改后得到的。

【技术特征摘要】
1.一种表单修改方法,其特征在于,所述方法包括:根据当前表单的原始表单模型,生成所述当前表单的第一虚拟表单模型,所述第一虚拟表单模型与所述原始表单模型一致;当检测到对所述当前表单的第一操作时,将复制所述第一虚拟表单模型得到的第二虚拟表单模型放入当前的事件循环内,用于使所述事件循环内发生的针对所述当前表单的所有的修改操作均作用于所述第二虚拟表单模型上,所述事件循环是由所述第一操作触发产生,并在所述第一操作中断时结束;根据所述事件循环结束后得到的第三虚拟表单模型与所述第一虚拟表单模型的对比结果,对所述原始表单模型进行修改,所述第三虚拟表单模型是所述第二虚拟表单模型经过所述事件循环内的所述所有的修改操作修改后得到的。2.根据权利要求1所述的方法,其特征在于,所述根据所述事件循环结束后得到的第三虚拟表单模型与所述第一虚拟表单模型的对比结果,对所述原始表单模型进行修改,包括:根据所述第三虚拟表单模型中的每层的节点与所述第一虚拟表单模型中的同层的节点的对比结果,对所述原始表单模型中的同层节点进行修改操作,以将所述原始表单模型修改为与所述第三虚拟表单模型一致。3.根据权利要求2所述的方法,其特征在于,所述根据所述第三虚拟表单模型中的每层的节点与所述第一虚拟表单模型中的同层的节点的对比结果,对所述原始表单模型中的同层节点进行修改操作,以将所述原始表单模型修改为与所述第三虚拟表单模型一致,包括:在将所述第三虚拟表单模型中的第i层与所述第一虚拟表单模型中的第i层进行对比时,将所述第三虚拟表单模型中的第i层中的节点作为第一组,将所述第一虚拟表单模型中的第i层中的节点作为第二组,i为正整数,i的起始值为1;将第一头索引设置在所述第一组中的首节点处,第一尾索引设置在所述第一组中的尾节点处,以及将所述第二头索引设置在所述第二组中的首节点处,第二尾索引设置在所述第二组中的尾节点处;执行所述第一组和所述第二组的节点对比流程,以根据对比结果对所述原始表单模型的第i层中的节点进行修改;取i=i+1,并重复执行所述在将所述第三虚拟表单模型中的第i层与所述第一虚拟表单模型中的第i层进行对比时,将所述第三虚拟表单模型中的第i层中的节点作为第一组,将所述第一虚拟表单模型中的第i层中的节点作为第二组,至所述执行所述第一组和所述第二组的节点对比流程,以根据对比结果对所述原始表单模型的第i层中的节点进行修改的步骤,直至将所述原始表单模型修改为与所述第三虚拟表单模型一致。4.根据权利要求3所述的方法,其特征在于,所述执行所述第一组和所述第二组的节点对比流程,以根据对比结果对所述原始表单模型的第i层中的节点进行修改,包括:当所述第一头索引所指的节点和所述第二头索引所指的节点相同时,将所述第一头索引指向所述第一组的下一个节点,所述第二头索引指向所述第二组的下一个节点,并重新执行所述节点对比流程;当所述第一头索引所指的节点和所述第二头索引所指的节点不同时,判断所述第一尾索引所指的节点和所述第二尾索引所指的节点是否相同;当所述第一尾索引所指的节点和所述第二尾索引所指的节点相同时,将所述第一尾索引指向所述第一组的上一个节点,所述第二尾索引指向所述第二组的上一个节点,并重新执行所述节点对比流程;当所述第一尾索引所指的节点和所述第二尾索引所指的节点不同时,判断所述第一尾索引所指的节点和所述第二头索引所指的节点是否相同;当所述第一尾索引所指的节点和所述第二头索引所指的节点相同时,在所述原始表单模型中的第i层中将所述第一尾索引所指的节点移动至所述第二尾索引所指的节点之后,并将所述第一尾索引指向所述第一组的上一个节点,所述第二头索引指向所述第二组的下一个节点,并重新执行所述节点对比流程;当所述第一尾索引所指的节点和所述第二头索引所指的节点不同时,判断所述第一头索引所指的节点和所述第二尾索引所指的节点是否相同;当所述第一头索引所指的节点和所述第二尾索引所指的节相同时,在所述原始表单模型中的第i层中将所述第一头索引所指的节点移动至所述第二头索引所指的节点之前,并将所述第一头索引指向所述第一组的下一个节点,所述第二尾索引指向所述第二组的上一个节点,并重...

【专利技术属性】
技术研发人员:赵振国黄治纲
申请(专利权)人:东软集团股份有限公司
类型:发明
国别省市:辽宁,21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1