CN1774712A - 在数据表中管理递归可缩放模板实例中的插入操作的系统和方法 - Google Patents
在数据表中管理递归可缩放模板实例中的插入操作的系统和方法 Download PDFInfo
- Publication number
- CN1774712A CN1774712A CNA2004800103996A CN200480010399A CN1774712A CN 1774712 A CN1774712 A CN 1774712A CN A2004800103996 A CNA2004800103996 A CN A2004800103996A CN 200480010399 A CN200480010399 A CN 200480010399A CN 1774712 A CN1774712 A CN 1774712A
- Authority
- CN
- China
- Prior art keywords
- instance
- recursive
- scalable template
- sti
- field
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/177—Editing, e.g. inserting or deleting of tables; using ruled lines
- G06F40/18—Editing, e.g. inserting or deleting of tables; using ruled lines of spreadsheets
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Control Of Heat Treatment Processes (AREA)
- Document Processing Apparatus (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及在包括多个数据的多维电子数据表中、最好在电子表格中,管理递归可缩放模板实例中的插入操作的方法、系统和程序;递归可缩放模板实例包括沿第一数据表维排序和对齐和根据递归可缩放模板构造的可变数量个相邻递归元素实例;所述递归可缩放模板有包括一个或多个可缩放模板的递归元素;每个递归元素实例沿所述第一数据表维有可变尺寸和沿第二数据表维有相同尺寸;递归元素实例有一个或多个可缩放模板实例;每个递归元素实例的每个可缩放模板实例沿所述第一数据表维对齐;每个递归元素实例内的每个可缩放模板实例沿第二数据表维对齐;可缩放模板实例有根据可缩放模板构造的可变数量个元素;元素定义成数据范围;数据范围有一个或多个数据。
Description
技术领域
本发明涉及通过数字计算机进行信息处理的领域,尤其涉及一种在数据表中,最好是在电子表格(electronic spreadsheet)中,用于管理递归可缩放模板实例中的插入操作的系统和方法。
背景技术
电子表格的一个基本价值是,将数据组织成列和行,同时使单调乏味(tiedious)的计算自动化。组织成列和行的这样一个数据集的典型、常见和有价值例子是一个单元格范围。即使一个单元格范围在电子表格的环境下接受正式的和严格的定义,它也足够灵活,使信息可以包括在单个单元格范围中或几个单元格范围的一个集合(set)中。因此,单元格范围是相当有用的对象。可以将一个单元格范围定义成一个整体和当作一个整体来处理。例如,可以在电子表格内将它从一个地方复制到另一个地方或将它从一个电子表格文件复制到另一个电子表格文件。单元格范围广泛用于在电子表格的领域中开发的应用程序中。时常,根据一些类型的结构排列单元格范围,从而变成所构造的单元格范围。每个单元格的内容被定义在一个元素(element)内,其中,一个元素被定义成所构造的单元格范围的一行,然后,重复相同类型的元素一定次数,以便存储/处理可变数量个信息段。多数情况下,使用相似所构造的单元格范围的几个实例。在当前没有其它工具真正可用的背景下,经常通过剪切/复制和粘贴操作创建这样相似所构造的单元格范围的实例。为了对不断增加的信息量保持高度的智能控制,人们需要组织或构造这种信息。由于允许嵌套结构(nested structure),所以往往使用分层(hierarchical)模型。这样分层结构的典型和众所周知例子是诸如DOS或Microsoft Windows之类的计算机操作系统的目录树。根目录可能包含文件和/或大量目录,这些目录本身可能包含文件和/或大量目录,这些目录本身可能又包含文件和/或大量目录,以此类推。递归有助于将信息构造和保持对它的智能控制。这种对递归的需要在电子表格(spredsheet)的环境下也可应用于所构造的单元格范围。当在电子表格文件中定义和使用所构造的单元格范围的几个实例时,它们本身往往根据可以在不同电子表格文件之间或甚至在单个电子表格文件内复制的特定超级结构排列或“所构造的单元格范围阵列”构造。在这样的所构造的单元格范围阵列内,找出遵从相同中间超级结构的几个所构造的单元格范围,以及遵从其它中间超级结构的一些其它所构造的单元格范围是平常的事。然后,可以将所构造的单元格范围阵列视作所构造的单元格范围的成群中间超级结构的一个集合。在当前传统电子表格的背景下,这样所构造的单元格范围阵列的实例经常通过剪切/复制和粘贴操作来创建。
创建所构造的单元格范围的新实例既复杂又漫长,尤其,由于传统单元格范围呈现出严重的局限性:
●(i)结构信息(譬如,列数、行数)、格式信息(譬如,字体、颜色、或边框)、和内容信息(譬如,公式或原始(raw)或信息性数据)是混合的;和
●(ii)单元格范围的尺寸在给定时刻是固定的。
因此,当电子表格用户想要创建结构相同的另一个单元格范围时,他/她需要依次进行几步操作。他/她需要:
1.复制-粘贴现有所构造的单元格范围;
2.区分包含原始或信息性数据的区域和包含诸如公式之类的通用内容的区域;
3.在试图保持该结构、格式和通用内容的同时,清除所复制原始数据的所复制的所构造的单元格范围;
4.将所构造的所复制的单元格范围的尺寸调整成他新需要的尺寸;和
5.最后,将默认值填入原始数据区中,以便方便以后的数据条目(entry)。
更进一步,在复制和粘贴所构造的单元格范围之前,由于存在盖写并因此丧失目的地位置上的先前存在信息的风险,因此用户必须为所复制的所构造的单元格范围预备地方。这个操作链迅速地变得单调乏味、漫长和易于出错,尤其当被操纵的所构造的单元格范围尺寸和复杂性增大时。
更新所构造的单元格范围往往也是非常复杂、漫长(lengthy)和易于出错的。这样的更新包括添加新元素和修改现有元素。在电子表格的环境下,可以不会出现任何特殊问题地进行几种类型的修改。但是,对于一些修改,例如,对于插入,情况并非总是这样。例如,如果通过诸如电子表格行插入方法之类的传统功能来添加行,所创建的行是空的。这意味着需要输入每个元素的每个单元格的值。输入数据或执行复制/粘贴操作代表着用户的重要工作负荷,而每个元素的内容在一定程度上是已知,应该遵从所构造的单元格范围的一般结构。此外,诸如行插入功能之类的正常电子表格功能可能危及一些相邻元素的内容。危及相邻元素的插入的一个良好例子是通过诸如C16+B17,或更一般地,(Cn-1)+(Bn)之类的公式,将行插入其中在每一行,诸如C17,或更一般地,(Cn)的单元格正指向前一行中的单元格的单元格范围中。在行16和17之间的行插入之后,单元格C18中的公式变成C16+B18,而不是通用公式C17+B18,或者,更一般地,在行(n-1)和(n)之间的行插入之后,单元格(Cn+1)中的公式变成(Cn-1)+(Bn+1),而不是通用公式(Cn)+(Bn+1)。举第二个例子来说,存在着必须在整个所构造的单元格范围地一致进行修改的情况。今天,这只能利用应用于要修改的确切区域的特定复制-粘贴操作来完成。这可能变得非常困难,尤其当操纵的所构造的单元格范围尺寸和复杂性不断增大。
当涉及到递归时,创建所构造的单元格范围阵列的新实例甚至更加复杂和漫长,尤其由于所构造的单元格范围阵列涉及到双层结构(twofold level ofstructure):
●在较低层上,必须创建所构造的单元格范围的多个、甚至不同的实例的一个集合。如前所述,由于传统单元格范围的局限性,这个操作本身是复杂、漫长和易于出错的。
●在较高层上,创建所构造的单元格范围阵列的实例要求电子表格用户进行几步操作:
1.识别用作创建新实例的参考的、所构造的单元格范围阵列的现有实例;
2.由于存在可能因盖写而丧失任何先前存在信息的风险,因此在目的地位置上预备保存新实例的地方;
3.将所构造的单元格范围阵列的参考实例复制-粘贴到目的地位置上;
4.通过在阵列中删除或引入所构造的单元格范围的实例的一个或几个中间超级结构,将所构造的单元格范围阵列的新创建实例的结构调整成满足他/她的新需要;
5.清除包括在该阵列内的所构造的单元格范围的每个实例的内容;和
6.最后,将相关默认值填入所构造的单元格范围的每个实例中。
更新所构造的单元格范围阵列往往也是非常复杂、漫长和易于出错的。实际上,这样的更新可能涉及到将新对象引入所构造的单元格范围阵列内或修改所构造的单元格范围阵列内的现有对象。第一个困难是确定用户想要修改包括在所构造的单元格范围阵列内的现有所构造的单元格范围(例如,在现有所构造的单元格范围内加上一行),还是修改所构造的单元格范围阵列(例如,加入中间超级结构)。在第一种情况中,像已经看到那样的修改本身就是一种有风险操作。在第二种情况中,操作的复杂性因要操纵的结构的信息量和层次而进一步增加。在电子表格环境下可获得的的传统工具无助于用户处理这样的替换(alternative),使得在操作链期间的任何用户错误的改正可能既困难和漫长。
1989年3月3日颁发给Steven J.Dubnoff的、发明名称为“为电子表格生成工作表文件的系统(System for generating worksheet files for electronicspreadsheets)”的美国专利US5,033,009号是令人感兴趣的现有技术文件。这个发明发展了可以通过工作表文件生成器合并在一起生成工作表文件的图形数据(pattem data)和可变数据的概念。但是,该发明呈现出妨碍它解决上文给出的一系列问题的许多局限性,尤其:
●它的目的是根据两个输入文件的集合中生成新输出电子表格,而存在着在用户应用环境下,在用户熟悉的现有电子表格文件内创建和操纵新实体的需要。
●除了常规电子表格工具之外,它不包含允许直接更新输出电子表格的机制。
●它不包含在同一电子表格文件内,操纵可变数量个不同结构以及那些结构中每一个的可变数量个实例的能力。粒度(granularity)局限于电子表格文件,而所需的粒度是所构造的单元格范围的粒度。
●所谓的“文件格式规范”真正将结构信息(譬如,列和行的个数和相对位置)、展示信息(譬如,字体、颜色、背景等)、和内容信息(譬如,公式等)混合在一起。
发明内容
正如在独立权利要求中定义的那样,本发明涉及包括多个数据的多维电子数据表、最好是电子表格,更具体地说,本发明涉及管理递归可缩放模板实例中的插入操作的方法、系统和程序;递归可缩放模板实例包括沿着第一数据表维排序和对齐和根据递归可缩放模板构造的可变数量个相邻递归元素实例;所述递归可缩放模板包含递归元素,该递归元素包括一个或多个可缩放模板;每个递归元素实例沿着所述第一数据表维具有可变尺寸和沿着第二数据表维具有相同尺寸;递归元素实例包括一个或多个可缩放模板实例;每个递归元素实例的每个可缩放模板实例沿着所述第一数据表维对齐;每个递归元素实例内的每个可缩放模板实例沿着第二数据表维对齐;可缩放模板实例包括根据可缩放模板构造的可变数量个元素;元素被定义成数据范围;数据范围包括一个或多个数据。该方法包括如下步骤:
●检测用于在递归元素实例的可缩放模板实例中将一个或多个相邻元素插在所选元素之后或之前的插入命令;
●识别:
●其中要插入所述一个或多个元素的可缩放模板实例;
●可缩放模板实例中的其之后或之前必须要插入一个或多个元素的所选元素;
●与所述可缩放模板实例相关联的可缩放模板;
●识别:
●递归可缩放模板实例和包括所识别的可缩放模板实例的递归元素实例;
●在所识别的可缩放模板实例中,把根据与所述可缩放模板实例相关联的可缩放模板构造的一个或多个元素插在所述所选元素之后或之前;
●根据所述递归元素实例中的最大可缩放模板实例的尺寸,沿着所述第一数据表维,调整所识别的递归元素实例的尺寸,所识别的递归可缩放模板实例的所有递归元素实例保持相邻而不重叠。
在特定实施例中,该方法还包括如下步骤:
●检测用于在递归可缩放模板实例中,将一个或多个相邻递归元素实例插在所选递归元素实例之后或之前的插入命令;
●识别:
●其中要插入所述一个或多个递归元素实例的递归可缩放模板实例;
●递归可缩放模板实例中的在其之后或之前必须插入一个或多个递归元素实例的所选递归元素实例;
●与所述递归可缩放模板实例相关联的递归可缩放模板;
●在递归可缩放模板实例中,将一个或多个相邻递归元素实例插在所述所选递归元素实例之后或之前;
●沿着第一数据表维将一个或多个所插入的递归元素实例与已经存在的一个或多个递归元素实例对齐;所述一个或多个所插入的递归元素实例沿着第二数据表维具有与已经存在的一个或多个递归元素实例相同的尺寸;
●根据为所识别的递归可缩放模板定义的递归元素构造每个所插入的递归元素实例。
在所附的从属权利要求中提供了本发明的进一步实施例。
首字母缩写词
为了更加简洁起见,使用如下首字母缩写词:
●EF代表元素格式;
●EP代表元素概要;
●MEF代表元元素(meta-element)格式;
●MEP代表元元素概要;
●RE代表递归元素;
●RME代表递归元元素;
●RST代表递归可缩放模板;
●RSTI代表递归可缩放模板实例;
●ST代表可缩放模板;
●STI代表可缩放模板实例。
附图简述
●图1A是可以实施本发明的计算机系统的示意图;
●图1B是用于实施本发明的包括操作系统、应用软件、以及用户界面的软件系统的示意图;
●图2示出了根据本发明优选实施例的用于管理RST的优选电子表格用户界面;
●图3示出了根据本发明优选实施例的用于编辑EF的优选电子表格用户界面;
●图4示出了根据本发明优选实施例的用于编辑EP的优选电子表格用户界面;
●图5示出了根据本发明优选实施例的用于编辑ST的优选电子表格用户界面;
●图6示出了根据本发明优选实施例的用于编辑RST的优选电子表格用户界面;
●图7A、7B、7C、7D、和7E分别例示了根据本发明优选实施例的EF表(EFT)、EP表(EPT)、ST表(STT)、ST描述符(descriptor)表(STDT)、和STI表(STIT)的结构;
●图7F给出了根据本发明优选实施例在表EFT、EPT、STT、STDT、STIT、RET、RSTT、RSTDT、RSTIT和RSTIDT之间建立的关系的图形例示;
●图8是例示根据本发明优选实施例管理RST对象的优选方法的流程图;
●图9是例示根据本发明优选实施例编辑EF和MEF的优选方法的流程图;
●图10是例示根据本发明优选实施例编辑EP和MEP的优选方法的流程图;
●图11是例示根据本发明优选实施例编辑ST的优选方法的流程图;
●图12是例示根据本发明优选实施例编辑RST的优选方法的流程图;
●图13A示出了根据本发明优选实施例的用于创建ST的优选电子表格用户界面;
●图13B例示了根据本发明优选实施例的ST实例化(instaciation);
●图14A是例示根据本发明优选实施例举例(instancing)ST的优选方法的流程图;
●图14B是例示根据本发明优选实施例创建STI的优选方法的流程图;
●图15A是例示根据本发明优选实施例管理STI中的插入的优选方法的流程图;
●图15B是例示根据本发明优选实施例创建STI内的元素的优选方法的流程图;
●图15C是例示根据本发明优选实施例管理RSTI中的插入的优选方法的流程图;
●图16A和16B分别示出了根据本发明优选实施例的用于管理STI中的插入的优先电子表格用户界面;
●图17A和17B例示了根据本发明优选实施例的STI插入的不同模式;
●图18A例示了根据本发明优选实施例的RSTI的逻辑结构;
●图18B例示了根据本发明优选实施例的RST的逻辑结构;
●图19A和19B构成例示用于根据本发明优选实施例创建RSTI的优选方法的流程图;
●图20A、20B、20C、20D、20E和20F分别例示了RE表(RET)、RST表(RSTT)、RST管理器表(RSTMT)、RST描述符表(RSTDT)、RSTI表(RSTIT)、和RSTI描述符表(RSTIDT)的结构;
●图21A示出了根据本发明优选实施例的用于创建RSTI的优选电子表格用户界面;
●图21B示出了根据本发明优选实施例的用于编辑RE的优选电子表格用户界面;
●图21C是例示根据本发明优选实施例编辑RST中的RE的优选方法的流程图;
●图22A是例示根据本发明优选实施例计算包括在STI中的行数的优选方法的流程图;和
●图22B是例示根据本发明优选实施例计算包括在STI中的列数的优选方法的流程图。
优选实施例详述
系统硬件:如图1A所示,本发明可以在计算机系统100上实施,该计算机系统100包括中央处理器101、主存储器102、输入/输出控制器103、键盘104、定位设备105(例如,鼠标、跟踪球、笔式设备等)、显示设备106、和大容量存储器107(例如,硬盘)。如有需要,诸如打印设备108之类的另外输入/输出设备也可以包括在系统100中。如图所示,系统100的各种各样部件通过系统总线110或类似结构进行通信。在优选实施例中,计算机系统100包括可从几个销售商(包括美国国际商用机器(IBM)公司(Armonk,N.Y.))那里购买到的IBM兼容个人计算机。
如图1B所示,为了向计算机系统100发出操作指令,配备了计算机软件系统150。存储在系统存储器102中和存储在盘存储器107上的软件系统150包括内核或操作系统151和外壳或界面153。可以“装载”诸如应用软件152之类的一个或多个应用程序(即,从外部存储器(storage)107传送到内部存储器(memory)102)供系统100执行。系统100通过用户界面153接收用户命令和数据;然后,系统100可以按照来自操作模块151和/或应用模块152的指令对这些输入采取行动。最好是图形用户界面(GUI)的界面153还用于显示结果,用户可以根据这些结果供应附加输入或终止对话(session)。在优选实施例中,操作系统151和界面153是可从微软公司(Redmond,Wash.)购买到的Microsoft Win95。另一方面,应用模块152包括下文进一步详述的本发明的电子表格笔记本。
界面:如下的描述关注实现Aureglia等人在发明名称为“在电子表格中从一个可缩放模式实例到另一个可缩放模式实例输出-输入输入单元格的内容的系统和方法(System and method in an electronic spreadsheet forexporting-importing the content of input cells from a scalable template instance toanother)”的国际专利申请PCT/EP 02/09483(IBM参考文献FR9 2001 0029)中描述的用户界面的本发明的当前优选实施例。
递归可缩放模板管理
A.引言
可缩放模板(ST’s)的概念
传统电子表格包括使电子表格用户可以容易地将数据组织成列和行的、同时使单调乏味的计算自动化的内置装置。所组织的数据的集合可以包括在单个单元格范围中或几个单元格范围的一个集合中。在电子表格的环境下,单元格范围是相当有用的和广泛使用的对象。可以将它作为整体来进行定义和处理。根据在国际专利申请PCT/EP 02/09483(IBM参考文献FR9 20010029)中描述的发明,该系统和方法适用于使电子表格用户:
●为单元格范围定义结构,包括:
●(i)由一个或多个元元素组成的可选页眉部分(header part);
●(ii)由一个或多个元素组成的必有主体部分;
●(iii)由一个或多个元元素组成的可选页脚部分(footer part)。
页眉部分的每个元元素的结构可以通过MEF用属性来定义,和通过MEP依据内容来定义。
主体部分的所有元素的结构可以通过EF用属性来定义,和通过EP依据内容来定义。
页脚部分的每个元元素的结构可以通过MEF用属性来定义,和通过MEP依据内容来定义。
这种结构被称为ST。总之,ST通过指定字段个数、通过引用定义所有主体元素的一对EF和EP、和可选地,通过引用定义页眉部分或页脚部分的每个元元素的一对或几对MEF和MEP来定义结构。
●管理ST’s和称为EF、EP、MEF和MEP的在它下面定义的对象。
●创建或更新EF’s、MEF’s。
●创建或更新EP’s、MEP’s。
●创建或更新ST。
●创建服从所定义的ST的STI。
●在STI内插入一个或多个元素。
●从STI中移动一个或多个元素。
如下的一组工具支持上面的一组功能:
●“RST管理器”方法,或简称为RSTM方法;
●“EF编辑器”方法,或简称为EFE方法;
●“EP编辑器”方法,或简称为EPE方法;
●“ST编辑器”方法,或简称为STE方法;
●“ST实例化器(instanciator)”方法,或简称为STI方法;
●“STI插入管理器”方法,或简称为STIIM方法。
递归可缩放模板(RST)的概念
在引入了ST和STI的概念之后,RST和RSTI的概念就变得更容易掌握了。实际上,可以将RST看作两层结构。最高层逻辑上等效于作为可以逻辑上映射成元素和元元素的构造RE和RME的一个集合的ST的结构。RST的递归性质表现在较低结构层上,因为RE和RME是本身包括STI(取代传统电子表格单元格,与元素和元元素的情况一样)的对象。换句话说,RST是ST的同级(tiered)结构。当将RST实例化时,可以清楚地表达相同的相似性来描述所得RSTI的结构。在较高层上,RSTI呈现逻辑上等效于STI的结构,但由容器范围,而不是单独单元格构成的结构。在每个容器范围内,较低层结构呈现STI的形式。其结果是,可以将RSTI看作本身包含代替传统单元格的STI的STI。因此,这样的对象首先以“所构造的单元格范围阵列”的名义引入。现在参照图18A和18B,这样RST和RSTI的简单例子将用于例示本申请。首先参照图18B,名为“RST_customer(RST_客户)”的RST 2051定义网络服务供应商遵从的结构,以记录与接受联网服务的客户相对应的所有各种各样数据。该RST围绕着一种结构来组织,该结构包括:
●页眉部分2052,其中,根据名为“ST_cust_data”的ST的结构记录客户数据(譬如,公司名、地址、业务、合同进度等),根据名为“ST_contacts”ST的结构记录客户联系人(譬如,CEO、CIO、CFO、经理等),根据名为“ST_SLA”的ST的结构记录所订立的服务层协议,以及根据名为“ST_support_team”的ST结构记录客户支持团队(譬如,运输(transition)经理交付经理、解答经理等)。
●主体部分2053,其中,根据名为“ST_res_info”的ST的结构,为从服务供应商接受服务的每个客户记录管理这个资源所需的信息(譬如,位置、IP地址、配置文件等),和根据名为“ST_pb_log”的ST的结构记录同一资源的当前问题日志。
●页脚部分2054,其中,根据名为“ST_billing”的ST的结构记录这个客户的结算状态,和根据名为“ST_stats”的ST的结构,记录客户管理资源的问题统计。
然后,参照图18B,RSTI 2001遵从RST 2051的结构“RST_customer”。实际上,它也围绕着包括页眉部分2002、主体部分2003、和页脚部分2004的结构来组织。页眉部分2002包含本身根据RST页眉部分2052的结构来组织、和服从ST的“ST_cust_data”、“ST_contacts”、“ST_SLA”、和“ST_support_team”的结构的4个STI。主体部分2003由3个不同记录2010、2009、和2008构成,它们的每一个根据RST主体部分2053的结构来组织,RST主体部分2053的结构包括服从ST的“ST_res_info”和“ST_cpb_log”的结构的2个STI。最后,页脚部分2054包含本身根据RST页脚部分2054的结构来组织并服从ST的“ST_billing”和“ST_stats”的结构的2个STI。时常,还使用相似递归构造的单元格范围的几个实例。在如上所述的和如图18A所示的我们例子的逻辑内,在新表格中为每个客户创建相似递归构造的单元格范围。在当前没有其它工具真正可用的电子表格环境的背景下,经常通过剪切/复制和粘贴操作来创建这样相似递归构造的单元格范围的实例。我们已经描述过用于创建STI的传统工具的局限性。由于RSTI的双重结构,创建RSTI甚至更加困难和更易于出错。实际上,操纵这样递归对象时出现的额外困难就是确定应该进行给定操作(譬如,复制-粘贴递归对象,识别递归对象内包含行数据或结构专用数据的区域,调整递归对象的尺寸,腾空递归对象内的一些字段,纠正由作用于递归对象的以前操作所导致的任何错误,以及将默认值填入递归对象内的一些字段中)的结构层。而且,在对递归构造的单元格范围进行复制和粘贴操作之前,用户必须在目的地位置上为所复制的递归构造的单元格范围预备地方,因为如果不这样做的话,就存在因盖写而丧失这个目的地位置上的先前存在信息的风险。上述的操作链迅速地变得单调乏味、漫长和易于出错,主要由于当使用传统工具时,递归构造的单元格范围的尺寸和复杂度会迅速达到人的极限。在本发明的优选实施例中,通过使电子表格用户进行如下操作,提供了对这些问题的用户友好解决方案,这些操作为:
●为单元格范围定义超级结构,包括:
●(i)由一个或多个RME组成的可选页眉部分;
●(ii)由一个RE组成的必有主体部分;
●(iii)由一个或多个RME组成的可选页脚部分。
页眉部分的每个RME的结构被定义成每一个对应于ST的超级结构字段的有序集合(collection)。
主体部分的所有RE的结构被定义成每一个对应于ST的超级结构字段的有序集合。
页脚部分的每个RME的结构被定义成每一个对应于ST的超级结构字段的有序集合。
这种超级结构被称为RST。总之,RST通过指定字段个数、通过引用定义主体部分的RE、和可选地,通过引用定义页眉部分或页脚部分的一个或几个RME’s来定义超级结构。
●管理RST’s和称为RE’s和RME’s的在它下面定义的对象。
●创建或更新RE’s。
●创建或更新RME’s。
●创建或更新RST。
●创建服从定义的RST的RSTI。
如下的一组工具支持上面的一组功能:
●“RST管理器”方法,或简称为RSTM方法;
●“RE编辑器”方法,或简称为REE方法;
●“RST编辑器”方法,或简称为RSTE方法;
●“RST实例化器”方法,或简称为RSTI方法。
在如下章节中,更详细地描述这组功能。
在我们的例子中,RST被发展成定义“NSP客户资源库(repository)”的通用结构,因此,便于创建所述“NSP客户资源库”的几个实例。现在参照图18B,定义“NSP客户资源库”的结构的RST:
●(i)指定超级结构字段的个数,在我们的例子中,为2(两)个。
●(ii)通过如下步骤定义“NSP客户资源库”的页眉部分2052:
●定义第一ST的“ST_cust_data”、和第二ST的“ST_contacts”的结构。
●定义包含前两个ST的第一RME2058的结构。
●定义第三ST的“ST_SLA”、和第四ST的“ST_support_team”的结构。
●定义包含前两个ST’s的第二RME 2057的结构。
●(iii)通过如下步骤定义“NSP客户资源库”的主体部分2053:
●定义第五ST的“ST_res_info”、和第六ST的“ST_pb_log”的结构。
●定义包含前两个ST的RE2056的结构。
●(iv)通过如下步骤定义“NSP客户资源库”的页脚部分2054:
●定义第一ST的“ST_billing”、和第二ST的“ST_stats”的结构。
●定义包含前两个ST的RME2055的结构。
根据上面的RST2051,可以以对用户而言非常有限的成本创建像如图18A所示的那个那样的一个或几个RSTI,并因此,避免了许多出错风险。
将对象插入RSTI中
给定上面简述的和在如下章节中精确定义的解决方案,电子表格用户现在能够在RST中定义单元格范围超级结构,和创建服从在RST中定义的超级结构、包括给定个数的RE’s的RSTI,RE’s它们本身包括服从ST’s的结构的较低层所构造的单元格范围。在我们“NSP客户资源库”的例子中,新创建的RSTI通常表现得像18A所示那样。一旦完成这个创建,用户现在可以将数据填入RSTI中,马上利用提供必须区域以记录所有所需客户相关信息的预定构造实例,并且,保存这个RSTI,作为电子表格文件的一部分,以便在需要的时候,进一步使用它。在我们的例子中,和现在参照图18A,用户将会:
●(i)为了限定(qualify)客户、合同、和客户支持团队,填充包括在页眉部分2002中的四个STI’s(“客户数据”、“客户联系人”、“服务层协议”、和“支持团队”)。
●(ii)为了限定在合同服务的范围内的三个客户管理资源,填充三对STI’s(“资源信息”和“问题日志”)。
●(iii)为了限定客户的结算/开票和服务层计量(measurement),填充两个STI’s(“结算”和“问题统计”)。
一旦填入数据,RSTI就包括如图18A所示的数据和结果。但是,用户可能需要迅速更新RSTI,例如,为了插入新的信息段。对于我们“NSP客户资源库”的例子,电子表格用户可能不得不处理实例,例如,在客户支持团队中引入新成员,引入新客户管理资源,或在问题日志中引入新问题。除了将新元素插入STI内所固有的难度之外,如前面所述,将新信息段插入RST内甚至更富挑战性,因为:
●可以在不同结构层上定义引入的对象。例如,引入新客户支持团队成员或在问题日志中引入新问题在于在所定义的STI(分别是“支持团队”和“问题日志”STI)中引入新元素,而引入新客户管理资源则要求根据相关RE2056的结构,在RSTI2001的主体部分2003内引入一对STI“资源信息”和“问题日志”。因此,由于任何错误都不得不通过维护RSTI的双层结构来恢复,用户必须进行谨慎的插入操作。
●引入对象造成的副作用在RSTI的较低结构层上可能是有害的(例如,通过破坏定义为RSTI一部分的STI),或者,通过破坏构成RSTI的各种各样STI的组织,而在较高结构层上可能也是有害的。在STI内的插入操作的描述中已经解决了前一种情况。当电子表格用户需要在RSTI2001的主体部分2003的顶部插入新客户管理资源时,可以例示后一种情况。在这种情况下,必须在“服务层协议”STI和顶部“资源信息”STI之间插入新“资源信息”STI;和必须在“支持团队”STI和顶部“问题日志”STI之间插入新“问题日志”STI。由于两个新插入的STI’s的高度未必相等,并且作为上部STI“服务层协议”和“支持团队”的底行,插入的结果最有可能是,属于主体部分2003的两个顶部现有STI’s不再水平对齐,因此,破坏了RSTI2001的超级结构。
在本发明的优选实施例中,通过在保证RSTI的所有RE和下面STI元素的完整性的同时,将新RE’s引入RSTI中,或者,将新元素引入RSTI的所选STI成员中,使电子表格用户可以改变现有RSTI,提供了对这些问题的用户友好解决方案。上面的功能被称为“RSTI插入管理器”方法,或简称为RSTIIM方法,在如下的章节中,更详细地定义它。
B.概念和词汇
这个章节的目的是形式化在本发明的范围内定义的一些概念(与对象相关联)和一些词汇。在如下的描述中,假设电子表格采取二维(2D)形式,以便可以在2D环境下描述表格和结构。此外,假设表格垂直组织,以便表格标题(heading)在表格的顶部,而不是在它的左侧。这样就可以非常清晰地描述作为本发明组成部分的各种各样原始概念、对象和方法,但无论如何,这不会对本发明的范围构成限制。也就是说,下面的描述可以推广到水平组织的2D表格的环境或3D表格的环境,而不偏离本发明的精神。
B1.基本定义
构造单元格范围:所构造的单元格范围是服从将数据组织成行和列的某种结构的单元格范围。列定义旨在每一行上包含相同类型的信息的字段。行定义记录(或元素)。
表格:字表可以用于指定所构造的单元格范围。
字段:字段是数据库或表格中包括每个记录(或元素)的相同类型信息的带标记列。例如,客户表可以包含标有名称、地址和电话号码(tel#)的字段。
推广之,在给定记录(或元素)中,给定字段指的是位于记录(或元素)和给定字段(带标记列)的交点上的单元格。
上面的定义用于列定义字段和行定义记录的2D环境。
可以在行定义字段和列定义记录的2D环境中调换它们。
也可以在例如页定义记录的3D环境中调换它们。
输入/输出单元格:当假设用于记录用户提供的信息时,将单元格指定成“输入”单元格。当假设用于生成信息(一般通过其变量(argument)直接或间接引用“输入”单元格的公式获得)时,将单元格指定成“输出”单元格。
B2.对象定义
定义如下对象有助于理解本发明。
元素格式:EF是用格式属性定义2维或3维单元格范围内的元素的结构的电子表格对象,这些属性为:
●背景属性(颜色、图案等);
●对齐属性(水平、垂直、文本环绕、跨列对齐(alignment across column)等);
●字体属性(大小、颜色等);
●线属性(类型、颜色等);
●字段保护;和
●任何其它传统格式属性。
元元素格式:MEF是依据格式属性定义2维或3维单元格范围内的元元素的结构的电子表格对象,这些属性为:
●背景属性(颜色、图案等);
●对齐属性(水平、垂直、文本环绕、单元格合并等);
●字体属性(大小、颜色等);
●线属性(类型、颜色等);
●字段保护;和
●任何其它传统格式属性。
元素概要:EP是用内容和目的定义2维或3维单元格范围内的元素的结构的电子表格对象:
●从包括在同一元素的其它字段中,或同一STI的另一个元素或元元素的其它字段中,或甚至STI之外的其它字段中的数据中计算的字段公式。
●在元素创建时指定的字段默认值。
●单元格的目的(为“输入”单元格输入的数据或为“输出”单元格生成的数据)。
元元素概要:MEP是依据内容和目的地定义2维或3维单元格范围内的元元素的结构的电子表格对象,这些内容和目的地:
●用于根据包括在同一元素的其它单元格中、或在同一STI的另一个元素或元元素的其它单元格中、或甚至在STI之外的其它单元格中的数据中计算的单元格公式。
●在元元素创建时赋予的单元格默认值。
●单元格的目的(为“输入”单元格输入的数据或为“输出”单元格生成的数据)。
可缩放模板(也称为“模板”或“ST”):ST是用{元素+元元素}布局定义2维或3维单元格范围的结构的电子表格对象。字汇(word)“可缩放”指的是为尺寸可变(例如,从最小值到最大值)单元格范围定义给定结构的ST的能力。ST通过如下来定义结构:
●指定字段个数;
●引用定义每个主体元素的一对EF和/或EP;和
●可选地,引用一对或几对MEF和/或MEP。
在2维环境中,这样的MEF’s/MEP’s位于构成ST“页眉”部分的EF/EP之上,或位于构成ST“页脚”部分的EF/EP之下。ST“页眉”部分或ST“页脚”部分,或它们二者都有可能是空的。当元素和元元素引用(reference)只由EP和MEP构成时,那么,ST只携带内容信息,因此,可以被命名为可缩放概要化模板。当元素和元元素引用只由EF和MEF构成时,那么,ST只携带格式信息,因此,可以被命名为可缩放格式化模板。当元素和元元素引用由EP’s和EF’s两者的任何组合构成时,那么,ST携带概要和格式信息,因此,可以被命名为可缩放概要化和格式化模板。
可缩放模板实例(也称为“实例”、“可缩放实例”或“STI”):STI是服从如下所定义ST的结构的电子表格对象:可缩放格式化模板、可缩放概要化模板、或可缩放概要化和格式化模板。可以将STI视作ST的继承对象(heir obiect)。它包含可变数量个元素(至少一个),这些元素包含在每个字段中与父结构(parent structure)相对应、和构成“主体”部分的信息,可选地,加上如ST所定义的、和构成STI的“页眉”部分和“页脚”部分的一个或几个元元素。
元素:元素是属于STI、和由服从在父结构中(分别在可缩放格式化模板、可缩放概要化模板、或可缩放概要化和格式化模板中)找到的EF、EP、(EF,EP)对的基本字段组成的电子表格对象。在不会丧失任何一般性的情况下,假设元素总是服从(EF,EP)对,其中,EF或EP可以退化成空对象。
元元素:元元素是属于STI、和由服从MEF、MEP、(MEF,MEP)对的基本单元格组成的电子表格对象。在不会丧失任何一般性的情况下,假设元元素总是服从(MEF,MEP)对,其中,MEF或MEP可以退化成空对象。
递归元素:RE是属于RST、构成RST的主体部分、和由用于记录ST的名称的基本字段组成的电子表格对象。RE具有与元素的结构相似的结构,但不是被实例化成单元格范围,而是被实例化成STI’s的范围。
例子:如图18B所示的RST2051的RE对应于构成这个RST的主体部分2053、和由分别包含ST的“ST_res_info”和“ST_pb_log”的名称的两个字段组成的结构2056。
递归元元素:RME是属于RST、属于RST的页眉和/或页脚部分、和由用于记录ST的名称的基本字段组成的电子表格对象。RME具有与元元素的结构相似的结构,但不是被实例化成单元格范围,而是被实例化成STI的范围。
例子:如图18B所示的RST2052的RME对应于属于这个RST的主体部分2052、和由分别包含ST的“ST_cust_data”和“ST_contacts”的名称的两个字段组成的结构2058。
递归可缩放模板(也称为“递归模板”或“RST”):RST是用{RE+RME}布局定义2维或3维单元格范围的超级结构的电子表格对象:字汇“可缩放”指的是为尺寸可变(例如,从最小值到最大值)单元格范围定义给定超级结构的RST的能力。RST通过如下来定义超级结构:
●指定字段个数;
●引用定义RST的主体元素的RE;和
●可选地,引用一个或几个RME。
在2维环境中,这样的RME位于构成RST“页眉”部分的RE之上,或位于构成RST“页脚”部分的RE之下。RST“页眉”部分或RST的“页脚”部分,或它们二者都有可能是空的。
例子:RST2051例示在图18B中。它由页眉部分2052、主体部分2053、和页脚部分2054构成。页眉部分包括两个RME2058和2057,两者都拥有两个字段,和分别包含ST的“ST_cust_data”、“ST_contacts”和“ST_SLA”、“ST_support_team”的名称。主体部分包括一个RE 2056,它拥有两个字段,分别包含ST的“ST_res_info”、“ST_pb_log”的名称。页脚部分包括一个RME2055,它拥有两个字段,分别包含ST的“ST_billing”、“ST_stats”的名称。
递归可缩放模板实例(也称为“递归实例”、“递归可缩放实例”或“RSTI”):RSTI是服从所定义RST的结构的电子表格对象。可以将RSTI视作RST的继承对象。它包含可变数量个容器行(container row)(至少一个),这些容器行包含与父RE结构相对应、和构成“主体”部分的一个或多个STI,可选地,加上包含与父RME结构相对应、和构成RSTI的“页眉”部分和“页脚”部分的一个或多个STI的一个或几个其它容器行。
例子:RSTI2001例示在图18A中。这个RSTI服从如图18B所示的RST2051。它由页眉部分2002、主体部分2003、和页脚部分2004构成。页眉部分包括两个容器行2012和2011。主体部分包括三个容器行2010、2009和2008。页脚部分包括一个容器行2007。每个容器行包含两个补偿器范围,譬如,可以看作顶容器行2012和右容器列2005的交点的容器范围(containerrange)2014。每个容器范围包含服从定义成RST2051的RE或RME成员的一部分的ST的结构的STI。例如,包括在容器行2010和容器列2005的补偿器范围交点内的STI 2034服从如在RST 2051的RME 2056中定义的那样、名为“ST_pb_log”的ST的结构,并且,本身由页眉部分2015、主体部分2016、和页脚部分2017构成。
容器行(container row):容器行是属于RSTI、和与包含根据RSTI服从的RST的RE或RME部分的定义构造的STI的单元格范围相对应的电子表格对象。容器行的行数等于它包含的最高STI的行数。容器行也可以称为递归元素实例。容器行在RSTI内可以被看作等效于STI内的元素。
例子:容器行2012例示在图18A中,与包括在RSTI2001内定义的STI2032和2013的单元格范围相对应。这个容器行的行数等于比STI2013高的STI2032的行数。
容器列(container column):容器列是属于RSTI、和与包含在RSTI的容器行内占据相同超级结构位置的STI的单元格范围相对应的电子表格对象。容器列的列数等于它包含的最宽STI的列数。
例子:容器列2006例示在图18A中,与包括在RSTI2001内占据最左位置的STI的单元格范围相对应。这个容器列的列数等于STI2030的列数,STI2030是RSTI2001左侧最宽的STI。
容器范围:容器范围是属于RSTI、和与容器行和容器列的交点相对应的电子表格对象。每个容器范围包含占据左上角的单个STI。RSTI内的容器范围可以被看作等效于STI内的单个单元格。
例如:容器范围2014例示在图18A中,与两者都属于RSTI2001的容器行2012和容器列2005的交点相对应。这个容器范围2014包含STI2013。
B3.记号(container column)
下列记号:∏i∈Sai对应于项ai的乘积,指标i属于集合S。下列记号:LCM({ai})i∈S对应于项ai的最小公倍数,指标i属于集合S。如果S由单个元素a构成,那么,LCM({ai})i∈S等于a。下列记号:aModb对应于a除以b的余数。
C.用于管理RST对象的表格
正如在前面章节中介绍的那样,本发明的优选实施例依赖于管理RST的不同类型对象。将这些对象记录在不同资源库中,以便可以通过作为本发明优选实施例的一部分的不同方法访问和更新它们。这样的资源库被称为表格:
●EF表或简称为EFT;
●EP表或简称为EPT;
●ST表或简称为STT;
●ST描述符表或简称为STDT;
●ST实例化器表或简称为STIT;
●RE表或简称为RET;
●RST表或简称为RSTT;
●RST管理器表或简称为RSTMT;
●RST描述符表或简称为RSTDT;
●RSTI表或简称为RSTIT;
●RSTI描述符表或简称为RSTIDT。
EFT、EPT、STT、STDT、STIT、RET、RSTT、RSTDT、RSTIT、和RSTIDT表作为电子表格盘文件的一部分保存在大容量存储器107上,而RSTMT表临时保存在主存储器102上和RSTEIT表保存在电子表格输出-输入文件上。
C1.EF表
现在参照图7A,根据本发明,EFT表700对应于由几个记录701组成的简单逻辑结构,它们的每一个对应于EF或MEF。每个记录包括六个字段:
●“Name(名称)”702字段用于记录唯一地标识当前记录701描述的EF或MEF的字符串。
●“Last Change Date(最后变化日期)”703字段用于记录当前记录701描述的EF或MEF的最后更新日期。
●“Description(描述)Ptr”704字段是指向记录描绘当前记录701描述的EF或MEF的例示单元格范围的存储单元的引用。这个存储单元可以在大容量存储器107上,在主存储器102上,或在其它传统存储器资源库装置上,这不偏离本发明的精神。
●“Row#(行)”705字段用于记录出现在当前记录701描述的EF或MEF中的行数。这个字段适用于元素或MEF对应于2D结构的3D ST。在采用2D ST的本发明优选实施例中,总是用值1填充这个字段。
●“Column#(列)”706字段用于记录出现在当前记录701描述的EF或MEF中的列数。
●“Type(类型)”707字段用于记录与当前记录701描述的EF或MEF相关联的不同属性:这是指定当前记录701是否描述EF或MEF的“META”属性708(具有相应值“NO”和“YES”)、和通过专用子字段(709a、709b、709c、709d和709e)指定与其它对象的关系的“REFERENCED(引用)”属性709。这些子字段被描述成“REFERENCED”属性2240的描述的一部分。传统技术可以用于编码这个“Type”字段中的这些不同属性,譬如,用预定位组合模式(bitpattern)进行逐位XOR(“异或”)运算,但也可以改用任何其它传统手段而不偏离本发明的精神。
C2.EP表
现在参照图7B,根据本发明,EPT表710对应于由几个记录711组成的简单逻辑结构,它们的每一个对应于EP或MEP。每个记录包括六个字段:
●“Name”712字段用于记录唯一地标识当前记录711描述的EP或MEP的字符串。
●“Last Change Date”713字段用于记录当前记录711描述的EP或MEP的最后更新日期。
●“Description Ptr”714字段是指向记录描绘当前记录711描述的EP或MEP的例示单元格范围的存储单元的引用。这个存储单元可以在大容量存储器107上,在主存储器102上,或在其它传统存储器资源库装置上,这不偏离本发明的精神。
●“Row#”715字段用于记录出现在当前记录711描述的EP或MEP中的行数。这个字段适用于元素或MEP对应于2D结构的3D ST。在采用2D ST的本发明优选实施例中,总是用值1填充这个字段。
●“Column#”716字段用于记录出现在当前记录711描述的EP或MEP中的列数。
●“Type”717字段用于记录与当前记录711描述的EP或MEP相关联的不同属性:这是指定当前记录711是否描述EP或MEP的“META”属性718(具有相应值“NO”和“YES”)、和通过专用子字段(719a、719b、719c、719d和719e)指定与其它对象的关系的“REFERENCED”属性719。这些子字段被描述成“REFERENCED”属性2240的描述的一部分。传统技术可以用于编码这个“Type”字段中的这些不同属性,譬如,用预定位组合模式进行逐位XOR运算,但也可以改用任何其它传统手段而不偏离本发明的精神。
C3.ST表
现在参照图7C,根据本发明,STT表720对应于由几个记录721组成的简单逻辑结构,它们的每一个对应于ST。每个记录包括六个字段:
●“Name”722字段用于记录唯一地标识当前记录721描述的ST的字符串。
●“Last Change Date”723字段用于记录当前记录721描述的ST的最后更新日期。
●“Description Ptr”724字段是指向记录当前记录721描述的ST的描述的存储单元的引用。这个存储单元可以在大容量存储器107上,在主存储器102上,或在其它传统存储器资源库装置上,这不偏离本发明的精神。这个描述是根据例示在图7D中的STDT表760构造的,也就是说,被构造成数对名称的有序列表,每一对由元素或MEF的名称和元素或MEP的名称组成。
●“Min Element(最小元素)#”725字段用于记录在服从当前记录721描述的ST的每个STI中找到的最小元素数。
●“Max Element(最大元素)#”726字段用于记录在服从当前记录721描述的ST的每个STI中找到的最大元素数。
●“Type”727字段用于记录与当前记录721描述的ST相关联的不同属性:这是总是取值“NO”的“META”属性728、和通过专用子字段(729a、729b、729c、729d和729e)指定与其它对象的关系的“REFERENCED”属性729。这些子字段被描述成“REFERENCED”属性2240的描述的一部分。传统技术可以用于编码这个“Type”字段中的这些不同属性,譬如,用预定位组合模式进行逐位XOR运算,但也可以改用任何其它传统手段而不偏离本发明的精神。
C4.ST描述符表
现在参照图7D,STDT表760对应于由几对元素或MEF765和元素或MEP766组成的简单逻辑结构,这个结构被组织成三个子集:
●可选ST“页眉”部分767,由像顶对761那样的可变个(可能零个)对组成。这些对的每一个由MEF(列765)和MEP(列764)构成。
●由单对组成的必有“主体”部分762,这个单对由EF(列765)和EP(列764)构成。
●可选ST“页脚”部分766,由像底对763那样的可变个(可能零个)对组成。这些对的每一个由MEF(列765)和MEP(列764)构成。
C5.ST实例化器表
现在参照图7E,根据本发明的优选实施例,STIT表750对应于由几个记录751组成的简单逻辑结构,它们的每一个对应于STI。每个记录包括六个字段:
●“Address(地址)”752字段用于定位当前记录751描述的STI:它的值对应于用于记录任何单元格范围的地址的传统字符串。
●“ST”753字段用于记录服从当前记录751描述的STI的ST的名称。
●“Element(元素)#”754字段用于记录当前记录751描述的STI内的元素数。
●“Critical(关键的)”755字段用于记录是否认为当前记录751描述的STI是关键性的。它的内容可以取值“YES”或“NO”。
●“Header Size(页眉尺寸)”756字段用于记录构成当前记录751描述的STI的页眉部分的元元素数。
●“Footer Size(页脚尺寸)”757字段用于记录构成当前记录751描述的STI的页脚部分的元元素数。
C6.RE表
现在参照图20A,根据本发明,RET表2210对应于由几个记录2211组成的简单逻辑结构,它们的每一个对应于RME。每个记录包括六个字段:
●“Name”2212字段用于记录唯一地标识当前记录2211描述的RE或RME的字符串。
●“Last Change Date”2213字段用于记录当前记录2211描述的RE或RME的最后更新日期。
●“Description Ptr”2214字段是指向记录描绘当前记录2211描述的RE或RME的例示单元格范围的存储单元的引用。这个存储单元可以在大容量存储器107上,在主存储器102上,或在其它传统存储器资源库装置上,这不偏离本发明的精神。
●“Row#”2215字段用于记录出现在当前记录2211描述的RE或RME中的行数。这个字段适用于RE或RME对应于2D结构的3D RST。在采用2D RST的本发明优选实施例中,总是用值1填充这个字段。
●“Column#”2216字段用于记录出现在当前记录2211描述的RE或RME中的列数。
●“Type”2217字段用于记录与当前记录2211描述的RE或RME相关联的不同属性:这是指定当前记录2211是否描述RE或RME的“META”属性2218(具有相应值“NO”和“YES”)、和通过专用子字段(2219a、2219b、2219c、2219d和2219e)指定与其它对象的关系的“REFERENCED”属性2219。这些子字段被描述成“REFERENCED”属性2240的描述的一部分。传统技术可以用于编码这个“Type”字段中的这些不同属性,譬如,用预定位组合模式进行逐位XOR(“异或”)运算,但也可以改用任何其它传统手段而不偏离本发明的精神。
C7.RST表
现在参照图20B,根据本发明,RSTT表2220对应于由几个记录2221组成的简单逻辑结构,它们的每一个对应于RST。每个记录包括六个字段:
●“Name”2222字段用于记录唯一地标识当前记录2221描述的RST的字符串。
●“Last Change Date”2223字段用于记录当前记录2221描述的RST的最后更新日期。
●“Description Ptr”2224字段是指向记录当前记录2221描述的RST的描述的存储单元的引用。这个存储单元可以在大容量存储器107上,在主存储器102上,或在其它传统存储器资源库装置上,这不偏离本发明的精神。这个描述是根据例示在图20D中的RSTDT表2250构造的,也就是说,被构造成RME或RE名称的有序列表。
●“Min Element#”2225字段用于记录在服从当前记录2221描述的RST的每个RSTI中找到的最小RE个数。
●“Max Element#”2226字段用于记录在服从当前记录2221描述的RST的每个STI中找到的最大RE个数。
●“Type”2227字段用于记录与当前记录2221所描述的RST相关联的不同属性:这是总是取值“NO”的“META”属性2228、和通过专用子字段(2229a、2229b、2229c、2229d和2229e)指定与其它对象的关系的“REFERENCED”属性2229。这些子字段被描述成“REFERENCED”属性2240的描述的一部分。传统技术可以用于编码这个“Type”字段中的这些不同属性,譬如,用预定位组合模式进行逐位XOR运算,但也可以改用任何其它传统手段而不偏离本发明的精神。
C8.RST管理器表
现在参照图20C,根据本发明的优选实施例,RSTMT表2230对应于由几个记录2231组成的简单逻辑结构,它们的每一个对应于RST管理器管理的对象。每个记录包括七个字段:
●“Name”2232字段用于记录唯一地标识当前记录2231描述的对象的字符串。
●“Last Change Date”2233字段用于记录当前记录2231描述的对象的最后更新日期。
●“Description Ptr”2234字段是指向记录当前记录2231描述的对象的描述的存储单元的引用。这个存储单元可以在大容量存储器107上,在主存储器102上,或在其它传统存储器资源库装置上,这不偏离本发明的精神。
●“Info Field(信息字段)1”2235字段用于记录与当前记录2231描述的对象相关联的第一段信息。
●“Info Field 2”2236字段用于记录与当前记录2231描述的对象相关联的第二段信息。
●“Type”2237字段用于记录与当前记录2231描述的对象相关联的不同属性,譬如:
●前面为类似“Type”字段707、717、727、777、2217、和2227描述的属性“META”2239,以及两个其它属性:
●根据例示RSTMT表2230的例子的图20C,由5(五)子字段构成的属性“REFERENCED”2240:
●“OWN REFERENCE(自有引用)”(或简称为OR)子字段2240a。这个子字段是创建记录2231描述的对象时指定的唯一质数。只有当删除记录2231描述的对象时,才释放这个质数。
●“FILIATION REFERENCE(分支引用)”(或简称为FR)子字段2240b。这个子字段根据如下公式来评估,其中,F集合对应于构成记录2231描述的对象的一组对象:
FR=∏i∈FORi×LCM({FRi})i∈F
上面的公式允许动态地将记录2231所描述的对象与构成它的对象联系在一起,因为因子ORi和FRi之一的值的任何改变都自动反映到FR上。如果F集合是空的(例如,当记录2231描述的对象是EP、MEP、EF、或MEF时),那么,FR子字段默认为值1(一)。
●“INSTANCE REFERENCE(实例引用)”(或简称为IR)子字段2240c。当创建记录2231描述的对象时,将这个子字段初始化成值1(一)。此后,每当创建服从这个对象的新实例时,将这个字段乘以2(二),和每当删除服从这个对象的现有实例时,将这个字段除以2(二)。
●“REFERENCED OBJECT(所引用对象)”(或简称为RO)子字段2240d。这个子字段是指定记录2231描述的对象是否参与另一个对象的定义的布尔变量。例如,EF、MEF、EP、或MEP可以参与ST的定义。类似地,ST可以参与本身可以参与RST的定义的RE的定义。这个子字段根据如下公式来评估,其中,P集合对应于RST对象的分层结构中,其类型遵从记录2231描述的对象的类型的一组对象:
如果LCM({FRi})i∈PMod OR=0,RO=“YES”;
否则,RO=“NO”。
上面的公式允许动态地将记录2231描述的对象与属于P集合的对象联系在一起,因为因子FRi之一的值的任何改变都自动反映到RO上。如果记录2231描述的对象是EF、MEF、EP、或MEP,那么,P集合对应于ST的集合。如果记录2231描述的对象是RE,那么,P集合对应于RST的集合。如果记录2231描述的对象是RST,那么,P集合是空的(已经到达顶层),从而RO子字段默认为值“NO”。
●“SELECTED CHILDREN(所选子系)”(或简称为SC)子字段2240e。这个子字段是指定记录2231描述的对象是否参与所选对象的定义的布尔变量。这个子字段根据如下公式来评估,其中,S集合对应于所选对象的集合(具有等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR #object∈S,SC=“YES”;
否则,SC=“NO”。
上面的公式允许动态地将记录2231描述的对象与所选对象(属于S集合)联系在一起,因为因子FRi之一的值或S集合的任何改变都自动反映到SC上。
如在表EFT700、EPT710、STT720、RSTEIT770、RET2210、和RSTT2220内定义的那样的其它“REFERENCED”属性基于五个子字段的同一个集合。
●反映电子表格用户是否已经在RST管理器对话框2300内选择了相关对象的“SELECTED”属性2242(具有相应值“YES”和“NO”),以及:
●反映对象是(M)EF,(M)EP,ST,R(M)E,还是RST的“NATURE”属性2241(具有相应值“FORMAT”,“PROFILE”,“TEMPLATE”,“RECELEMENT”或“RECTEMPLATE”)。
传统技术可以用于编码这个“Type”字段2237中的这些不同属性,譬如,用预定位组合模式进行逐位XOR运算,但也可以改用任何其它传统手段而不偏离本发明的精神。
●“Index”2238字段用于像通过RST管理器方法进行的那样,分类RSTMT表。
C9.RST描述符表
现在参照图20D,RSTDT表2250对应于由几对RE或RME的名称2254组成的简单逻辑结构,这个结构被组织成三个子集:
●可选RST“页眉”部分2256,由像顶部名称2251那样的可变个(可能零个)RME名称组成。
●由单个RE名称组成的必有“主体”部分2252。
●可选RST“页脚”部分2255,由像底部名称2253那样的可变个(可能零个)RME名称组成。
C10.RSTI表
现在参照图20E,根据本发明的优选实施例,RSTIT表2260对应于由几个记录2261组成的简单逻辑结构,它们的每一个对应于RSTI。每个记录包括六个字段:
●“Address”2262字段用于定位当前记录2261描述的RSTI:它的值对应于用于记录任何单元格范围的地址的传统字符串。
●“ST”2263字段用于记录服从当前记录2261描述的RSTI的RST的名称。
●“Element#”2264字段用于记录当前记录2261描述的RSTI内的RE的个数。
●“Critical”2265字段用于记录是否认为当前记录2261描述的RSTI是关键性的。它的内容可以取值“YES”或“NO”。
●“Header Size”2266字段用于记录构成当前记录2261描述的RSTI的页眉部分的RME的个数。
●“Footer Size”2267字段用于记录构成当前记录2261描述的RSTI的页脚部分的RME的个数。
C11.RSTI描述符表
现在参照图20F,根据本发明的优选实施例,RSTIDT表2270对应于由几个记录2271组成的简单逻辑结构,它们的每一个由几个单元格2272组成,它们的每一个对应于RSTI的STI成员。RSTIDT表2270被映射成具有由一个或几个记录2271组成的顶部页眉部分2275(可能空的)、由一个或几个记录2271组成的中间主体部分2274、以及由一个或几个记录2271组成的底部页脚部分2273(可能空的)的相关RSTI的结构。每个记录2271包括一个或多个单独单元格2272,它们的个数对应于每个RE的STI的个数。每个记录2272包括表示RSTI的STI成员的特征的七个字段:
●“Container_range”2276字段用于记录存放记录2272描述的STI的容器范围的地址。参照图18A,如果记录2272描述STI2013,这个字段记录容器2014的地址(容器行2012和容器列2005)的交点。
●“Container_col”2277字段用于记录存放记录2272描述的STI的容器范围的列数。参照图18A,如果记录2272描述STI2013,这个字段记录列数2028。
●“STI_col”2278字段用于记录记录2272描述的STI的列数。参照图18A,如果记录2272描述STI2013,这个字段记录列数2026。
●“STI_row”2279字段用于记录记录2272描述的STI的行数。参照图18A,如果记录2272描述STI2013,这个字段记录行数2027。
●“ST_name”2280字段用于记录服从记录2272描述的STI的ST的名称。
●“Container_row”2281字段用于记录存放记录2272描述的STI的容器范围的行数。参照图18A,如果记录2272描述STI2013,这个字段记录行数2029。
●“STIT_rec_ptr”2282字段用于在STIT表750内,指向描述由记录2272所描述的STI的记录751。
C12.表格之间的关系
现在参照图7F,该图一起给出了一些以前引入的表格RSTIT2260、RSTIDT2270、RSTT2220、RSTDT2250、RET2210、STIT750、STT720、STDT760、EFT700和EPT710,以例示在这些表格之间建立的关系和与RSTI的RSTI730或STI的STI797的关系。在这个图内,粗实线箭头例示指向表格或记录的基于指针关系,粗虚线箭头例示指向单元格范围的基于地址关系,细实线箭头例示指向对象的基于名称关系,和细虚线箭头例示指向对象的基于尺寸关系。在图7F中,基于指针、基于地址、和基于名称的关系是根据如下顺序,通过表示在圆圈内的指标标识的:
●从由三个部分“STI Header”、“STI Body”和“STI Footer”组成的STI的STI797开始,在这个STI的STI797与STIT表750的记录751之间建立第1基于地址关系j。
●然后,在这个记录751与STT表720的记录721之间建立第2基于名称关系k。这个记录721对应于服从STI797的ST。
●在这个记录721与描述ST的结构的STDT表760之间建立第3基于指针关系l。STDT表760的每个记录对应于一对元素或MEF名称和元素或MEP名称。
●在元素或MEF名称与EFT表700的记录701之间建立第4基于名称关系m。
●在元素或MEP名称与EPT表710的记录711之间建立第5基于名称关系n。
●在记录701与指定格式属性的例示单元格范围798之间建立第6基于指针关系o。
●在记录711与指定概要属性的例示单元格范围799之间建立第7基于指针关系p。
●现在从由三个部分“RSTI Header”、“RSTI Body”和“RSTI Footer”组成的RSTI730开始,在这个RSTI730与RSTIT表2260的记录2261之间建立第8基于地址关系q。
●在这个记录2261与描述RSTI730的结构的RSTIDT表2270之间建立第9基于指针关系r。RSTIDT表2270的每个单元格2272包括与RSTI730的给定STI(像STI797那样)有关的七个字段2276、2277、2278、2279、2280、2281和2282。
●因此在RSTIDT表2270的单元格2272的2276字段与包括STI的STI797的容器范围之间建立起第10基于地址关系s。
●还在RSTIDT表2270的单元格2272的2282字段与对应于STI的STI797的STIT表750的记录751之间建立起第11基于指针关系jj。
●然后,在记录2261与RSTT表2220的记录2221之间建立第12基于名称关系jk。这个记录2221对应于服从RSTI 730的RST。
●在这个记录2221与描述RST的结构的RSTDT表2250之间建立第13基于指针关系jl。RSTDT表2250的每个记录对应于RE或RME。
●在RE或RME名称与RET表2210的记录2211之间建立第14基于名称关系jm。
●在记录2211与包含ST的名称的RE描述符单元格范围731之间建立第15基于指针关系jn。
●在RE描述符单元格范围731与STT表720的记录721之间建立第16基于名称关系jo。
●在RSTIDT表2270的单元格2272与STT表720的记录721之间建立类似的第17基于名称关系jp。
D.方案
与刚刚描述过的传统工具不同,本发明的优选实施例以一群方法的形式提供了定义和管理ST的更有功效的、用户友好的和交互式的途径。在优选实施例中,本发明用在清楚地表达成一系列操作的方案内。
●1.第一操作:创建STI或RSTI
第一操作发生在电子表格用户根据这里未详述的一些准则,决定创建服从ST的结构的STI或创建服从RST的结构的RSTI的时候。在本发明的优选实施例中,这个操作包括如下步骤:
●a.RST管理器:电子表格用户首先借助于适合用在电子表格环境中的传统手段,譬如,定位设备105或键盘104(但不限于这些),调用称为“RST管理器”的原始专用命令,以便通过专用用户界面看见任何现有EF、MEF、EP、MEP、RE、RME、ST或RST。这个RST管理器为进一步管理这些实体提供了不同的选择。
这可以借助于参照图2所述的用户界面来例示,图2示出了如显示在显示设备106上那样的RST管理器对话框200。在这个RST管理器对话框200内,用户可以在分别指定对象的名称、对象的类型、和它们的最后更新日期的“列表框”213、214和202中看见已经定义的对象(EF、MEF、EP、MEP、RE、RME、ST和RST)。如果已经定义了大量对象,那么,用户可以借助于定位设备105向上或向下点击滚动条203,在它们之间导航,以便显示在列表框213、214和202内的对象在顶部对象和底部对象之间向前向后移动。在本发明的优选实施例中,通过最后更新日期对对象加以分类,但也可以使用任何其它分类方案,这不偏离本发明的精神。然后,用户可以采取几种行动。用户可以利用定位设备105点击像复选框212那样在RST管理器对话框200左侧的复选框,以便选择或撤选其名称在列表框213内正好显示在被点击复选框右边的对象。可以选择或撤选一个或多个对象。列表滚动当然会在复选框上反映出来。一旦进行了选择,如果用户想要从列表框213、214和202中除去所有所选对象,他/她可以利用定位设备105点击“Delete”按钮207。如果没有其它对象(ST、STI、RE、RME、RST或RSTI)引用这些对象的至少一个,那么,马上删除它们,以便它们不再出现在列表框213、214和202上。如果存在至少一个其它ST、STI、RE、RME、RST或RSTI引用所选对象的至少一个,那么,在显示设备106上显示传统对话框,首先将这种状况告诉用户,其次请他取消删除操作或确认它。如果用户的决定是取消操作,那么,不采取任何行动,否则,马上删除所选对象,以便它们不再出现在列表框213、214和202上。可替代地,如果用户想要编辑假设是唯一的所选对象,他/她可以利用定位设备105点击“Edit”按钮211。
如果以前没有选择对象或选择了多个对象,如在RST管理器对话框200内,在位于左侧的复选框中没有复选标记或存在多个复选标记(看得见的或看不见的)所示,那么,在显示设备106上,通过传统手段,譬如,弹出窗口、状态栏消息,或可以改用而不会偏离本发明精神的任何其它类似传统手段,向用户显示警告消息。
如果以前选择了单个对象,如在像复选框212那样,位于左侧的复选框中存在单个复选标记(看得见的或看不见的)所示,那么,首先关闭RST管理器对话框200,此后,考虑这单个所选对象的性质,以确定要打开的新对话框。
如果所选对象是EF或MEF,那么,发出EF编辑器命令,以便EF编辑器方法通过首先在显示设备106上显示如图3所示的EF编辑器对话框301采取控制。在随后的章节中详述这个方案事例的接着步骤。
如果所选对象是EP或MEP,那么,发出EP编辑器命令,以便EP编辑器方法通过首先在显示设备106上显示如图4所示的EP编辑器对话框301采取控制。在随后的章节中详述这个方案事例的接着步骤。
如果所选对象是RE或RME,那么,发出RE编辑器命令,以便RE编辑器方法通过首先在显示设备106上显示如图21B所示的RE编辑器对话框2321采取控制。在随后的章节中详述这个方案事例的接着步骤。
如果所选对象是ST,那么,发出ST编辑器命令,以便ST编辑器方法通过首先在显示设备106上显示如图5所示的ST编辑器对话框501采取控制。在随后的章节中详述这个方案事例的接着步骤。如果所选对象是RST,那么,发出RST编辑器命令,以便RST编辑器方法通过首先在显示设备106上显示如图6所示的RST编辑器对话框601采取控制。在随后的章节中详述这个方案事例的接着步骤。
可替代地,如果用户想要生成服从假设是唯一的和分别是ST或RST的所选对象的STI或RSTI,他/她可以利用定位设备105点击“Instanciate”按钮204。
如果以前没有选择对象或选择了多个对象,如在RST管理器对话框200内,在像复选框212那样,位于左侧的复选框中没有复选标记或存在多个复选标记(看得见的或看不见的)所示,那么,在显示设备106上,通过传统手段,譬如,弹出窗口、状态栏消息,或可以改用而不会偏离本发明精神的任何其它类似传统手段,向用户显示警告消息。
如果以前选择了单个对象,如在像复选框212那样,位于左侧的复选框中存在单个复选标记(看得见的或看不见的)所示,那么,该方法检验这个对象是否是ST或RST。
如果情况不是这样,那么,在显示设备106上,通过传统手段,譬如,弹出窗口、状态栏消息,或可以改用而不会偏离本发明精神的任何其它类似传统手段,向用户显示警告消息。
如果以前选择了单个ST(相应地,RST),那么,首先关闭RST管理器对话框200,此后,发出ST实例化器(相应地,RST实例化器)命令,以便ST实例化器(相应地,RST实例化器)方法通过首先在显示设备106上显示如图13A(相应地,图21A)所示的ST实例化器对话框1300(相应地,RST实例化器对话框2300)采取控制。在随后的章节中详述这个方案事例的接着步骤。
可替代地,如果用户想要将一组非空对象从当前电子表格文件输出到另一个电子表格文件,他/她可以利用定位设备105点击“Export”按钮206。如果复选框“Including child objects(for Export)”220上已打上复选标记,那么,即使没有通过像复选框212那样,位于左侧的复选框选择所选对象的所有子对象,这些子对象也将从输出操作中受益。
如果以前没有选择对象,如在RST管理器对话框200内,在像复选框212那样,位于左侧的复选框中没有任何复选标记(看得见的或看不见的)所示,那么,在显示设备106上,通过传统手段,譬如,弹出窗口、状态栏消息,或可以改用而不会偏离本发明精神的任何其它类似传统手段,向用户显示警告消息。
如果以前选择了一个或多个对象,如在像复选框212那样,位于左侧的复选框中存在至少一个复选标记(看得见的或看不见的)所示,那么,首先关闭RST管理器对话框200,此后,发出专用RST ExportMananger命令,以便在本发明中未描述的专用方法采取控制以管理输出操作。
可替代地,如果用户想要将一个或几个对象从另一个电子表格文件输入到当前电子表格文件,他/她可以利用定位设备105点击“Import”按钮205。首先关闭RST管理器对话框200,此后,发出专用RSTImport Mananger命令,以便在本发明中未描述的专用方法采取控制以管理输入操作。
可替代地,如果用户想要指定以后可能创建的新对象的类型,他/她可以利用定位设备105在RSTMananger对话框200的左下侧点击五个选项按钮217“Format”、209“Profile”、216“Template”、218“RE”、和219“Recursive Template”之一。用户拥有将EF、EP、RE、ST或RST指定为此后要创建的新对象的类型的选择。
可替代地,如果用户想要指定是否从当前在电子表格文件中选择的单元格范围中导出此后要创建的新对象,他/她可以利用定位设备105点击叫作“From current selection”的复选框208。
可替代地,如果用户想要创建以前借助于像下面那样的五个选项按钮指定了类型的新对象,他/她可以利用定位设备105点击“CreateNew”按钮210:
●“Profile”选项按钮209;
●“Format”选项按钮217;
●“Template”选项按钮216
●“RE”选项按钮218;或
●“Recursive Template”选项按钮219。
如果这五个选项按钮没有一个显示出以前被用户选择,如在RST管理器对话框200内,这五个选项按钮209、216、217、218和219没有一个被打点所示,那么,在显示设备106上,通过传统手段,譬如,弹出窗口、状态栏消息,或可以改用而不会偏离本发明精神的任何其它类似传统手段,向用户显示警告消息。
如果这五个选项按钮209、216、217、218和219之一显示出以前被用户选择,那么,首先关闭RST管理器对话框200,此后,考虑单个所选选项按钮,以确定要打开的新对话框。
如果“Format”选项按钮217显示出被选择,那么,发出EF编辑器命令,以便EF编辑器方法通过首先在显示设备106上显示如图3所示的EF编辑器对话框301采取控制。在随后的章节中详述这个方案事例的接着步骤。
如果“Profile”选项按钮209显示出被选择,那么,发出EP编辑器命令,以便EP编辑器方法通过首先在显示设备106上显示如图4所示的EP编辑器对话框301采取控制。在随后的章节中详述这个方案事例的接着步骤。
如果“Template”选项按钮216显示出被选择,那么,发出ST编辑器命令,以便ST编辑器方法通过首先在显示设备106上显示如图5所示的ST编辑器对话框501采取控制。在随后的章节中详述这个方案事例的接着步骤。
如果“RE”选项按钮218显示出被选择,那么,发出RE编辑器命令,以便RE编辑器方法通过首先在显示设备106上显示如图21B所示的RE编辑器对话框2321采取控制。在随后的章节中详述这个方案事例的接着步骤。
如果“Recursive Template”选项按钮219显示出被选择,那么,发出RST编辑器命令,以便RST编辑器方法通过首先在显示设备106上显示如图6所示的RST编辑器对话框601采取控制。在随后的章节中详述这个方案事例的接着步骤。
最后,如果用户想要结束RST管理器方法,他/她可以利用定位设备105点击“Done”按钮201或关闭窗口按钮215。其结果是关闭显示设备106上的RST管理器对话框200。
●b.EF编辑器:根据前面例示RST管理器方法的方案,电子表格用户然后可以借助于适合用在电子表格环境中的传统手段,譬如,定位设备105或键盘104(但不限于这些),调用称为“EF编辑器”的原始专用命令,以便创建新EF;创建新MEF;更新现有EF;或更新现有MEF。Aureglia等人在发明名称为“在电子表格中从一个可缩放模式实例到另一个可缩放模式实例输出-输入输入单元格的内容的系统和方法(System and method in an electronic spreadsheet forexporting-importing the content of input cells from a scalable templateinstance to another)”的国际专利申请PCT/EP 02/09483(IBM参考文献FR9 2001 0029)中描述了相应方案。
●c.EP编辑器:根据前面例示RST管理器方法的方案,电子表格用户然后可以借助于适合用在电子表格环境中的传统手段,譬如,定位设备105或键盘104(但不限于这些),调用称为“EP编辑器”的原始专用命令,以便创建新EP,创建新MEP,更新现有EP,或更新现有MEP。Aureglia等人在发明名称为“在电子表格中从一个可缩放模式实例到另一个可缩放模式实例输出-输入输入单元格的内容的系统和方法(System and method in an electronic spreadsheet forexporting-impofting the content of input cells from a scalable templateinstance to another)”的国际专利申请PCT/EP02/09483(IBM参考文献FR9 2001 0029)中描述了相应方案。
●d.RE编辑器:根据前面例示RST管理器方法的方案,电子表格用户然后可以借助于适合用在电子表格环境中的传统手段,譬如,定位设备105或键盘104(但不限于这些),调用称为“RE编辑器”的原始专用命令,以便创建新RE,创建新RME,更新现有RE,或更新现有RME。这可以借助于参照图21B所述的用户界面来例示,图21B示出了如在显示设备106上显示在电子表格办公应用软件的GUI窗口内那样的RE编辑器对话框2321。
当在显示设备106上显示RE编辑器对话框232时,它包含一些信息段。
第一,通过指定是否是RE或RME的一对选项按钮2330和2331示出编辑对象的性质。电子表格用户可以用定位设备105点击这两个选项按钮2330和2331之一,以便切换RE定义和RME定义。
第二,在文本框2326中指定编辑对象内的字段数。当创建新RE或RME时(电子表格用户以前已经用定位设备105点击了选项按钮218将点打在上面和点击了按钮210,两者都包含在如图2所示的RST管理器对话框200内),文本框2326所示的值对应于在本发明的优选实施例中设置成3的默认值。当编辑现有RE或RME时,文本框2326所示的值对应于以前为这个对象定义的字段数。在所有情况中,电子表格用户可以通过用定位设备105点击旋钮2327,点击在上升侧上或点击在下降侧上,以便可以使值增加或减小(在预定界限内),改变显示在文本框2326中的值。
第三,在标记按钮2324上显示编辑RE或RME的名称。当编辑现有RE或RME时,标记框2324所示的名称对应于以前指定给这个对象的名称。当创建新RE或RME时,那么,显示在标记框2324上的名称对应于在本发明的优选实施例中,采取“New XX”形式的默认值,其中,XX是保证指定名称唯一性的计数。
第四,文本框2325和2334一起指定构成编辑RE或RME的ST。文本框2325指定按惯例,为编辑RE或RME的最左边字段取值1,和为编辑RE或RME的最右边字段取与显示在文本框2326上的那个相同的值的字段等级。文本框2324为文本框2325指定其等级的字段指定ST的名称。
RE编辑器对话框2321包含允许电子表格用户采取一些行动的几个图形对象。
第一,电子表格用户可以将新名称指定给当前编辑的RE或RME。为了这个目的,他/她首先利用诸如键盘104之类的传统手段在文本框2325内指定要给予编辑RE或RME的新名称。然后,他/她利用定位设备105点击“Save as”按钮2332。如果输入文本框2325内的指定名称已经指定给现有对象或不是有效名称,那么,在显示设备106上,通过传统手段,譬如,弹出窗口、状态栏消息,或可以改用而不会偏离本发明精神的任何其它类似传统手段,向用户显示警告消息。这个警告信息将这种状况通知电子表格用户,然后,提醒他加以确认。然后,清除文本框2325而不采取进一步行动。如果输入文本框2325内的指定名称还没有指定给现有对象和是有效名称,那么,清除文本框2325,和将编辑对象保存在电子表格文件上也显示在标记框2324内的新名称下。
第二,电子表格用户可以通过用定位设备105点击“Save”按钮2333,将编辑对象的当前定义保存在电子表格文件上。这个事件的后果是检验更新的RE或RME是否已经被现有RST引用。如果情况不是这样,那么,在显示设备106上,通过传统手段,譬如,弹出窗口、状态栏消息,或可以改用而不会偏离本发明精神的任何其它类似传统手段,向用户显示警告消息。这个警告信息将这种状况通知电子表格用户,然后,提醒他取消操作或继续进行。在第一种情况中,不保存更新的RE或RME定义,而在第二种情况中,将它保存在电子表格文件上。
第三,电子表格用户可以改变构成编辑RE或RME的ST的定义。为了这个目的,他/她通过用定位设备105点击旋钮2329,降低和提高像显示在文本框2335中那样、和ST名称显示在文本框2334中的字段的等级,首先在编辑对象的字段内导航。字段等级所取的值保持在下限为值1(一)和上限为文本框2326的值的区间内。然后,电子表格用户可以通过用定位设备105点击旋钮2328选择适当ST名称,为其等级显示在文本框2335中的字段更新ST的名称。最后,如果用户想要结束RE编辑器方法,他/她可以利用定位设备105点击“Done”按钮2323或关闭窗口按钮2322。其结果是关闭显示设备106上的RE编辑器对话框2321。
●e.ST编辑器:根据前面例示RST管理器方法的方案,电子表格用户然后可以借助于适合用在电子表格环境中的传统手段,譬如,定位设备105或键盘104(但不限于这些),调用称为“ST编辑器”的原始专用命令,以便创建新ST或更新现有ST。Aureglia等人在发明名称为“在电子表格中从一个可缩放模式实例到另一个可缩放模式实例输出-输入输入单元格的内容的系统和方法(System and methodin an electronic spreadsheet for exporting-importing the content of inputcells from a scalable template instance to another)”的国际专利申请PCT/EP 02/09483(IBM参考文献FR9 2001 0029)中描述了相应方案。
●f.RST编辑器:根据前面例示RST管理器方法的方案,电子表格用户然后可以借助于适合用在电子表格环境中的传统手段,譬如,定位设备105或键盘104(但不限于这些),调用称为“RST编辑器”的原始专用命令,以便创建新RST或更新现有RST。这可以借助于参照图6所述的用户界面来例示,图6示出了如在显示设备106上显示在电子表格办公应用软件的GUI窗口611内那样的RST编辑器对话框601。当在显示设备106上显示RST编辑器对话框601时,当前表格变成在本发明的优选实施例中叫作“Editor Space”615的专用表格。在“Editor Space”615表格内,要编辑的RST在左上角显示成一个单元格范围614,左上单元格在地址B2上。尽管编辑的RST对应于表格内的常规单元格范围614,但适合用在电子表格环境中的传统工具不能用于更新这个单元格范围614。电子表格用户只能利用作为RST编辑器对话框601的一部分的专用手段在例示RST的单元格范围614内导航,和在例示RST的单元格范围614内插入或删除行。“Editor Space”表格615内中的行插入或删除将被禁止。此外,对“Editor Space”表格615加上写保护,以防止用户不小心修改了定义成单元格范围614所例示的RST的一部分的RE或RME的设置。当在显示设备106上显示RST编辑器对话框601时,它包含与单元格范围614所例示的整个RST有关,或与当前在这同一个单元格范围614内选择的单元格所指的RE或RME有关的一些信息段。
第一,当前选择的单元格所指的RE或RME由“RE”组合框610示出。通过用定位设备105点击位于这个“RE”组合框610右侧的箭头,电子表格用户可以显示所定义RE和RME的列表和在所定义RE和RME的列表内导航,然后,选出他/她选择的RE或RME和出现在位于单元格范围614内的当前所选单元格上的行上的他/她的选择。如果电子表格用户通过用定位设备105点击“Up”按钮619,或“Down”按钮616,改变单元格范围614内的所选行,那么,更新显示在组合框610内的名称,以指定与新选行相对应的RE或RME的名称。如果电子表格用户想要将新RME插入RST的页眉部分或页脚部分中,他/她刚才不得不用定位设备105点击“Add”按钮617,以便将新行插在单元格范围614内当前所选单元格的最后位置之上的所需地方。然后,用显示在窗口611上的新行更新单元格范围614。然后,通过在组合框610内示出默认指定给引入RME的名称更新RST编辑器对话框601。如果电子表格用户想要从RST的页眉部分或页脚部分中除去RME,他/她刚才不得不用定位设备105点击“Delete”按钮618,以便在单元格范围614内在所需地方除去相应行。然后,单元格范围614内的当前所选单元格变成属于代表在RST内定义的唯一RE的行的那一个,和通过在组合框610内示出在RST内定义的唯一RE的名称更新RST编辑器对话框60。
第二,在“MIN”文本框606中指定在服从编辑RST的RSTI内允许的最小RE个数。类似地,在“MAX”文本框609中指定在服从编辑RST的RSTI内允许的最大RE个数。当创建新RST时(电子表格用户以前已经用定位设备105点击了选项按钮219将点打在上面和点击了按钮210,两者都包含在如图2所示的RST管理器对话框200内),“MIN”文本框606所示的值对应于在本发明的优选实施例中设置成1的默认值,和“MAX”文本框609所示的值对应于在本发明的优选实施例中设置成16的默认值。当编辑现有RST时,文本框606和609所示的值分别对应于如电子表格用户以前定义的那样的、在服从当前编辑RST的任何RSTI内允许的最小和最大RE个数。在所有情况中,电子表格用户可以通过用定位设备105分别点击旋钮607或旋钮608,点击在上升侧上或点击在下降侧上,以便在保证在“MIN”文本框606中指定的值保持小于等于在“MAX”文本框609中的值的同时,可以使值增加或减小(在预定界限内),改变显示在文本框“MIN”606或文本框“MAX”609中的值。倘若服从更新RST的某个现有RSTI具有落在新“MIN”-“MAX”区间之外的元素个数,那么,这个RSTI将不受RST更新影响,但任何未来的RE加入或除去都根据“MIN”-“MAX”区间的新定义来完成。
第三,在标记按钮604上显示编辑RST的名称。当编辑现有RST时,标记框606所示的名称对应于以前指定给这个对象的名称。当创建新RST时,那么,显示在标记框604上的名称对应于在本发明的优选实施例中,采取“New XX”形式的默认值,其中,XX是保证指定名称唯一性的计数。
RST编辑器对话框601包括允许电子表格用户采取一些行动的几个图形对象。
第一,如果当前编辑的RST当前由均存在相同个数的字段的RE和RME组成,电子表格用户可以将新名称指定给当这个RST。实际上,在这种情况下,使能“Save as”按钮612,以便用定位设备105对它的任何点击都被识别为有效事件。电子表格用户首先利用诸如键盘104之类的传统手段在文本框605内指定要给予编辑RST的新名称。然后,他/她利用定位设备105点击“Save as”按钮612。如果输入文本框605内的指定名称已经指定给现有对象或不是有效名称,那么,在显示设备106上,通过传统手段,譬如,弹出窗口、状态栏消息,或可以改用而不会偏离本发明精神的任何其它类似传统手段,向用户显示警告消息。这个警告信息将这种状况通知电子表格用户,然后,提醒他加以确认。然后,清除文本框605而不采取进一步行动。如果输入文本框605内的指定名称还没有指定给现有对象和是有效名称,那么,清除文本框2325,和将编辑的RST保存在电子表格文件上也显示在标记框604内的新名称下。
第二,如果编辑的RST当前由均存在相同个数的字段的RE和RME组成,电子表格用户可以将这个RST的当前定义保存在电子表格文件上。实际上,在这种情况下,使能“Save”按钮613,以便用定位设备105对它的任何点击都被识别为有效事件。这个事件的后果是检验更新的RST是否已经被现有RSTI引用。如果情况不是这样,那么,将RST的更新定义保存在电子表格文件上。如果情况是这样,那么,在显示设备106上,通过传统手段,譬如,弹出窗口、状态栏消息,或可以改用而不会偏离本发明精神的任何其它类似传统手段,向用户显示警告消息。这个警告信息将这种状况通知电子表格用户,然后,提醒他取消操作或继续进行。在第一种情况中,不保存更新的RST定义,而在第二种情况中,将它保存在电子表格文件上。
最后,如果用户想要结束RST编辑器方法,他/她可以利用定位设备105点击“Done”按钮603或关闭窗口按钮602。其结果是关闭显示设备106上的RST编辑器对话框601,和返回到最初调用RST编辑器命令时激活的表格。
●g.ST实例化器:根据前面例示RST管理器方法的方案,电子表格用户然后可以借助于适合用在电子表格环境中的传统手段,譬如,定位设备105或键盘104(但不限于这些),调用称为“ST实例化器”的原始专用命令,以便创建服从所选ST和根据当前所选单元格定位的STI。Aureglia等人在发明名称为“在电子表格中从一个可缩放模式实例到另一个可缩放模式实例输出-输入输入单元格的内容的系统和方法(System and method in an electronic spreadsheet forexporting-importing the content of input cells from a scalable templateinstance to another)”的国际专利申请PCT/EP 02/09483(IBM参考文献FR9 2001 0029)中描述了相应方案。
●h.RST实例化器:根据前面例示RST管理器方法的方案,电子表格用户然后可以借助于适合用在电子表格环境中的传统手段,譬如,定位设备105或键盘104(但不限于这些),调用称为“RST实例化器”的原始专用命令,以便创建服从所选RST和根据当前所选单元格定位的RSTI。这可以借助于参照图21A所述的用户界面来例示,图21A示出了如显示在显示设备106上那样的RST实例化器对话框2300。当在显示设备106上显示RST实例化器对话框2300时,当前表格仍然保持有效,以便用户可以看见出现在上面的数据。RST实例化器对话框2300包含与实例化操作有关的一些信息段。
第一,将服从要创建的RSTI的RST的名称显示在标记框2302中。
第二,在文本框2311中示出在RSTI创建时要出现的RE个数。这个数字采取等于如在服从要创建的RSTI的RST的定义中指定的那样的最小RE个数的默认值。如果电子表格用户想要用另一个RE个数创建RSTI,那么,他/她不得不用定位设备105点击旋钮2303的上侧或下侧,以增加或减小RE的个数。这个RE个数在由如在RST的定义内指定的那样的最小RE个数和最大RE个数(“Name”字段2222与显示在标记框2302中的名称匹配的RSTT表2220的记录2221内的字段“Min Element#”2225和“Max Element#”2226)界定的范围内变化,并且,在可能的更新之后,显示在文本框2311中。第三,按钮“Cancel”2308或关闭窗口按钮2301允许电子表格用户关闭RST实例化器对话框2300而不采取进一步行动。通过用定位设备105点击这两个按钮2301和2308之一,RST实例化器对话框2300被关闭和RST实例化操作被中止。
第四,当首先被使能,其次被电子表格用户用定位设备105点击时,按钮“Create Instance”2310成为启动RST实例化操作的触发器。当可以进行实例化操作时,使能这个按钮“Create Instance”2310(意味着该方法认可定位设备105在这个按钮“Create Instance”2310上的点击事件)。这个RST实例化是否可以取决于不同因素:电子表格的当前表格内当前所选单元格的位置、要创建的RSTI的大小、属于与当前所选单元格相同的表格的任何现有STI的存在。是否可以创建具有在文本框2303中指定的大小、服从其名称由标记框2302指定的RST、左上角位于当前所选单元格上的新RSTI通过作为RST实例化器对话框2300的一部分、取值“YES”或“NO”的几个标记框反映出来:反映新RSTI是否太宽的标记框2304、反映新RSTI是否太高的标记框2305、反映在包括当前所选单元格的表格上是否已经定义了任何现有STI的标记框2306、和反映新RSTI的创建是否可能导致出现在一个或几个电子表格单元格中的任何现有数据丧失的标记框2307。一旦标记框2304、标记框2305、或标记框2306取值“YES”,那么,就认为不可以创建RSTI,从而禁止“Create Instance”按钮2310。如果在这三个标记框中显示值“NO”,那么,可以进行实例化操作,从而使能“Create Instance”按钮2310。当电子表格用户用定位设备105点击时,进行实例化操作,然后,关闭RST实例化器对话框2300。第五,当首先被使能,其次被电子表格用户用定位设备105点击时,按钮”Create Instance in a new sheet”2390成为启动RST实例化操作的可替代触发器,但是,在作为这个实例化操作的一部分创建的表格中。在本发明的优选实施例中,在包括当前所选单元格的表格之后创建新表格。可以改用任何其它表格位置,这不偏离本发明的精神。当可以在新表格中进行实例化操作时,使能这个按钮“CreateInstance in a new sheet”2309(意味着该方法认可定位设备105在这个按钮“Create Instance in a new sheet”2309上的点击事件)。这个RST实例化是否可以取决于不同因素要创建的RSTI的大小。是否可以在新表格中创建具有在文本框2303中指定的大小、服从其名称由标记框2302指定的新RSTI通过作为RST实例化器对话框2300的一部分、取值“YES”或“NO”的几个标记框反映出来:反映新RSTI是否太宽的标记框2304、和反映新RSTI是否太高的标记框2305。一旦标记框2304、或标记框2305取值“YES”,那么,就认为不可以在新表格中创建RSTI,从而禁止“Create Instance in a new sheet”按钮2309。如果在这两个标记框中显示值“NO”,那么,可以在新表格中进行实例化操作,从而使能“Create Instance in a new sheet”按钮2310。当电子表格用户用定位设备105点击时,进行实例化操作,然后,关闭RST实例化器对话框2300。
●2.第二操作:将新元素引入定义的STI中
第二操作发生在电子表格用户根据这里未详述的他或她自己的准则,将新元素引入定义的STI中的时候。Aureglia等人在发明名称为“在电子表格中从一个可缩放模式实例到另一个可缩放模式实例输出-输入输入单元格的内容的系统和方法(System and method in an electronicspreadsheet for exporting-importing the content of input cells from ascalable template instance to another)”的国际专利申请PCT/EP 02/09483(IBM参考文献FR9 2001 0029)中描述了相应方案。
●3.第3操作:将新元素引入定义的RSTI中
第3操作发生在电子表格用户根据这里未详述的他或她自己的准则,将新元素引入定义的RSTI中的时候。在本发明的优选实施例中,这个操作包括如下步骤:
●a.电子表格用户首先利用传统手段,譬如,定位设备105或键盘104(但不限于这些),选出他/她选择的单元格范围。
●b.RSTI插入管理器:然后,电子表格用户借助于适合用在电子表格环境中的传统手段,譬如,专用按钮、键盘输入快捷键、菜单或子菜单项(但不限于这些),调用称为“RSTI插入管理器”的原始专用命令,“RSTI插入管理器”丰富了在电子表格内插入单元格或行的传统手段。在本发明的优选实施例中,利用与适合用在传统电子表格中、将单元格范围插入表格内的那些相同的一系列手段,譬如,用定位设备105点击“Range”菜单项的“Insert”子菜单项,或击打键盘104上的“Ctri+”键(但不限于这些),调用“RSTI插入管理器”命令。当调用该命令时,首先进行测试,以确定当前所选单元格是否属于包括现有RSTI的表格。
如果情况不是这样,那么,该命令将控制传递给“STI插入管理器”命令,以便关心可能受插入操作影响的任何STI的存在。
如果情况是这样,那么,进行第2次测试,以确定在出现在当前表格上的RSTI内是否包括当前所选单元格。
如果情况不是这样,那么,在禁止破坏出现在当前表格上的RSTI的任何插入模式之后,调用适合用在电子表格环境中的传统插入过程。如果当前所选单元格属于出现在当前表格上的RSTI占据的行(相应地,列),那么,禁止行(相应地,列)插入模式。
如果情况是这样,那么,不同状况将导致“RSTI插入管理器”命令的不同行为。在下文中,出现在当前表格上的RSTI被称为当前RSTI或简称为cRSTI。并且,如果当前所选单元格还属于STI,那么,这个STI被称为当前STI或简称为cSTI。
第一,如果当前所选单元格不包括在cRSTI的主体部分内,或者,如果cRSTI已经达到最大RE个数,并且,如果当前所选单元格不属于STI的主体部分,那么,如果进行插入操作,它将破坏cRSTI。其结果是,通过指定电子表格用户想要中止插入操作还是继续进行的传统手段提醒他/她。在第一种情况中,随着插入操作被中止,什么也没有发生。在第二种情况中,不再将cRSTI声明成RSTI,然后,该命令将控制传递给“STI插入管理器”命令,以便关心可能受插入操作影响的任何STI的存在。
第二,如果当前所选单元格不包括在cRSTI的主体部分内,或者,如果cRSTI已经达到最大RE个数,并且,如果当前所选单元格属于STI的主体部分,那么,插入操作在于在保护cRSTI服从的RST的结构的同时,将与当前所选单元格范围的行数一样多的新元素插入cSTI中。如果包含cSTI的容器范围包括比要引入cSTI中的新元素的个数多的自由行,那么,不接触包含cSTI的容器范围地进行cSTI内的元素插入。如果包含cSTI的容器范围包括比要引入cSTI中的新元素的个数少的自由行,那么,首先通过引入新行扩展这个容器范围,以及占据相同容器行的其它容器范围,以便cSTI中的所得自由行数允许以后将新元素引入cRST中,而不会破坏cRSTI服从的RST的结构。在这两种情况中,cRSTI接受新元素,而cRSTI内的RE个数保持不变。
第三,如果当前所选单元格包括在cRSTI的主体部分内,和如果cRSTI还没有达到最大RE个数,并且,如果当前所选单元格不属于STI的主体部分,那么,插入操作在于将新RE引入cRSTI内。根据cRSTI服从的RST的结构,这种新RE的引入导致每个属于RE定义的ST引入一个STI。这些STI的每一个包括在属于首先作为cRSTI的一部分创建的容器行的容器范围内。
第四,如果当前所选单元格包括在cRSTI的主体部分内,和如果cRSTI还没有达到最大RE个数,并且,如果当前所选单元格属于STI的主体部分,那么,插入操作可以遵从两种不同模式。第一种可能相当于上文所述的第二种情况,在保护cRSTI服从的RST的结构的同时,将与当前所选单元格范围的行数一样多的新元素插入cSTI中。第二种可能相当于上文所述的第三种情况,将新RE插入cRSTI内。为了区分这两种情况,通过指定电子表格用户想要遵从的插入模式的传统手段提醒他/她。于是,一旦电子表格用户已经指定了他/她的选择,就像上述那样,通过将与当前所选单元格范围的行数一样多的新元素插入cSTI中,或通过将新RE插入cRSTI内,进行插入操作。
现在参照图18A,可以根据cRSTI2001内当前所选单元格的位置例示上文所述的四种情况。如果当前所选单元格对应于单元格范围2018或2023,那么,提醒电子表格用户,以便指定他/她想要将新元素插入STI2034或2033内还是将新RE插在容器行2010或20008的下面。如果当前所选单元格对应于单元格范围2022或2020,那么,插入操作将导致在容器行2010或20008的下面创建新RE。如果当前所选单元格对应于单元格范围2021、2025或2019,那么,插入操作将导致在STI2031、2013或2032内创建新元素。如果当前所选单元格对应于单元格范围2024,那么,提醒电子表格用户,以便指定他/她想要将中止插入操作,还是以破坏cRSTI的递归性质为代价继续进行插入操作。
E.方法
E1.RST管理器方法
用在本发明优选实施例中的管理EF、MEF、EP、MEP、ST、RE和RST的方法总结在图8的流程图800中。可以将这种方法看作RST管理器命令的处理。
●在步骤801中,该方法处在它的默认状态下,等待启动该进程的事件。
●在步骤802中,作为用户动作的结果,检测RST管理器命令。这个动作可以是,例如:
●键盘104上的特定键组合;
●定位设备105在特定按钮上的点击;或
●本文未作进一步规定的任何其它类似手段。
●在步骤803中,初始化一些局部变量:
●局部变量RSTM_select被设置成值0(零);
●局部变量RSTM_new被设置成值“NONE”;
●局部变量RSTM_range被设置成值“NO”;
●局部变量RSTM_index被设置成值1(一);和
●局部变量RSTM_child被设置成值“NO”。
●在步骤804中,分析五个表EFT700、EPT710、STT720、RET2210和RSTT2220,以导出表RSTMT2230。对于在这五个表之一中找到
的每个相应记录701、711、721、2211、或2221,在RSTMT表2230内创建新记录2231。
现在参照图7A、7B、7C、20A、20B和20C,这个构造通过如下步骤来完成:将定义在记录701(“Name”字段702、“Last Change Date”字段703、“Description Ptr”字段704、“Row#”字段705、“Column#”字段706和“Type”字段707)、记录711(“Name”字段712、“Last Change Date”字段713、“Description Ptr”字段714、“Row#”字段715、“Column#”字段716和“Type”字段717)、记录721(“Name”字段722、“Last ChangeDate”字段723、“Description Ptr”字段724、“Min Element#”字段725、“Max Element#”字段726和“Type”字段727)、记录2211(“Name”字段2212、“Last Change Date”字段2213、“Description Ptr”字段2214、“Row#”字段2215、“Column#”字段2216和“Type”字段2217)、或记录2221(“Name”字段2222、“Last Change Date”字段2223、“Description Ptr”字段2224、“Min Element#”字段2225、“Max Element#”字段2226和“Type”字段2227)中的所有字段依次复制到记录2231(“Name”字段2232、“Last Change Date”字段2233、“Description Ptr”字段2234、“InfoField 1”字段2235、“Info Field 2”字段2236和“Type”字段2237)的相应字段,然后,如果已经从记录701、711、721、2211、或2221分别复制到记录2231,在Type”字段2237中将“SELECTED”属性2242初始化成“NO”,和将“NATURE”字段2241初始化成值“FORMAT”、“PROFILE”、“TEMPLATE”、“RECELEMENT”、或“RECTEMPLATE”,然后,用对于每个新记录都递增的和从值1(一)开始的计数值初始化最后字段“Index”2238。
●在步骤805中,在显示设备106上显示RST管理器对话框200。
●出现在列表框213顶部的“Name”信息对应于RSTMT表2230中“Index”字段2238等于局部变量RSTM_index的记录2231的“Name”字段2232。这个列表框213内的下面“Name”信息对应于RSTMT表2230的后继记录2231的“Name”字段2232。
●出现在列表框214顶部的“Type”信息是从RSTMT表2230中“Index”字段2238等于局部变量RSTM_index的记录2231的“Type”字段2237(属性“NATURE”2241和“META”2239)中导出的。这个列表框214内的下面“Type”信息对应于RSTMT表2230的后继记录2231的“Type”字段2237(属性“NATURE”2241和“META”2239)。
●出现在列表框202顶部的“Modified”信息对应于RSTMT表2230中“Index”字段2238等于局部变量RSTM_index的记录2231的“Last Change Date”字段2233。这个列表框202内的下面“Modified”信息对应于RSTMT表2230的后继记录2231的“Last Change Date”字段2233。
●如果RSTMT表2230中“Index”字段2238等于局部变量RSTM_index的记录2231的“Type”字段2237具有等于“YES”的“SELECTED”属性2242,在复选框212上打上复选标记。列表框213左侧的下面复选框也是从RSTMT表2230的后继记录2231的“Type”字段2237(“SELECTED”属性2242)中导出的。
●当且仅当RSTM_new等于“FORMAT”,选项按钮“Format”217显示黑点。当且仅当RSTM_new等于“PROFILE”,选项按钮“Profile”209显示黑点。当且仅当RSTM_new等于“TEMPLATE”,选项按钮“Template”216显示黑点。当且仅当RSTM_new等于“RECELEMENT”,选项按钮“RE”218显示黑点。当且仅当RSTM_new等于“RECTEMPLATE”,选项按钮“RecursiveTemplate”219显示黑点。
●当且仅当RSTM_range等于“YES”,复选框“From currentselection”208显示复选标记。
●当且仅当RSTM_child等于“YES”,复选框“Including child objects(for Export)”220显示复选标记。
●在步骤806中,该方法等待RST管理器对话框200上的任何用户动作。这样的用户动作通常来自用定位设备105的点击,但也可以采取其它类似形式,譬如,键盘104上的特定键组合(但不限于此),或本文未作进一步规定的任何其它类似手段。
●在步骤807中,检测RST管理器对话框200上的用户动作。
●如果用户动作是点击按钮“Delete”207,那么,将控制交给步骤808;
●如果用户动作是点击按钮“Import”205,那么,将控制交给步骤810;
●如果用户动作是点击按钮“Done”201或关闭窗口按钮201,那么,将控制交给步骤834;
●如果用户动作是点击按钮“Export”206,那么,将控制交给步骤811;
●如果用户动作是点击滚动条203,向上方向或向下方向,那么,将控制交给步骤814;
●如果用户动作是点击选项按钮“Format”217、“Profile”209、“Template”216、“RE”218、或“Recursive Template”219,那么,将控制交给步骤815;
●如果用户动作是点击复选框“From current selection”209,那么,将控制交给步骤816;
●如果用户动作是点击复选框“Including child objects(forExport)”220,那么,将控制交给步骤841;
●如果用户动作是点击像复选框212那样的顶部复选框,那么,将控制交给步骤817;
●如果用户动作是点击按钮“Instanciate”204,那么,将控制交给步骤830;
●如果用户动作是点击按钮“Edit”211,那么,将控制交给步骤824;和
●如果用户动作是点击按钮“Create New”210,那么,将控制交给步骤818。
●在步骤808中,对“Type”字段2237具有子字段“REFERENCEDOBJECT”(RO)2240d等于“YES”或子字段“INSTANCE REFERENCE”(IR)2240c大于1(一)的“SELECTED”属性2242的RSTMT表2230的记录2231的每一个进行测试(这个测试确定是否存在一些对象引用所选对象之一,或是否存在一些对象服从所选对象之一)。
●如果情况是这样,那么,将控制交给步骤835(意味着以前选择的RSTMT表2230的至少一个记录被ST、STI、RE、RST或RSTI引用);
●否则,将控制交给步骤809。
●在步骤809中,如果相应各自“Name”字段702、712、722、2212、和2222与“Type”字段2237具有等于像来自步骤817那样的“YES”的“SELECTED”属性2242的RSTMT表2230的记录2231的“Name”字段匹配,从EFT表700、EPT表710、STT表720、RET表2210、和RSTT表2220中除去每个各自记录701、711、721、2211、和2221。然后,将局部变量RSTM_select重置成值0(零)。然后,将控制交给步骤804,以便重建RSTMT表2230。
●在步骤810中,发出RST Import管理器命令,然后,将控制交给步骤834。
●在步骤811中,进行测试以确定局部变量RSTM_select是否等于0(零)。
●如果情况是这样,那么,将控制交给步骤813;
●否则,将控制交给步骤812。
●在步骤812中,发出RST Export管理器命令,然后,将控制交给步骤834。
●在步骤813中,发出警告消息通知,以便通知用户在点击“Export”按钮206之前,必须选择至少一个对象。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在警告消息弹出窗口内的“OK”按钮,或不偏离本发明精神的任何其它类似手段确认了这个通知消息,将控制交给步骤805。
●在步骤814中,根据定位设备105在滚动条203上指定的方向(向上或向下),和只要其值保持正的和小于等于在RSTMT表2230内定义的记录2231的个数,将局部变量RSTM_index加1(一)或减1(一)。然后,将控制交给步骤805。
●在步骤815中,更新局部变量RSTM_new,以反映用户用定位设备105击中选项按钮。
●如果用户点击了“Format”选项按钮217,那么,局部变量RSTM_new取值“FORMAT”。
●如果用户点击了“Profile”选项按钮209,那么,局部变量RSTM_new取值“PROFILE”。
●如果用户点击了“Template”选项按钮216,那么,局部变量RSTM_new取值“TEMPLATE”。
●如果用户点击了“RE”选项按钮218,那么,局部变量RSTM_new取值“RECELEMENT”。
●如果用户点击了“Recursive Template”选项按钮219,那么,局部变量RSTM_new取值“RECTEMPLATE”。
然后,将控制交给步骤805。
●在步骤816中,更新局部变量RSTM_range,以便它的值在“YES”和“NO”之间切换。另外,如果在复选框206中以前不存在或存在复选标记,那么,分别将复选标记加入这同一个复选框206中或从这同一个复选框206中除去复选标记。然后。将控制交给步骤805。
●在步骤817中,该方法更新RSTMT表2230内,发现“Name”字段2232等于位于正好在用户刚刚点击的复选框右侧的列表框213内的字符串的记录2231的“Type”字段2237的值。
如果这个“Type”字段2237的旧值具有等于“YES”的“SELECTED”属性2242,那么,值更新在于使这个“SELECTED”属性2242转变成“NO”;相反,如果“SELECTED”属性2242的旧值等于“NO”,那么,值更新在于使这个“SELECTED”属性2242转变成“YES”。
在第一种情况中,将局部变量RSTM_select减1,和在第二种情况中,将局部变量RSTM_select加1。
并且,在第一种情况中,从用户刚刚点击过的复选框中除去以前存在于这个复选框中的复选标记,和在第二种情况中,在用户刚刚点击过的复选框上显示复选标记。然后,将控制交给步骤805。
●在步骤818中,进行测试以确定局部变量RSTM_new是否等于“NONE”。如果情况是这样,那么,将控制交给步骤819;否则,将控制交给步骤820。
●在步骤819中,发出警告消息通知,以便通知用户在点击“Create_New”按钮210之前,必须选择至少一个对象(“Format”选项按钮217、“Profile”选项按钮209、“Template”选项按钮216、“RE”选项按钮218、或“Recursive Template”选项按钮219)。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在警告消息弹出窗口内的“OK”按钮,或不偏离本发明精神的任何其它类似手段确认了这个通知消息,将控制交给步骤805。
●在步骤820中,进行测试以确定局部变量RSTM_new所取的值。
●如果发现等于“FORMAT”那么,将控制交给步骤821;
●如果发现等于“PROFILE”,那么,将控制交给步骤822;
●如果发现等于“TEMPLATE”,那么,将控制交给步骤823。
●如果发现等于“RECELEMENT”,那么,将控制交给步骤836。
●如果发现等于“RECTEMPLATE”,那么,将控制交给步骤837。
●在步骤821中,发出EF编辑器命令,以及传递两个参数(“NEW”;RSTM_range),然后,将控制交给步骤834。
●在步骤822中,发出EP编辑器命令,以及传递两个参数(“NEW”;RSTM_range),然后,将控制交给步骤834。
●在步骤823中,发出ST编辑器命令,以及传递一个参数(“NEW”),然后,将控制交给步骤834。
●在步骤824中,进行测试以确定局部变量RSTM_select是否等于1(一)。如果情况是这样,那么,将控制交给步骤825;否则,将控制交给步骤829。
●在步骤825中,进行测试以确定如“Type”字段2237指定的那样的所选对象的性质,即,RSTMT表2230的相应记录2231的“NATURE”属性2241。
●如果发现等于“FORMAT”那么,将控制交给步骤826;
●如果发现等于“PROFILE”,那么,将控制交给步骤827;
●如果发现等于“TEMPLATE”,那么,将控制交给步骤828。
●如果发现等于“RECELEMENT”,那么,将控制交给步骤838。
●如果发现等于“RECTEMPLATE”,那么,将控制交给步骤839。
●在步骤826中,发出EP编辑器命令,以及传递一个参数,这个参数等于其“Type”字段2237具有等于“YES”的“SELECTED”属性2242的RSTMT表2230的唯一记录2231的“Name”字段2232,然后,将控制交给步骤834。
●在步骤827中,发出EF编辑器命令,以及传递一个参数,这个参数等于其“Type”字段2237具有等于“YES”的“SELECTED”属性2242的RSTMT表2230的唯一记录2231的“Name”字段2232,然后,将控制交给步骤834。
●在步骤828中,发出ST编辑器命令,以及传递一个参数,这个参数等于其“Type”字段2237具有等于“YES”的“SELECTED”属性2242的RSTMT表2230的唯一记录2231的“Name”字段2232,然后,将控制交给步骤834。
●在步骤829中,发出警告消息通知,以便通知用户在点击“Edit”按钮211或“Instanciate”按钮204之前,必须在ST管理器对话框内选择单个对象(借助于像212那样的复选框)。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在警告消息弹出窗口内的“OK”按钮,或不偏离本发明精神的任何其它类似手段确认了这个通知消息,将控制交给步骤805。
●在步骤830中,进行测试以确定局部变量RSTM_select是否等于1(一)。如果情况是这样,那么,将控制交给步骤831;否则,将控制交给步骤829。
●在步骤831中,进行测试以确定如“Type”字段2237指定的那样的所选对象的性质,即,RSTMT表2230的相应记录2231的“NATURE”属性2241。
●如果发现等于“TEMPLATE”,那么,将控制交给步骤832;
●如果发现等于“RECTEMPLATE”,那么,将控制交给步骤840;
●否则使得控制到步骤833。
●在步骤832中,发出ST实例化器命令,以及传递一个参数,这个参数等于其“Type”字段2237具有等于“YES”的“SELECTED”属性2242的RSTMT表2230的唯一记录2231的“Name”字段2232,然后,将控制交给步骤834。
●在步骤833中,发出警告消息通知,以便通知用户在点击“Instanciate”按钮204之前,必须在RST管理器对话框内选择单个ST对象或单个RST对象(借助于像212那样的复选框)。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在警告消息弹出窗口内的“OK”按钮,或不偏离本发明精神的任何其它类似手段确认了这个通知消息,将控制交给步骤805。
●在步骤834中,关闭RST管理器对话框200,以便它从显示设备106上消失,将控制交还给最初步骤801,以便处理任何进一步的RST管理器命令。
●在步骤835中,发出警告消息通知,以便通知用户要删除的至少一个对象被另一个对象引用。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。然后,提醒用户取消当前“Delete”操作,或继续进行“Delete”操作。这通常可以通过在显示设备106上将提醒消息显示在弹出窗口中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在提醒消息弹出窗口内的“Cancel”或“Continue”按钮,或不偏离本发明精神的任何其它类似手段作出他的选择,如果电子表格用户的决定是取消“Delete”操作,将控制交给步骤805,或者,如果电子表格用户的决定是继续进行“Delete”操作,将控制交给步骤809。
●在步骤836中,发出RE编辑器命令,以及传递一个参数(“NEW”),然后,将控制交给步骤834。
●在步骤837中,发出RST编辑器命令,以及传递一个参数(“NEW”),然后,将控制交给步骤834。
●在步骤838中,发出RE编辑器命令,以及传递一个参数,这个参数等于其“Type”字段2237具有等于“YES”的“SELECTED”属性2242的RSTMT表2230的唯一记录2231的“Name”字段2232,然后,将控制交给步骤834。
●在步骤839中,发出RST编辑器命令,以及传递一个参数,这个参数等于其“Type”字段2237具有等于“YES”的“SELECTED”属性2242的RSTMT表2230的唯一记录2231的“Name”字段2232,然后,将控制交给步骤834。
●在步骤840中,发出RST实例化器命令,以及传递一个参数,这个参数等于其“Type”字段2237具有等于“YES”的“SELECTED”属性2242的RSTMT表2230的唯一记录2231的“Name”字段2232,然后,将控制交给步骤834。
●在步骤841中,通过切换值“YES”和“NO”更新局部变量RSTM_child的值。然后,将控制交给步骤805。
E2.EF编辑器方法
用在本发明优选实施例中的创建或更新EF或MEF的方法总结在图9的流程图900中。可以将这种方法看作EF编辑器命令的处理。
●在步骤901中,该方法处在它的默认状态下,等待启动该进程的事件。
●在步骤902中,作为用户动作的结果,检测EF编辑器命令。这个动作可以是,例如:
●键盘104上的特定键组合;
●定位设备105在特定按钮上的点击;或
●本文未作进一步规定的任何其它类似手段。
●在步骤903中,检索命令的参数。它们对应于:
●第一必有参数EFE_name,可以取保留值“NEW”,或与如在RSTMT表2230内的记录2231的“Name”字段2232中找到那样的字符串名称相对应的另一个值;和
●第二可选参数EFE_range,只能取两个预定值“YES”和“NO”。当第一必有参数的值与“NEW”不同时,这个第二可选参数必须存在。将这两个参数记录成局部变量。
●在步骤904中,初始化一些局部变量:将局部变量EFE_meta设置成值“NO”,将局部变量EFE_size设置成值8(八)。
●在步骤905中,进行测试以确定局部变量EFE_name所取的值。如果发现等于“NEW”,那么,将控制交给步骤909;否则,将控制交给步骤906。
●在步骤906中,查找EFT表700,以定位发现其“Name”字段702等于局部变量EFE_name所取的值的记录701。如果找到这样的记录,那么,将控制交给步骤908;否则,将控制交给步骤907。
●在步骤907中,调用异常管理器,以处理这种“不该发生”状况。这样的操作是实现相关的,可以采取不同的形式,譬如,在显示设备106上显示错误消息弹出窗口。然后,将控制交给步骤925。
●在步骤908中,
●根据在步骤906中找到的记录701的“Type”字段707内“META”属性708的值,将局部变量EFE_meta设置成值“YES”或“NO”;
●将局部变量EFE_size设置成在在步骤906中找到的记录701的“Column#”706中找到的值;和
●将在步骤906中找到的记录701的“Description Ptr”字段704所指的存储单元复制到剪贴板上。
然后,将控制交给步骤912。
●在步骤909中,根据在本发明的优选实施例中采取“New XX”形式的名称字符串,确定新创建EF或MEF的新名称,其中,XX对应于对于以前定义和记录在在各自表格EFT700、EPT710、STT720、RET2210和RSST2220的各自记录701、711、721、2211和2221中找到的“Name”字段702、712、722、2212和2222中的所有名称,保证名称唯一性的计数。只要保证新创建名称的唯一性,可以改用任何其它类似传统手段而不偏移本发明的精神。
然后,将新名称记录在局部变量EFE_name中。然后,在主存储器102内分配存储空间,以便以后记录EF或MEF的例示单元格范围。这个分配的存储空间是与当前打开的电子表格文件相对应的存储空间的一部分。
然后,在EFT表700中创建新记录701,和按如下初始化这个新记录701:
●将“Name”字段702设置成局部变量EFE_name的值;
●将“Last Change Date”字段703设置成如中央处理器101所知的系统引用时间;
●将“Description Ptr”字段704设置成刚刚分配的存储单元;
●将“Row#”字段705设置成值1(因为在本发明的优选实施例中,在2D环境下管理ST;在3D环境下,这个字段将携带为创建的EF或MEF定义的行数);
●将“Column#”字段706设置成局部变量EFE_size的值;和
●按如下设置“Type”字段707:将属性“META”708设置成等于局部变量EFE_meta的值,和按如下初始化属性“REFERENCED”709:
●用还没有指定给任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的质数初始化OR子字段709a。各种各样的传统技术可以用于识别质数,这里不作进一步详述。
●用值1(一)初始化“FILIATION REFERENCE”(FR)子字段709b。
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段709c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段709d。其中,P集合对应于ST的集合:
如果LCM({FRi})i∈PMod OR=0,RO=“YES”;
否则,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段709e。其中,S集合对应于所选对象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR#EFE_name∈S,则SC=“YES”;
否则,SC=“NO”。
然后,将控制交给步骤910。
●在步骤910中,进行测试以确定局部变量EFE_range所取的值。如果发现等于“YES”,那么,将控制交给步骤911;否则,将控制交给步骤912。
●在步骤911中,将当前所选的单元格范围复制到剪贴板和将局部变量EFE_size设置成等于所选范围的列数。
●在步骤912中,使“Editor Space”表格315成为当前表格,和在这个空白表格上,在固定单元格地址314(如图3所示,在本发明的优选实施例中,地址B2)上粘贴剪贴板的内容,以便用户可以在显示设备106上看见EF或MEF的示例。
●在步骤913中,在显示设备106上显示EF编辑器对话框301。
●用局部变量EFE_name的值初始化标记框304。
●如果发现局部变量EFE_mata等于“NO”(相应地,“YES”),将黑点填入顶部(相应地,底部)选项按钮310中。
●将局部变量EFE_size的值填入文本框306。
●如果发现局部变量EFE_size等于当前记录701的“Column#”字段706,或如果发现这个记录701的“Type”字段707内的属性“REFERENCED”709拥有等于“NO”的子字段“REFERENCEDOBJECT”709d(RO),使能按钮“Save”312和“Save&Refresh”308,以便将来用定位设备105对这两个按钮“Save”312和“Save&Refresh”308的任何点击都被识别为一个有效事件。
●否则(未发现局部变量EFE_size等于当前记录701的“Column#”字段706,或发现这同一个记录701的“Type”字段707内的属性“REFERENCED”709拥有等于“YES”的子字段“REFERENCEDOBJECT”709d(RO),禁止按钮“Save”312和“Save&Refresh”308,以便将来用定位设备105对这两个按钮“Save”312和“Save&Refresh”308的任何点击都不被识别为一个有效事件。
●在步骤914中,该方法等待EF编辑器对话框301上的任何用户动作。这样的用户动作通常来自用定位设备105的点击,但也可以采取其它类似形式,譬如,键盘104上的特定键组合(但不限于此),或本文未作进一步规定的任何其它类似手段。
●在步骤915中,检测EF编辑器对话框301上的用户动作。
●如果用户动作是点击按钮“Save&Refresh”308,那么,将控制交给步骤916;
●如果用户动作是点击按钮“Save”312,那么,将控制交给步骤917;
●如果用户动作是点击按钮“Save as”311,那么,将控制交给步骤918;
●如果用户动作是点击按钮“Clear”309,那么,将控制交给步骤919;
●如果用户动作是点击旋钮307,那么,将控制交给步骤920;
●如果用户动作是点击两个选项按钮310之一,那么,将控制交给步骤921;
●如果用户动作是点击按钮“Done”303或关闭窗口按钮302,那么,将控制交给步骤925。
●在步骤916中,通过刷新“Name”字段702等于局部变量EFE_name的记录701,更新EFT表700和将它保存成电子表格文件的一部分。为了这个目的,
●将“Last Change Date”字段703设置成如中央处理器101所知的系统引用时间;
●将“Column#”字段706设置成局部变量EFE_size的值;和
●按如下设置“Type”字段707:将属性“META”708设置成等于局部变量EFE_meta的值。
另外,将在“Editor Space”表格315上例示EF或MEF的当前定义的单元格范围314复制到“Description Ptr”字段704所指的存储单元。然后,将控制交给步骤922。
●在步骤917中,通过刷新“Name”字段702等于局部变量EFE_name的记录701,更新EFT表700和将它保存成电子表格文件的一部分。为了这个目的,
●将“Last Change Date”字段703设置成如中央处理器101所知的系统引用时间;
●将“Column#”字段706设置成局部变量EFE_size的值;和
●按如下设置“Type”字段707:将属性“META”708设置成等于局部变量EFE_meta的值。
另外,将在“Editor Space”表格315上例示EF或MEF的当前定义的单元格范围314复制到“Description Ptr”字段704所指的存储单元。然后,将控制交给步骤913。
●在步骤918中,对在文本框305中找到的值进行测试,以确定它是否对应于有效新名称。相应准则是实现相关的,只要新推荐名称相对于记录在“Name”字段702、712、722、2212和2222中的所有已定义名称是唯一字符串,可以采取不同形式而不偏离本发明的精神。如果有效性和唯一性都得到证明,那么,将控制交给步骤923;否则,将控制交给步骤924。
●在步骤919中,将当前在电子表格环境下定义的默认属性应用于“EditorSpace”表格315,以便显示的EF或MEF示例接受这些相同的默认属性。然后,将控制交给步骤913。
●在步骤920中,根据定位设备105在旋钮307上指定的方向(向上或向下),和只要其值保持正的和小于等于在本发明的优选实施例中设置成等于254的上限,将局部变量EFE_size加1(一)或减1(一)。然后,将控制交给步骤913。
●在步骤921中,更新局部变量EFE_meta,以便如果已经点击了底部(相应地,顶部)选项按钮310,使它的值变成“YES”(相应地,“NO”)。然后,将控制交给步骤913。
●在步骤922中,发出ST Refresh管理器命令,以及如下参数:EFE_name、“FORMAT”,然后,将控制交给步骤913。
●在步骤923中,在主存储器102内分配存储空间,以便以后记录EF或MEF的例示单元格范围。这个分配的存储空间是与当前打开的电子表格文件相对应的存储空间的一部分。然后,在保存为电子表格文件的一部分的EFT表700中创建新记录701,和按如下初始化这个新记录701:
●将“Name”字段702设置成在文本框305中找到和在步骤918中得到核实的值;然后,这个字段702变成EFE_name局部变量的新值;
●将“Last Change Date”字段703设置成如中央处理器101所知的系统引用时间;
●将“Description Ptr”字段704设置成刚刚分配的存储单元;
●将“Row#”字段705设置成值1(因为在本发明的优选实施例中,在2D环境下管理ST;在3D环境下,这个字段将携带为创建的EF或MEF定义的行数);
●将“Column#”字段706设置成局部变量EFE_size的值;和
●按如下设置“Type”字段707:将属性“META”708设置成等于局部变量EFE_meta的值,和按如下初始化属性“REFERENCED”709:
●用还没有指定给任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的质数初始化OR子字段709a。各种各样的传统技术可以用于识别质数,这里不作进一步详述。
●用值1(一)初始化“FILIATION REFERENCE”(FR)子字段709b。
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段709c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段709d。其中,P集合对应于ST的集合:
如果LCM({FRi})i∈PMod OR=0,RO=“YES”;
否则,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段709e。其中,S集合对应于所选对象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR#EFE_name∈S,
SC=“YES”;
否则,SC=“NO”。
然后,将控制交给步骤913。
●在步骤924中,发出警告消息通知,以便通知用户在点击“Save as”按钮311之前,必须在文本框305中指定有效唯一的名称。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在警告消息弹出窗口内的“OK”按钮,或不偏离本发明精神的任何其它类似手段确认了这个通知消息,将控制交给步骤913。
●在步骤925中,关闭EF编辑器对话框301,以便它从显示设备106上消失,然后,从显示的窗口中除去“Editor Space”表格315,以便用在EF编辑器调用时出现的原始表格取代它。最后,将控制交还给最初步骤901,以便处理任何进一步的EF编辑器命令。
E3.EP编辑器方法
用在本发明优选实施例中的创建或更新EP或MEP的方法总结在图10的流程图1000中。可以将这种方法看作EP编辑器命令的处理。
●在步骤1001中,该方法处在它的默认状态下,等待启动该进程的事件。
●在步骤1002中,作为用户动作的结果,检测EP编辑器命令。这个动作可以是,例如:
●键盘104上的特定键组合;
●定位设备105在特定按钮上的点击;或
●本文未作进一步规定的任何其它类似手段。
●在步骤1003中,检索命令的参数。它们对应于:
●第一必有参数EPE_name,可以取保留值“NEW”,或与如在RSTMT表2230内的记录2231的“Name”字段2232中找到那样的字符串名称相对应的另一个值;和
●第二可选参数EPE_range,只能取两个预定值“YES”和“NO”。当第一必有参数的值与“NEW”不同时,这个第二可选参数必须存在。将这两个参数记录成局部变量。
●在步骤1004中,初始化一些局部变量:将局部变量EFE_meta设置成值“NO”,将局部变量EFE_size设置成值8(八)。
●在步骤1005中,进行测试以确定局部变量EFE_name所取的值。如果发现等于“NEW”,那么,将控制交给步骤1009;否则,将控制交给步骤1006。
●在步骤1006中,查找EPT表710,以定位发现其“Name”字段712等于局部变量EPE_name所取的值的记录711。如果找到这样的记录,那么,将控制交给步骤1008;否则,将控制交给步骤1007。
●在步骤1007中,调用异常管理器,以处理这种“不该发生”状况。这样的操作是实现相关的,可以采取不同的形式,譬如,在显示设备106上显示错误消息弹出窗口。然后,将控制交给步骤1025。
●在步骤1008中,
●根据在步骤1006中找到的记录711的“Type”字段717内“META”属性718的值,将局部变量EFE_meta设置成值“YES”或“NO”;
●将局部变量EPE_size设置成在在步骤1006中找到的记录711的“Column#”716中找到的值;和
●将在步骤1006中找到的记录711的“Description Ptr”字段714所指的存储单元复制到剪贴板上和局部变量EPE_Desc内。
然后,将控制交给步骤1012。
●在步骤1009中,根据在本发明的优选实施例中采取“New XX”形式的名称字符串,确定新创建EP或MPF的新名称,其中,XX对应于对于以前定义和记录在在各自表格EFT700、EPT710、STT720、RET2210和RSST2220的各自记录701、711、721、2211和2221中找到的“Name”字段702、712、722、2212和2222中的所有名称,保证名称唯一性的计数。只要保证新创建名称的唯一性,可以改用任何其它类似传统手段而不偏移本发明的精神。然后,将新名称记录在局部变量EFE_name中。然后,在主存储器102内分配存储空间,以便以后记录EP或MEP的例示单元格范围。这个分配的存储空间是与当前打开的电子表格文件相对应的存储空间的一部分。然后,在EPT表710中创建新记录711,和按如下初始化这个新记录711:
●将“Name”字段712设置成局部变量EPE_name的值;
●将“Last Change Date”字段713设置成如中央处理器101所知的系统引用时间;
●将“Description Ptr”字段714设置成刚刚分配的存储单元;
●将“Row#”字段715设置成值1(因为在本发明的优选实施例中,在2D环境下管理ST;在3D环境下,这个字段将携带为创建的EP或MEP定义的行数);
●将“Column#”字段716设置成局部变量EPE_size的值;和
●按如下设置“Type”字段717:将属性“META”718设置成等于局部变量EPE_meta的值,和按如下初始化属性“REFERENCED”719:
●用还没有指定给任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的质数初始化OR子字段719a。各种各样的传统技术可以用于识别质数,这里不作进一步详述。
●用值1(一)初始化“FILIATION REFERENCE”(FR)子字段719b。
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段719c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段719d。其中,P集合对应于ST的集合:
如果LCM({FRi})i∈PMod OR=0,RO=“YES”;
否则,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段719e。其中,S集合对应于所选对象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR#EPE_name∈S,SC=“YES”;
否则,SC=“NO”。
然后,将控制交给步骤1010。
●在步骤1010中,进行测试以确定局部变量EPE_range所取的值。如果发现等于“YES”,那么,将控制交给步骤1011;否则,将控制交给步骤1012。
●在步骤1011中,将当前所选的单元格范围复制到剪贴板和将局部变量EPE_size设置成等于所选范围的列数。
●在步骤1012中,使“Editor Space”表格315成为当前表格,和在这个空白表格上,在固定单元格地址314(如图3所示,在本发明的优选实施例中,地址B2)上粘贴剪贴板的内容,以便用户可以在显示设备106上看见EF或MEF的示例。
●在步骤1013中,在显示设备106上显示EP编辑器对话框401。
●用局部变量EPE_name的值初始化标记框404。如果发现局部变量EPE_mata等于“NO”(相应地,“YES”),将黑点填入顶部(相应地,底部)选项按钮410中。
●将局部变量EPE_size的值填入文本框406。
●如果发现局部变量EPE_size等于当前记录711的“Column#”字段716,或如果发现这个记录711的“Type”字段717内的属性“REFERENCED”719拥有等于“NO”的子字段“REFERENCEDOBJECT”719d(RO),使能按钮“Save”412和“Save&Refresh”408,以便将来用定位设备105对这两个按钮“Save”412和“Save&Refresh”408的任何点击都被识别为一个有效事件。
●否则(未发现局部变量EPE_size等于当前记录711的“Column#”字段716,或发现这同一个记录711的“Type”字段717内的属性“REFERENCED”719拥有等于“YES”的子字段“REFERENCEDOBJECT”719d(RO)),禁用按钮“Save”412和“Save&Refresh”408,以便将来用定位设备105对这两个按钮“Save”412和“Save&Refresh”408的任何点击都不被识别为一个事件。
●在步骤1014中,该方法等待EP编辑器对话框401上的任何用户动作。这样的用户动作通常来自用定位设备105的点击,但也可以采取其它类似形式,譬如,键盘104上的特定键组合(但不限于此),或本文未作进一步规定的任何其它类似手段。
●在步骤1015中,检测EP编辑器对话框301上的用户动作。
●如果用户动作是点击按钮“Save&Refresh”408,那么,将控制交给步骤1016;
●如果用户动作是点击按钮“Save”412,那么,将控制交给步骤1017;
●如果用户动作是点击按钮“Save as”411,那么,将控制交给步骤1018;
●如果用户动作是点击按钮“Clear”409,那么,将控制交给步骤1019;
●如果用户动作是点击旋钮407,那么,将控制交给步骤1020;
●如果用户动作是点击两个选项按钮410之一,那么,将控制交给步骤1021;
●如果用户动作是点击按钮“Done”403或关闭窗口按钮402,那么,将控制交给步骤1025。
●在步骤1016中,通过刷新“Name”字段712等于局部变量EPE_name的记录711,更新EPT表710和将它保存成电子表格文件的一部分。为了这个目的,
●将“Last Change Date”字段713设置成如中央处理器101所知的系统引用时间;
●将“Column#”字段716设置成局部变量EPE_size的值;和
●按如下设置“Type”字段717:将属性“META”718设置成等于局部变量EPE_meta的值。
另外,将在“Editor Space”表格415上例示EP或MEP的当前定义的单元格范围414复制到“Description Ptr”字段714所指的存储单元。然后,将控制交给步骤1022。
●在步骤1017中,通过刷新“Name”字段712等于局部变量EPE_name的记录711,更新EPT表710和将它保存成电子表格文件的一部分。为了这个目的,
●将“Last Change Date”字段713设置成如中央处理器101所知的系统引用时间;
●将“Column#”字段716设置成局部变量EPE_size的值;和
●按如下设置“Type”字段717:将属性“META”718设置成等于局部变量EPE_meta的值。
另外,将在“Editor Space”表格415上例示EP或MEP的当前定义的单元格范围414复制到“Description Ptr”字段714所指的存储单元。然后,用如记录在“Description Ptr”字段714所指的存储单元中那样的当前EP或MEP描述更新局部变量EPE_desc,和将控制交给步骤1013。
●在步骤1018中,对在文本框405中找到的值进行测试,以确定这个值是否对应于有效新名称。相应准则是实现相关的,只要新推荐名称相对于记录在“Name”字段702、712、722、2212和2222中的所有已定义名称是唯一字符串,可以采取不同形式而不偏离本发明的精神。如果有效性和唯一性都得到证明,那么,将控制交给步骤1023;否则,将控制交给步骤1024。
●在步骤1019中,将当前在电子表格环境下定义的默认属性应用于“Editor Space”表格415,以便显示的EP或MEP示例接受这些相同的默认属性。然后,将控制交给步骤1013。
●在步骤1020中,根据定位设备105在旋钮407上指定的方向(向上或向下),和只要其值保持正的和小于等于在本发明的优选实施例中设置成等于254的上限,将局部变量EPE_size加1(一)或减1(一)。然后,将控制交给步骤1013。
●在步骤1021中,更新局部变量EPE_meta,以便如果已经点击了底部(相应地,顶部)选项按钮410,使它的值变成“YES”(相应地,“NO”)。然后,将控制交给步骤1013。
●在步骤1022中,发出ST Refresh管理器命令,以及如下参数:EPE_name,“PROFILE”和EPE_desc。然后,用如记录在“Description Ptr”字段714所指的存储单元中那样的当前EP或MEP描述更新局部变量EPE_desc,然后,将控制交给步骤1013。
●在步骤1023中,在主存储器102内分配存储空间,以便以后记录EP或MEP的例示单元格范围。这个分配的存储空间是与当前打开的电子表格文件相对应的存储空间的一部分。然后,在保存为电子表格文件的一部分的EPT表710中创建新记录711,和按如下初始化这个新记录711:
●将“Name”字段712设置成在文本框405中找到和在步骤1018中得到核实的值;然后,这个字段712变成EPE_name局部变量的新值;
●将“Last Change Date”字段713设置成如中央处理器101所知的系统引用时间;
●将“Description Ptr”字段714设置成刚刚分配的存储单元;
●将“Row#”字段715设置成值1(因为在本发明的优选实施例中,在2D环境下管理ST;在3D环境下,这个字段将携带为创建的EP或MEP定义的行数);
●将“Column#”字段716设置成局部变量EPE_size的值;和
●按如下设置“Type”字段717:将属性“META”718设置成等于局部变量EPE_meta的值,和按如下初始化属性“REFERENCED”719:
●用还没有指定给任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的质数初始化OR子字段719a。各种各样的传统技术可以用于识别质数,这里不作进一步详述。
●用值1(一)初始化“FILIATION REFERENCE”(FR)子字段719b。
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段719c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段719d。其中,P集合对应于ST的集合:
如果LCM({FRi})i∈PMod OR=0,RO=“YES”;
否则,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段719e。其中,S集合对应于所选对象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR#EPE name∈S,
SC=“YES”;
否则,SC=“NO”。
然后,将控制交给步骤1013。
●在步骤1024中,发出警告消息通知,以便通知用户在点击“Save as”按钮411之前,必须在文本框405中指定有效唯一的名称。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在警告消息弹出窗口内的“OK”按钮,或不偏离本发明精神的任何其它类似手段确认了这个通知消息,将控制交给步骤1013。
●在步骤1025中,关闭EP编辑器对话框401,以便它从显示设备106上消失,然后,从显示窗口中除去“Editor Space”表格415,以便用在EP编辑器调用时出现的原始表格取代它。最后,将控制交还给最初步骤1001,以便处理任何进一步的EP编辑器命令。
E4.ST编辑器方法
用在本发明优选实施例中的创建或更新ST的方法总结在图11的流程图1100中。可以将这种方法看作ST编辑器命令的处理。
●在步骤1101中,该方法处在它的默认状态下,等待启动该进程的事件。
●在步骤1102中,作为用户动作的结果,检测ST编辑器命令。这个动作可以是,例如:
●键盘104上的特定键组合;
●定位设备105在特定按钮上的点击;或
●本文未作进一步规定的任何其它类似手段。
●在步骤1103中,检索命令的参数。它对应于必有参数STE_name,该参数可以取保留值“NEW”,或与如在RSTMT表2230内的记录2231的“Name”字段2232中找到那样的字符串名称相对应的另一个值。将这个参数记录成局部变量。
●在步骤1104中,初始化一些局部变量:将局部变量STE_min设置成默认值1(一),将局部变量STE_max设置成值255。
●在步骤1105中,进行测试以确定局部变量STE_name所取的值。如果发现等于“NEW”,那么,将控制交给步骤1109;否则,将控制交给步骤1106。
●在步骤1106中,查找STT表720,以定位发现其“Name”字段722等于局部变量STE_name所取的值的记录721。如果找到这样的记录,那么,将控制交给步骤1108;否则,将控制交给步骤1107。
●在步骤1107中,调用异常管理器,以处理这种“不该发生”状况。这样的操作是实现相关的,可以采取不同的形式,譬如,在显示设备106上显示错误消息弹出窗口。然后,将控制交给步骤1128。
●在步骤1108中,
●将局部变量STE_min设置成在在步骤1106中找到的记录721的“Min Element#”字段725中找到的值;
●将局部变量STE_max设置成在在步骤1106中找到的记录721的“Max Element#”字段726中找到的值。
然后,将在步骤1106中找到的记录721的“Description Ptr”字段724所指的存储单元(其中,记录着按照如图7D所示的STDT表760的ST的描述)复制在也遵从相同STDT表760的工作缓冲区中。
然后,将这种结构用于在主存储器102内的剪贴板上构建例示复制在工作缓冲区中的ST定义的电子表格单元格范围。这种构造是通过将一系列有序单元格范围装入主存储器102内的剪贴板中实现的,这些单元格范围的每一个依次服从与从第一对761开始直到最后一对763的每对EF和EP名称相对应的EF(列765)和EP(列764)定义。然后,将控制交给步骤1110。
●在步骤1109中,根据在本发明的优选实施例中采取“New XX”形式的名称字符串,确定新创建ST的新名称,其中,XX对应于对于以前定义和记录在在各自表格EFT 700、EPT 710、STT 720、RET 2210和RSST2220的各自记录701、711、721、2211和2221中找到的“Name”字段702、712、722、2212和2222中的所有名称,保证名称唯一性的计数。只要保证新创建名称的唯一性,可以改用任何其它类似传统手段而不偏移本发明的精神。然后,将新名称记录在局部变量STE_name中。然后,在主存储器102内分配存储空间,以便以后记录新ST的例示单元格范围。这个分配的存储空间是与当前打开的电子表格文件相对应的存储空间的一部分和遵从如图7D所示的STDT表760。然后,在STT表720中创建新记录721,和按如下初始化这个新记录721:
●将“Name”字段722设置成局部变量STE_name的值;
●将“Last Change Date”字段723设置成如中央处理器101所知的系统引用时间;
●将“Description Ptr”字段724设置成刚刚分配的存储单元;
●将“Min Element#”字段725设置成局部变量STE_min的值;
●将“Max Element#”字段726设置成局部变量STE_max的值;
●按如下设置“Type”字段727:将属性“META”728设置成等于“NO”,和按如下初始化属性“REFERENCED”729:
●用还没有指定给任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的质数初始化OR子字段729a。各种各样的传统技术可以用于识别质数,这里不作进一步详述。
●根据如下公式初始化“FILIATION REFERENCE”(FR)子字段729b,其中,根据记录在“Description Ptr”字段724中的结构,F集合对应于构成新ST的EF、MEF、EP、和MEP的集合:
FR=∏i∈FORi×LCM({FRi})i∈F
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段729c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段729d。其中,P集合对应于RE和RME的集合:
如果LCM({FRi})i∈PMod OR=0,RO=“YES”;
否则,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段729e。其中,S集合对应于所选对象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR#STE_name∈S,则SC=“YES”;
否则,SC=“NO”。
然后,在主存储器102中分配工作缓冲区和用与默认EF和默认EP的一对762相对应的默认ST描述初始化工作缓冲区。然后,将这个默认ST描述用于在主存储器102内的剪贴板上构建例示新ST的电子表格单元格范围。这种构造是像在步骤1108的末端说明的那样实现的。然后,将控制交给步骤1110。
●在步骤1110中,使“Editor Space”表格515成为当前表格,和在禁止常规行插入和删除的同时,将这个表格转成写保护模式。然后,选择单元格范围514的左上单元格。然后,将与单元格范围514内的当前所选单元格所在的行相对应的EF或MEF的名称填入局部变量STE_format中。最后,将与单元格范围514内的当前所选单元格所在的行相对应的EP或MEP的名称填入局部变量STE_profile中。
●在步骤1111中,在显示设备106上显示ST编辑器对话框501。
●用局部变量STE_name的值初始化标记框504。
●将局部变量STE_min的值填入文本框506。
●将局部变量STE_max的值填入文本框507。
●将局部变量STE_format的值填入组合框511。
●将局部变量STE_profile的值填入组合框510。
然后,根据记录在存储器剪贴板中的描述更新单元格范围514:在这个空白表格上,在固定单元格地址514(如图5所示,在本发明的优选实施例中,地址B2)上粘贴剪贴板的内容,以便用户可以在显示设备106上,在窗口500内看见ST的示例。然后,进行测试以检验对单元格范围514所例示的ST定义有贡献的所有EF、EP、MEF和MEP是否拥有个数相同的字段。如果情况是这样,那么,使能两个按钮“Save”513和“Save as”512,以便将用定位设备105对这两个按钮“Save”513和“Save as”512之一的点击识别成一个有效事件。否则,禁止两个按钮“Save”513和“Save as”512,以便不将用定位设备105对这两个按钮“Save”513和“Save as”512之一的点击识别成一个有效事件。
●在步骤1112中,该方法等待ST编辑器对话框501上的任何用户动作。这样的用户动作通常来自用定位设备105的点击,但也可以采取其它类似形式,譬如,键盘104上的特定键组合(但不限于此),或本文未作进一步规定的任何其它类似手段。
●在步骤1113中,检测ST编辑器对话框501上的用户动作。
●如果用户动作是点击按钮“Save”513,那么,将控制交给步骤1116;
●如果用户动作是点击按钮“Save as”512,那么,将控制交给步骤1119;
●如果用户动作是点击按钮“Add”517,那么,将控制交给步骤1124;
●如果用户动作是点击按钮“Delete”518,那么,将控制交给步骤1125;
●如果用户动作是点击按钮“Up”519或按钮“Down”520,那么,将控制交给步骤1126;
●如果用户动作是更新组合框511,那么,将控制交给步骤1114;
●如果用户动作是更新组合框510,那么,将控制交给步骤1115;
●如果用户动作是点击旋钮507,那么,将控制交给步骤1122;
●如果用户动作是点击旋钮508,那么,将控制交给步骤1123;
●如果用户动作是点击按钮“Done”503或关闭窗口按钮502,那么,将控制交给步骤1128。
●在步骤1114中,通过用在文本框511中找到的EF或MEF取代与单元格范围514内的当前所选单元格所例示的元素或元元素相对应的前EF或MEF规定,在工作缓冲区中更新ST描述。然后,还将局部变量STE_format设置成等于在文本框511中找到的名称。然后,将控制交给步骤1111。
●在步骤1115中,通过用在文本框511中找到的EP或MEP取代与单元格范围514内的当前所选单元格所例示的元素或元元素相对应的前EP或MEP规定,在工作缓冲区中更新ST描述。然后,还将局部变量STE_profile设置成等于在文本框511中找到的名称。然后,将控制交给步骤1111。
●在步骤1116中,进行测试以检验当前编辑的ST是否已被现有RE或RME引用,是否已被实例化成STI。为了这个目的,考虑STT表720中“Name”字段722等于局部变量STE_name的记录721的“Type”字段727内的“REFERENCED”属性729。如果“REFERENCED OBJECT”(RO)子字段729d的值等于“NO”和如果“INSTANCE REFERENCE”(IR)子字段729c的值等于1(一),那么,将控制交给步骤1117;否则,将控制交给步骤1118。
●在步骤1117中,通过刷新“Name”字段722等于局部变量STE_name的记录721,更新STT表720。为了这个目的,
●将“Last Change Date”字段723设置成如中央处理器101所知的系统引用时间;
●将“Min Element#”字段725设置成局部变量STE_min的值;和
●将“Max Element#”字段726设置成局部变量STE_max的值。
●将如单元格范围514所示、如记录在工作缓冲区中那样、和遵从STDT表760的ST的当前描述复制到“Description Ptr”字段724所指的存储单元上。
●借助于其依赖于属于“Description Ptr”字段724所指的STDT表760的EF、MEF、EP和MEP的集合的定义公式,自动更新被更新成“REFERENCED”属性729的“FILIATION REFERENCE”(FR)子字段729b的“Type”字段727。
●对于在这个STDT表760的列765中找到的每个EF名称或MEF名称,由于根据其定义公式重新计算了子字段“REFERENCEDOBJECT”(RO)709d(在“REFERENCED”属性709内),在“Name”字段702与这个元素或MEF名称匹配的相应记录701内自动更新EFT表700。
●对于在这个STDT表760的列764中找到的每个EP名称或MEP名称,由于根据其定义公式重新计算了子字段“REFERENCEDOBJECT”(RO)719d(在“REFERENCED”属性719内),在“Name”字段712与这个元素或MEP名称匹配的相应记录711内自动更新EPT表710。然后,将控制交给步骤1111。
●在步骤1118中,发出警告消息通知,以便通知用户编辑的ST已被RE或RME引用或已被实例化成现有STI。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。然后,提醒用户取消当前“Save”操作或继续进行“Save”操作。这通常可以通过在显示设备106上将提醒消息显示在弹出窗口中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在提醒消息弹出窗口内的“Cancel”或“Continue”按钮,或不偏离本发明精神的任何其它类似手段作出了他的选择,如果电子表格用户的决定是取消操作,那么,将控制交给步骤1111,或者,如果电子表格用户的决定是继续进行操作,那么,将控制交给步骤1117。
●在步骤1119中,对在文本框505中找到的值进行测试,以确定它是否对应于有效新名称。相应准则是实现相关的,只要新推荐名称相对于记录在“Name”字段702、712、722、2212和2222中的所有已定义名称是唯一字符串,可以采取不同形式而不偏离本发明的精神。如果有效性和唯一性都得到证明,那么,将控制交给步骤1120;否则,将控制交给步骤1121。
●在步骤1120中,在主存储器102内分配存储空间,以便以后记录ST的描述符。这个分配的存储空间是与当前打开的电子表格文件相对应的存储空间的一部分。然后,在STT表720中创建新记录721,和按如下初始化这个新记录721:
●将“Name”字段722设置成在文本框505中找到和在步骤1119中得到核实的值;然后,这个字段722变成STE_name局部变量的新值;
●将“Last Change Date”字段723设置成如中央处理器101所知的系统引用时间;
●将“Description Ptr”字段724设置成刚刚分配的存储单元;
●将“Min Element#”字段725设置成局部变量STE_min的值;
●将“Max Element#”字段726设置成局部变量STE_max的值;
●将如单元格范围514所示、如记录在工作缓冲区中那样、和遵从STDT表760的ST的当前描述复制到“Description Ptr”字段724所指的存储单元上。
●按如下设置“Type”字段727:将属性“META”728设置成等于“NO”,和按如下初始化属性“REFERENCED”729:
●用还没有指定给任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的质数初始化OR子字段729a。各种各样的传统技术可以用于识别质数,这里不作进一步详述。
●根据如下公式初始化“FILIATION REFERENCE”(FR)子字段729b,其中,根据记录在“Description Ptr”字段724中的结构,F集合对应于构成新ST的EF、MEF、EP、和MEP的集合:
FR=∏i∈FORi×LCM({FRi})i∈F
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段729c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段729d。其中,P集合对应于RE和RME的集合:
如果LCM({FRi})i∈PMod OR=0,RO=“YES”;
否则,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段729e。其中,S集合对应于所选对象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR#STE_name∈S,
SC=“YES”;
否则,SC=“NO”。
●对于在这个STDT表760的列765中找到的每个EF名称或MEF名称,由于根据其定义公式重新计算了子字段“REFERENCEDOBJECT”(RO)709d(在“REFERENCED”属性709内),在“Name”字段702与这个元素或MEF名称匹配的相应记录701内自动更新EFT表700。
●对于在这个STDT表760的列764中找到的每个EP名称或MEP名称,由于根据其定义公式重新计算了子字段“REFERENCEDOBJECT”(RO)719d(在“REFERENCED”属性719内),在“Name”字段712与这个元素或MEP名称匹配的相应记录711内自动更新EPT表710。
然后,将控制交给步骤1111。
●在步骤1121中,发出警告消息通知,以便通知用户在点击“Save as”按钮512之前,必须在文本框505中指定有效唯一的名称。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在警告消息弹出窗口内的“OK”按钮,或不偏离本发明精神的任何其它类似手段确认了这个通知消息,将控制交给步骤1111。
●在步骤1122中,根据定位设备105在旋钮507上指定的方向(向上或向下),和只要其值保持正的和小于等于在本发明的优选实施例中设置成等于254的上限和如文本框509所示的值两者,将局部变量STE_min加1(一)或减1(一)。然后,将控制交给步骤1111。
●在步骤1123中,根据定位设备105在旋钮508上指定的方向(向上或向下),和只要其值保持正的,大于如文本框506所示的值,和小于等于在本发明的优选实施例中设置成等于254的上限,将局部变量STE_max加1(一)或减1(一)。然后,将控制交给步骤1111。
●在步骤1124中,在例示编辑的ST的单元格范围514中,在最后所选单元格以前所处的行上面插入新行。
然后,选择单元格范围514内位于新行上的最左单元格。
然后,在工作缓冲区中,通过引入像其它元元素那样,通过也分别指定给局部变量STE_format和STE_profile、默许给一对默认MEF和默认MEP的一对(MEF765,MEP764)描述的新元元素,更新ST定义。另外,将如单元格范围514所示、如记录在工作缓冲区中那样、和遵从STDT表760的ST的当前描述复制到“Description Ptr”字段724所指的存储单元上。然后,将控制交给步骤1111。
●在步骤1125中,从单元格范围514中除去包含所选单元格的行。然后,选择位于单元格范围514内代表定义在编辑的ST内的元素的行上的最左单元格。然后,通过除去由一对(MEF,MEP)描述的删除元元素,更新ST定义。另外,将如单元格范围514所示、如记录在工作缓冲区中那样、和遵从STDT表760的ST的当前描述复制到“Description Ptr”字段724所指的存储单元上。然后,将控制交给步骤1127。
●在步骤1126中,如果电子表格用户用定位设备105点击了“Up”按钮519或“Down”按钮520,并且,如果这种移动不移动远离例示ST的单元格范围514的当前单元格,分别向上或向下移动“Editor Space”表格515内的当前单元格。
●在步骤1127中,将局部变量STE format和STE_profile分别设置成等于与单元格范围514内的当前所选单元格所示的元素或元元素相对应的EF或MEF的名称和EP或MEP的名称。然后,将控制交给步骤1111。
●在步骤1128中,关闭ST编辑器对话框501,以便它从显示设备106上消失,然后,从显示窗口中除去“Editor Space”表格515,以便用在EP编辑器调用时出现的原始表格取代它。现在再次使能在显示“EditorSpace”表格515的同时禁止的所有装置。最后,将控制交还给最初步骤1101,以便处理任何进一步的ST编辑器命令。
E5.RST编辑器方法
用在本发明优选实施例中的创建或更新RST的方法总结在图12的流程图1230中。可以将这种方法看作RST编辑器命令的处理。
●在步骤1231中,该方法处在它的默认状态下,等待启动该进程的事件。
●在步骤1232中,作为用户动作的结果,检测RST编辑器命令。这个动作可以是,例如:
●键盘104上的特定键组合;
●定位设备105在特定按钮上的点击;或
●本文未作进一步规定的任何其它类似手段。
●在步骤1233中,检索命令的参数。它对应于必有参数RSTE_name,该参数可以取保留值“NEW”,或与如在RSTMT表2230内的记录2231的“Name”字段2232中找到那样的字符串名称相对应的另一个值。将这个参数记录成局部变量。
●在步骤1234中,初始化一些局部变量:将局部变量RSTE_min设置成值默认值1(一),将局部变量RSTE_max设置成值16。
●在步骤1235中,进行测试以确定局部变量RSTE_name所取的值。如果发现等于“NEW”,那么,将控制交给步骤1239;否则,将控制交给步骤1236。
●在步骤1236中,查找RSTT表2220,以定位发现其“Name”字段2222等于局部变量RSTE_name所取的值的记录2221。如果找到这样的记录,那么,将控制交给步骤1238;否则,将控制交给步骤1237。
●在步骤1237中,调用异常管理器,以处理这种“不该发生”状况。这样的操作是实现相关的,可以采取不同的形式,譬如,在显示设备106上显示错误消息弹出窗口。然后,将控制交给最初步骤1231,以便处理任何进一步的RST编辑器命令。
●在步骤1238中,
●将局部变量RSTE_min设置成在在步骤1236中找到的记录2221的“Min Element#”字段2225中找到的值;
●将局部变量RSTE_max设置成在在步骤1236中找到的记录2221的“Max Element#”字段2226中找到的值。
然后,将在步骤1236中找到的记录2221的“Description Ptr”字段2224所指的存储单元(其中,记录着按照如图20D所示的RSTDT表2250的RST的描述)复制在也遵从相同RSTDT表2250的工作缓冲区中。然后,将这种结构用于在主存储器102内的剪贴板上构建例示复制在工作缓冲区中的RST定义的电子表格单元格范围,每个单元格依次与从第一个名称2251开始直到最后一个2253的RE或RME名称相对应。
然后,将控制交给步骤1240。
●在步骤1239中,根据在本发明的优选实施例中采取“New XX”形式的名称字符串,确定新创建RST的新名称,其中,XX对应于对于以前定义和记录在在各自表格EFT700、EPT710、STT720、RET2210和RSST2220的各自记录701、711、721、2211和2221中找到的“Name”字段702、712、722、2212和2222中的所有名称,保证名称唯一性的计数。只要保证新创建名称的唯一性,可以改用任何其它类似传统手段而不偏移本发明的精神。然后,将新名称记录在局部变量RSTE_name中。然后,在主存储器102内分配存储空间,以便以后记录新RST的例示单元格范围。这个分配的存储空间是与当前打开的电子表格文件相对应的存储空间的一部分和遵从如图20D所示的RSTDT表2250。然后,在RSTT表2220中创建新记录2221,和按如下初始化这个新记录2221:
●将“Name”字段2222设置成局部变量RSTE_name的值;
●将“Last Change Date”字段2223设置成如中央处理器101所知的系统引用时间;
●将“Description Ptr”字段2224设置成刚刚分配的存储单元;
●将“Min Element#”字段2225设置成局部变量RSTE_min的值;
●将“Max Element#”字段2226设置成局部变量RSTE_max的值;
●按如下设置“Type”字段2227:将属性“META”2228设置成等于“NO”,和按如下初始化属性“REFERENCED”2229:
●用还没有指定给任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的质数初始化OR子字段2229a。各种各样的传统技术可以用于识别质数,这里不作进一步详述。
●根据如下公式初始化“FILIATION REFERENCE”(FR)子字段2229b,其中,根据记录在“Description Ptr”字段2224中的结构,F集合对应于构成新RST的RE和RME的集合:
FR=∏i∈FORi×LCM({FRi})i∈F
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段2229c。
●用值“NO”初始化“REFERENCED OBJECT”(RO)子字段2229d。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段2229e。其中,S集合对应于所选对象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR#RSTE_name∈S,
SC=“YES”;
否则,SC=“NO”。
然后,在主存储器102中分配工作缓冲区和用与默认RE2252相对应的默认RST描述初始化工作缓冲区。然后,将这个默认RST描述用于在主存储器102内的剪贴板上构建例示新RST的电子表格单元格范围。这种构造是像在步骤1238的末端说明的那样实现的。然后,将控制交给步骤1240。
●在步骤1240中,使“Editor Space”表格615成为当前表格,和在禁止常规行插入和删除的同时,将这个表格转成写保护模式。然后,选择单元格范围614的左上单元格。然后,将与单元格范围614内的当前所选单元格所在的行相对应的RE的名称填入局部变量RE_name中。
●在步骤1241中,在显示设备106上显示RST编辑器对话框601。
●用局部变量RSTE_name的值初始化标记框604。
●将局部变量RSTE_min的值填入文本框606。
●将局部变量RSTE_max的值填入文本框609。
●将局部变量RE_name的值填入组合框610。
然后,根据记录在存储器剪贴板中的描述更新单元格范围614:在这个空白表格上,在固定单元格地址614(如图6所示,在本发明的优选实施例中,地址B2)上粘贴剪贴板的内容,以便用户可以在显示设备106上,在窗口611内看见RST的示例。
然后,进行测试以检验对单元格范围614所例示的RST定义有贡献的所有RE和RME是否拥有个数相同的字段。如果情况是这样,那么,使能两个按钮“Save”613和“Save as”612,以便将用定位设备105对这两个按钮之一的点击识别成一个有效事件。否则,禁止两个按钮“Save”613和“Save as”612,以便不将用定位设备105对这两个按钮之一的点击识别成一个有效事件。
●在步骤1242中,该方法等待RST编辑器对话框601上的任何用户动作。这样的用户动作通常来自用定位设备105的点击,但也可以采取其它类似形式,譬如,键盘104上的特定键组合(但不限于此),或本文未作进一步规定的任何其它类似手段。
●在步骤1243中,检测RST编辑器对话框601上的用户动作。
●如果用户动作是点击按钮“Save”613,那么,将控制交给步骤1246;
●如果用户动作是点击按钮“Save as”612,那么,将控制交给步骤1249;
●如果用户动作是点击按钮“Add”617,那么,将控制交给步骤1254;
●如果用户动作是点击按钮“Delete”618,那么,将控制交给步骤1255;
●如果用户动作是点击按钮“Up”619或按钮“Down”616,那么,将控制交给步骤1256;
●如果用户动作是更新组合框610,那么,将控制交给步骤1244;
●如果用户动作是点击旋钮607,那么,将控制交给步骤1252;
●如果用户动作是点击旋钮608,那么,将控制交给步骤1253;
●如果用户动作是点击按钮“Done”603或关闭窗口按钮602,那么,将控制交给步骤1258。
●在步骤1244中,通过用在组合框610中找到的RE或RME取代与单元格范围614内的当前所选单元格所例示的RE或RME相对应的前RE或RME名称,在工作缓冲区中更新RST描述。然后,还将局部变量RE_name设置成等于在组合框610中找到的名称。然后,将控制交给步骤1241。
●在步骤1246中,进行测试以检验当前编辑的RST是否已被现有RSTI引用。为了这个目的,考虑RSTT表2220中“Name”字段2222等于局部变量RSTE_name的记录2221的“Type”字段2227内的“REFERENCED”属性2229的值。如果“INSTANCE REFERENCE”(IR)子字段2229c的值等于1(一),那么,将控制交给步骤1247;否则,将控制交给步骤1248。
●在步骤1247中,通过刷新“Name”字段2222等于局部变量RSTE_name的记录2221,更新RSTT表2220。为了这个目的,
●将“Last Change Date”字段2223设置成如中央处理器101所知的系统引用时间;
●将“Min Element#”字段2225设置成局部变量RSTE_min的值;
●将“Max Element#”字段2226设置成局部变量RSTE_max的值。
●将如单元格范围614所示、如记录在工作缓冲区中那样、和遵从RSTDT表2250的RST的当前描述复制到“Description Ptr”字段2224所指的存储单元上。
●借助于其依赖于属于“Description Ptr”字段2224所指的RSTDT表2250的RE和RME的集合的定义公式,自动更新被更新成“REFERENCED”属性2229的“FILIATION REFERENCE”(FR)子字段2229b的“Type”字段2227。
●对于在这个RSTDT表2250的列2254中找到的每个RE名称或RME名称,由于根据其定义公式重新计算了子字段“REFERENCED OBJECT”(RO)2219d(在“REFERENCED”属性2219内),在“Name”字段2212与这个RE或RME名称匹配的相应记录2211内自动更新RET表2210。
●在步骤1248中,发出警告消息通知,以便通知用户编辑的RST已被实例化成RSTI。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。然后,提醒用户取消当前“Save”操作或继续进行“Save”操作。这通常可以通过在显示设备106上将提醒消息显示在弹出窗口中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在提醒消息弹出窗口内的“Cancel”或“Continue”按钮,或不偏离本发明精神的任何其它类似手段作出了他的选择,如果电子表格用户的决定是取消操作,那么,将控制交给步骤1241,或者,如果电子表格用户的决定是继续进行操作,那么,将控制交给步骤1247。
●在步骤1249中,对在文本框605中找到的值进行测试,以确定它是否对应于有效新名称。相应准则是实现相关的,只要新推荐名称相对于记录在“Name”字段702、712、722、2212和2222中的所有已定义名称是唯一字符串,可以采取不同形式而不偏离本发明的精神。如果有效性和唯一性都得到证明,那么,将控制交给步骤1250;否则,将控制交给步骤1251。
●在步骤1250中,在主存储器102内分配存储空间,以便以后记录RST的描述符。这个分配的存储空间是与当前打开的电子表格文件相对应的存储空间的一部分。然后,在RSTT表2220中创建新记录2221,和按如下初始化这个新记录2221:
●将“Name”字段2222设置成在文本框605中找到和在步骤1249中得到核实的值;然后,这个字段2222变成RSTE_name局部变量的新值;
●将“Last Change Date”字段2223设置成如中央处理器101所知的系统引用时间;
●将“Description Ptr”字段2224设置成刚刚分配的存储单元;
●将“Min Element#”字段2225设置成局部变量RSTE_min的值;
●将“Max Element#”字段2226设置成局部变量RSTE_max的值;
●按如下设置“Type”字段2227:将属性“META”2228设置成等于“NO”,和按如下初始化属性“REFERENCED”2229:
●用还没有指定给任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的质数初始化OR子字段2229a。各种各样的传统技术可以用于识别质数,这里不作进一步详述。
●根据如下公式初始化“FILIATION REFERENCE”(FR)子字段2229b,其中,根据记录在“Description Ptr”字段2224中的结构,F集合对应于构成新RST的RE和RME的集合:
FR=∏i∈FORi×LCM({FRi})i∈F
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段2229c。
●用值“NO”初始化“REFERENCED OBJECT”(RO)子字段2229d。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段2229e。其中,S集合对应于所选对象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR#RSTE_name∈S,
SC=“YES”;
否则,SC=“NO”。
●将如单元格范围614所示、如记录在工作缓冲区中那样、和遵从RSTDT表2250的RST的当前描述复制到“Description Ptr”字段2224所指的存储单元上。
●对于在这个RSTDT表2250的列2254中找到的每个RE名称或RME名称,由于根据其定义公式重新计算了子字段“REFERENCEDOBJECT”(RO)2219d(在“REFERENCED”属性2219内),在“Name”字段2212与这个RE或RME名称匹配的相应记录2211内自动更新RET表2210。
●在步骤1251中,发出警告消息通知,以便通知用户在点击“Save as”按钮612之前,必须在文本框605中指定有效唯一的名称。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在警告消息弹出窗口内的“OK”按钮,或不偏离本发明精神的任何其它类似手段确认了这个通知消息,将控制交给步骤1241。
●在步骤1252中,根据定位设备105在旋钮607上指定的方向(向上或向下),和只要其值保持正的和小于等于在本发明的优选实施例中设置成等于254的上限和如文本框609所示的值两者,将局部变量RSTE_min加1(一)或减1(一)。然后,将控制交给步骤1241。
●在步骤1253中,根据定位设备105在旋钮608上指定的方向(向上或向下),和只要其值保持正的,大于如文本框606所示的值,和小于等于在本发明的优选实施例中设置成等于254的上限,将局部变量RSTE_max加1(一)或减1(一)。然后,将控制交给步骤1241。
●在步骤1254中,在例示编辑的RST的单元格范围614中,在最后所选单元格以前所处的行上面插入新行。
然后,选择单元格范围614内位于新行上的最左单元格。
然后,在工作缓冲区中,通过引入像其它元元素那样,通过也指定给局部变量RE_name的名称描述的新RME,更新RST定义。另外,将如单元格范围614所示、如记录在工作缓冲区中那样、和遵从RSTDT表2250的RST的当前描述复制到“Description Ptr”字段2224所指的存储单元上。然后,将控制交给步骤1241。
●在步骤1255中,从单元格范围614中除去包含所选单元格的行,以便选择下一个RE或元元素。然后,通过除去通过其名称识别的删除元元素,更新RST定义。另外,将如单元格范围614所示、如记录在工作缓冲区中那样、和遵从RSTDT表2250的RST的当前描述复制到“Description Ptr”字段2224所指的存储单元上。然后,将控制交给步骤1257。
●在步骤1256中,如果电子表格用户用定位设备105点击了“Up”按钮619或“Down”按钮616,并且,如果这种移动不移动远离例示RST的单元格范围614的当前单元格,分别向上或向下移动“Editor Space”表格615内的当前单元格。
●在步骤1257中,将局部变量RE_name设置成等于与单元格范围614内的当前所选单元格所标识的RE或RME相对应的RE或RME的名称。然后,将控制交给步骤1241。
●在步骤1258中,关闭RST编辑器对话框601,以便它从显示设备106上消失,然后,从显示窗口中除去“Editor Space”表格615,以便用在RST编辑器调用时出现的原始表格取代它。现在再次使能在显示“Editor Space”表格615的同时禁止的所有装置。最后,将控制交还给最初步骤1231,以便处理任何进一步的RST编辑器命令。
E6.ST实例化器方法
用在本发明优选实施例中的创建遵从定义的ST的STI的方法总结在图14A和14B的流程图1400中,其中,后者对应于CreateSTI例程。可以将这种方法看作ST实例化器命令的处理。
●在步骤1401中,该方法处在它的默认状态下,等待启动该进程的事件。
●在步骤1402中,作为用户动作的结果,检测ST实例化器命令。这个动作可以是,例如,键盘104上的特定键组合,定位设备105在特定按钮上的点击,或本文未作进一步规定的任何其它类似手段。
●在步骤1403中,进行测试以检验当前所选的单元格是否包含在存在RSTI的表格内。这个测试可能通过分析RSTIT表2260,以识别其Address字段2262对应于与当前所选单元格相同的表格的任何记录2261来完成。如果情况是这样,那么,将控制交给步骤1404;否则,将控制交给步骤1405。
●在步骤1404中,发出警告消息通知,以便通知用户在已经存在RSTI的表格上不能单独创建STI。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在警告消息弹出窗口内的“OK”按钮,或不偏离本发明精神的任何其它类似手段确认了这个通知消息,将控制交给步骤1401。
●在步骤1405中,首先检索命令参数ST_name:它对应于要创建的STI服从的ST的名称。这个参数ST_name用于分析STT表720,以便找出其“Name”字段722与参数ST_name匹配的记录721。一旦找到这个记录721,将它的字段“Min Element#”725和“Max Element#”726分别存储成局部变量STI_min和STI_max。然后,将它的字段“DescriptionPtr”724用于根据引用的STDT表760,确定定义在ST内的元元素的个数、和定义在ST的每个元素或元元素成员内的单元格的个数。将第一个数存储成局部变量STI_meta,和将第二个数存储成局部变量STI_width 1325(代表未来STI的列数)。
然后,用STI_min所取的值初始化另一个局部变量STI_element。
然后,用默认值“YES”初始化另一个局部变量STI_critical。
然后,用当前表格1320中的总列数初始化另一个局部变量STI_sheetwidth 1321。
然后,用当前表格1320中的总行数初始化另一个局部变量STI_sheetheight 1321。
然后,用值OVERLAY初始化另一个局部变量STI_mode。
●在步骤1406中,首先构建或更新一些其它局部变量。首先用局部变量STI_offset_width 1323和STI_offset_height 1324表示当前所选单元格1327的位置,局部变量STI_offset_width 1323和STI_offset_height 1324分别对应于当前表格1320的左上单元格与当前所选单元格1327之间的列数和行数。
然后,用作为局部变量STI_meta和STI_element之和计算的局部变量STI_height 1326表示未来STI的行数。
其次,通过评估它们的地址确定一些工作单元格范围。
首先将与未来STI相对应的单元格范围STI_range 1328确定为当前所选单元格1327作为左上单元格、和行数和列数分别等于STI_height1326和STI_width 1325的单元格范围。
然后,将单元格范围STI_horizontal_flushed_range 1330确定为与STI_range 1328共享相同的行、和占据当前表格1320的STI_width 1325个最右列的单元格范围。
然后,将单元格范围STI_horizontal_kept_range 1329确定为与STI_range 1328共享相同的行、和占据位于那两个STI_range 1328和STI_hori-zontal_flushed_range 1330之间的列的单元格范围。
然后,将单元格范围STI_vertical_flushed_range 1332确定为与STIrange 1328共享相同的列、和占据当前表格1320的STI_height 1326个底行的单元格范围。
然后,将单元格范围STI_vertical_kept_range 1331确定为与STI1328共享相同的列、和占据位于那两个STI_range 328STI_ver-tical_flushed_range 1332之间的行的单元格范围。
●在步骤1407中,进行两种求和以检验未来STI是否恰好在当前表格1320的范围之内。
●如果发现局部变量STI_offset_width 1323与STI_width 1325之和大于局部变量STI_sheet_width 1321,那么,将局部变量STI_too_wide设置成“YES”;否则,将它设置成“NO”。
●如果发现局部变量STI_offset_height 1324与STI_height 1326之和大于局部变量STI_sheet_height 1322,那么,将局部变量STI_too_high设置成“YES”;否则,将它设置成“NO”。
●在步骤1408中,根据五种可能实例化模式,进行几种测试以评估未来STI的创建对任何已经存在STI或数据的潜在影响。这些测试要求分析STIT表750,和访问每个记录751以掌握每个已定义STI的地址(“Address”字段752)和重要性(“Critical”字段755)。这些测试评估两个给定单元格范围是否部分重叠(意味着在第一单元格范围内存在至少一个属于第二单元格范围的单元格,和至少一个不属于第二单元格范围的单元格)或第一给定单元格范围是否包括在第二给定单元格范围内(意味着属于第一单元格范围的每个单元格也属于第二单元格范围)。不同的传统范围比较技术可以用于评估范围部分重叠或范围包括,这不偏离本发明的精神;在本发明的优选实施例中将不描述它们。首先,研究OVERLAY实例化模式。
●如果存在至少一个“Critical”字段755取值“YES”和与单元格范围STI_range 1328部分重叠的现有STI,那么,局部测试变量STI_overlay_critical取值“YES”;否则,局部测试变量STI_overlay_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与单元格范围STI_range 1328部分重叠的现有STI,那么,局部测试变量STI_overlay_other取值“YES”;否则,局部测试变量STI_overlay_other取值“NO”。
●如果单元格范围STI_range 1328内的所有单元格都是空的(不包含数据),那么,局部测试变量STI_overlay_data取值“NO”;否则,局部测试变量STI_overlay_data取值“YES”。其次,研究HORIZONTAL_INSERT实例化模式。
●如果存在至少一个“Critical”字段755取值“YES”和与由当前所选单元格1327所在的整个行组成的单元格范围部分重叠、或与由最底部STI_height 1326个行构成的单元格范围部分重叠、或包括在由最底部STI_height 1326个行构成的单元格范围内的现有STI,那么,局部测试变量STI_horizontal_critical取值“YES”;否则,局部测试变量STI_horizontal_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与由当前所选单元格1327所在的整个行组成的单元格范围部分重叠、或与由最底部STI_height 1326个行构成的单元格范围部分重叠、或包括在由最底部STI_height 1326个行构成的单元格范围内的现有STI,那么,局部测试变量STI_horizontal_other取值“YES”;否则,局部测试变量STI_horizontal_other取值“NO”。
●如果由最底部STI_height 1326个行构成的单元格范围内的所有单元格都是空的(不包含数据),那么,局部测试变量STI_horizontal_data取值“NO”;否则,局部测试变量STI_horizontal_data取值“YES”。
第三,研究HORIZONTAL_INSERT_BY_RANGE实例化模式。
●如果存在至少一个“Critical”字段755取值“YES”和与并置两个单元格范围STI_range 1328和STI_vertical_kept_range 1331构成的单元格范围部分重叠、或与单元格范围STI_vertical_flushed_range1332部分重叠、或包括在单元格范围STI_vertical_flushed_range1332内的现有STI,那么,局部测试变量STI_horizontal_range_critical取值“YES”;否则,局部测试变量STI_horizontal_range_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与并置两个单元格范围STI_range 1328和STI_vertical_kept_range 1331构成的单元格范围部分重叠、或与单元格范围STI_vertical_flushed_range 1332部分重叠、或包括在单元格范围STI_vertical_flushed_range 1332内的现有STI,那么,局部测试变量STI_horizontal_range_other取值“YES”;否则,局部测试变量STI_horizontal_range_other取值“NO”。
●如果单元格范围STI_vertical_flushed_range 1332内的所有单元格都是空的(不包含数据),那么,局部测试变量STI_horizontal_range_data取值“NO”;否则,局部测试变量STI_horizontal_range_data取值“YES”。
第四,研究VERTICAL_INSERT实例化模式。
●如果存在至少一个“Critical”字段755取值“YES”和与由当前所选单元格1327所在的整个列组成的单元格范围部分重叠、或与由最右侧STI_width 1325个列构成的单元格范围部分重叠、或包括在由最右侧STI_width 1325个列构成的单元格范围内的现有STI,那么,局部测试变量STI_vertical_critical取值“YES”;否则,局部测试变量STI_vertical_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与由当前所选单元格1327所在的所有列组成的单元格范围部分重叠、或与由最右侧STI_width 1325个列构成的单元格范围部分重叠、或包括在由最右侧STI_width 1325个列构成的单元格范围内的现有STI,那么,局部测试变量STI_vertical_other取值“YES”;否则,局部测试变量STI_vertical_other取值“NO”。
●如果由最右侧STI_width 1325个列构成的单元格范围内的所有单元格都是空的(不包含数据),那么,局部测试变量STI_vertical_data取值“NO”;否则,局部测试变量STI_vertical_data取值“YES”。
第五,研究VERTICAL_INSERT_BY_RANGE实例化模式。
●如果存在至少一个“Critical”字段755取值“YES”和与并置两个单元格范围STI_range 1328和STI_horizontal_kept_range 1329构成的单元格范围部分重叠、或与单元格范围STI_horizontal_flushed_range 1330部分重叠、或包括在单元格范围STI_horizontal_flushed_range 1330内的现有STI,那么,局部测试变量STI_vertical_range_critical取值“YES”;否则,局部测试变量STI_vertical_range_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与并置两个单元格范围STI_range 1328和STI_horizontal_kept_range 1329构成的单元格范围部分重叠、或与单元格范围STI_horizontal_flushed_range 1330部分重叠、或包括在单元格范围STI_horizontal_flushed_range 1330内的现有STI,那么,局部测试变量STI_vertical_range_other取值“YES”;否则,局部测试变量STI_vertical_range_other取值“NO”。
●如果单元格范围STI_horizontal_flushed_range 1330内的所有单元格都是空的(不包含数据),那么,局部测试变量STI_vertical_range_data取值“NO”;否则,局部测试变量STI_vertical_range_data取值“YES”。
●在步骤1409中,在显示设备106上显示ST实例化器对话框1300。如果局部变量STI_critical取值“YES”,“Critical”复选框1314显示复选标记;否则(值“NO”),Critical”复选框1314保持空白显示。用局部变量ST_name初始化标记框1315。将局部变量STI_element的值填入文本框1312。按如下顺序将如下局部变量的值从左到右、从顶行开始逐行填入15个标记框1304:STI_overlay_critical、STI_overlay_other、STI_overlay_data、STI_hori-zontal_critical、STI_horizontal_other、STI_horizontal_data、STI_ho-rizontal_range_citical、STI_horizontal_range_other、STI_horizontal_range_data、STI_vertical_critical、STI_vertical_other、STI_vertical_data、STI_vertical_range_citical、STI_vertical_ange_other、和STI_vertical_range_data。
然后,如果局部变量STI_mode取相应值OVERLAY、HORIZONTAL_INSERT、HORIZONTAL_INSERT_BY_RANGE、VERTICAL_INSERT、或VERTICAL_INSERT_BY_RANGE,那么,选项按钮“Overlay”1309、“Horizontal Insert”1308、“Horizontal Insert byRange”1307、“Vertical Insert”1306、或“Vertical Insert by Range”1305独自显示黑点。最后,一旦如下局部变量之一取值“YES”:STI_too_wide、STI_too_high、STI_overlay_critical(只考虑局部变量STI_mode是否等于OVERLAY)、STI_horizontal_critical(只考虑局部变量STI_mode是否等于HORIZONTAL_INSERT)、STI_vertical_critical(只考虑局部变量STI_mode是否等于VERTICAL_INSERT)、STI_horizontalrange_critical(只考虑局部变量STI_mode是否等于HORIZONTAL_INSERT_BY_RANGE)、和STI_vertical_range_critical(只考虑局部变量STI_mode是否等于VERTICAL_INSERT_BY_RANGE),禁止“Create”按钮1303;否则,使能“Create”按钮1303。
●在步骤1410中,该方法等待ST实例化器对话框1300上、或有关当前所选单元格的任何改变的任何用户动作。这样的用户动作通常来自用定位设备105的点击,但也可以采取其它类似形式,譬如,键盘104上的特定键组合(但不限于此),或本文未作进一步规定的任何其它类似手段。
●在步骤1411中,检测ST实例化器对话框1300上、或有关当前所选单元格的改变的用户动作。
●如果用户动作是点击“Create”按钮1303,那么,将控制交给步骤1416;
●如果用户动作是点击旋钮1313的上部,那么,将控制交给步骤1415;
●如果用户动作是点击旋钮1313的下部,那么,将控制交给步骤1414;
●如果用户动作是点击“Critical”按钮1314,那么,将控制交给步骤1413;
●如果用户动作是点击选项按钮1309、1308、1307、1306、和1305之一,那么,将控制交给步骤1412;
●如果用户动作是点击“Cancel”按钮1302或关闭窗口按钮1301,那么,将控制交给步骤1418;
●最后,如果用户动作是改变当前所选单元格的位置,那么,将控制交给步骤1406。
●在步骤1412中,如果电子表格用户用定位设备105分别点击选项按钮1309、1308、1307、1306、或1305,局部变量STI_mode取值OVERLAY、HORIZONTAL_INSERT、HORIZONTAL_NSERT_BY_RANGE、VERTICAL_INSERT、或VERTICAL_INSERT_BY_RANGE。然后,将控制交给步骤1406。
●在步骤1413中,更新局部变量STI_critical,以便在值“YES”和“NO”之间切换。然后,将控制交给步骤1406。
●在步骤1414中,只要其值保持大于等于局部变量STI_min的值,将局部变量STI_element减1(一)。然后,将控制交给步骤1406。
●在步骤1415中,只要其值保持小于等于局部变量STI_max的值,将局部变量STI_element加1(一)。然后,将控制交给步骤1406。
●在步骤1416中,访问STIT表750,以便从中除去与如在步骤1408期间对局部变量STI_mode所代表的插入模式识别的那样,新实例的引入破坏的STI相对应的每个记录751。然后,更新STT表720,以反映每个STI的除去。对于每个除去的STI,将其“Name”字段722等于与除去STI相对应的STIT表750的记录751的“ST”字段753的记录721的“REFERENCED”属性729的“INSTANCE REFERENCE”(IR)字段729c除以2(二)。
●在步骤1417中,调用例程CreateSTI。
●在步骤1418中,关闭ST实例化器对话框1300,以便它从显示设备106上消失。最后,将控制交还给最初步骤1401,以便处理任何进一步的ST实例化器命令。
如下步骤,即,图14B的所有部分对应于像用在本发明优选实施例中那样的CreateSTI例程的执行。
●在步骤1419中,在STIT表750中引入新记录751。在这个记录751内,用单元格范围STI_range 1328的地址初始化“Address”字段752,用局部变量ST_name的值初始化“ST”字段753,用局部变量STI_element的值初始化“Element#”字段754,用局部变量STI_critical的值初始化“Critical”字段755,用构成新STI的页眉部分的元元素的个数(这个数字等于与新STI服从的ST相关联的STDT表760的页眉部分767中的对数)初始化“Header Size”字段756,和用构成新STI的页脚部分的元元素的个数(这个数字等于与新STI服从的ST相关联的STDT表760的页脚部分766中的对数)初始化“Footer Size”字段757。然后,扫描STT表720,以便识别发现“Name”字段等于局部变量ST_name的记录721。一旦找到,通过将“INSTANCE REFERENCE”子字段729c乘以2(二),更新这个记录721的“Type”字段727内的“REFERENCED”属性729。
●在步骤1420中,进行测试以检验局部变量STI_mode的值。
●如果发现这个值等于OVERLAY,那么,将控制交给步骤1425;
●如果发现这个值等于HORIZONTAL_INSERT,那么,将控制交给步骤1424;
●如果发现这个值等于HORIZONTAL_INSERT_BY_RANGE,那么,将控制交给步骤14244;
●如果发现这个值等于VERTICAL_INSERT,那么,将控制交给步骤1423;
●如果发现这个值等于VERTICAL_INSERT_BY_RANGE。然后,将控制交给步骤1421。
●在步骤1421中,选择单元格范围STI_range 1328以便成为当前所选单元格范围,该当前所选单元格范围保持在其前者的位置1327上,然后,进行“将列插入所选范围内”的常规操作。
●在步骤1422中,选择单元格范围STI_range 1328以便成为当前所选单元格范围,该当前所选单元格范围保持在其前者的位置1327上,然后,进行“将行插入所选范围内”的常规操作。
●在步骤1423中,选择单元格范围STI_range 1328以便成为当前所选单元格范围,该当前所选单元格范围保持在其前者的位置1327上,然后,进行“列插入”的常规操作。然后,将控制交给步骤1425。
●在步骤1424中,选择单元格范围STI_range 1328以成为当前所选单元格范围,该当前所选单元格范围保持在其前者的位置1327上,然后,进行“行插入”的常规操作。然后,将控制交给步骤1425。
●在步骤1425中,将局部变量STI_index初始化成局部变量STI_element所取的值。然后,分析STT表720,以便识别其“Name”字段722与局部变量ST_name的值匹配的记录721。在这个记录721内检索允许在存储器中定位与要创建的新STI服从的ST相关联的STDT表760的“Description Ptr”字段724。然后,将在这个STDT表760内找到的元素或MEF名称和元素或MEP名称的第一对761设置成当前名称对(EF或MEF名称,EP或MEP名称)。
●在步骤1426中,分析EPT表710,以便找出发现其“Name”字段712等于当前对内的EP或MEP名称的记录711。一旦找到这个记录711,检索它的“Description Ptr”字段714,以便在存储器中定位例示EP或MEP的单元格范围。只通过值将这个EP或MEP的描述复制-粘贴到当前所选单元格上,以便STI_range内的相应行接受EP或MEP初始值。然后,分析EFT表700,以便找出发现其“Name”字段702等于当前对内的EF或MEF名称的记录701。一旦找到这个记录701,检索它的“Description Ptr”字段704,以便在存储器中定位例示EF或MEF的单元格范围。只通过属性将这个EF或MEF的描述复制-粘贴到当前所选单元格上,以便STI_range内的相应行接受EF或MEF属性。
●在步骤1427中,进行测试以检验当前对(EF或MEF名称,EP或MEP名称)对应于元素还是元元素。在第一种情况下,将控制交给步骤1428,和在第二种情况下,将控制交给步骤1429。
●在步骤1428中,将局部变量STI_index减1(一)。然后,将控制交给步骤1430。
●在步骤1429中,进行测试以检验当前对(EF或MEF名称,EP或MEP名称)是否是STDT表760内的最后一个763。如果情况是这样,通过使控制返回到例程调用程序完成CreateSTI的执行;否则,将控制交给步骤1431。
●在步骤1430中,进行测试以检验局部变量STI_index是否等于0(零)。如果情况是这样,将控制交给步骤1429;否则,将控制交给步骤1432。
●在步骤1431中,使STDT表760中接在当前一对之后的名称对(EF或MEF名称,EP或MEP名称)成为当前名称对。
●在步骤1432中,将当前所选单元格向下移动一行。然后,将控制交给步骤1426。
E7.STI插入管理器方法
用在本发明优选实施例中的通过引入新元素改变现有STI的方法总结在图15A的流程图1500中。可以将这种方法看作STI插入管理器命令的处理。
●在步骤1501中,该方法处在它的默认状态下,等待启动该进程的事件。
●在步骤1502中,作为用户动作的结果,检测STI插入管理器命令。这个动作可以是,例如:
●键盘104上的特定键组合;
●定位设备105在特定按钮上的点击;或
●本文未作进一步规定的任何其它类似手段。
当检测到STI插入管理器命令时,当前电子选择对应于可能缩减成单个单元格、称为当前所选单元格范围和包括当前所选单元格的单元格范围。如果这个当前所选单元格不是当前所选单元格范围内的左上单元格,那么,当前所选单元格范围的左上单元格成为当前所选单元格。
●在步骤1503中,进行测试以检验当前所选单元格是否位于现有STI内。这个测试通过分析STIT表750,和在每个记录751中访问“Address”字段752,以便确定在这个字段中指定的单元格范围地址是否的确包括各个当前所选单元格1707的地址来完成。如果情况是这样,那么,当前所选单元格1707包含在名为STIM_instance_range 1713的中,并且,将控制交给步骤1504;否则,将控制交给步骤1513。
●在步骤1504中,首先检索在步骤1503中找到的记录751,以便初始化来自其描述STI的STIM_instance_range 1713的字段的局部变量:
●用“ST”字段753的值初始化局部变量ST_name;
●用“Element#”字段754的值初始化局部变量STIM_element;
●用“Critical”字段755的值初始化局部变量STIM_critical;
●用“Header Size”字段756的值初始化局部变量STIM_header_size;和
●用“Footer Size”字段757的值初始化局部变量STIM_footer_size。然后,将局部变量ST_name用于分析STT表720,以便找出其“Name”字段722与参数ST_name匹配的记录721。一旦找到这个记录721,将它的字段“Max Element#”726存储成局部变量STIM_max。然后,用当前表格1700中的总列数初始化另一个局部变量STIM_sheet_width1701。然后,用当前表格1700中的总行数初始化另一个局部变量STIM_sheet_height 1701。然后,用值HORIZONTAL_INSERT初始化另一个局部变量STIM_mode。然后,将当前所选单元格1707的位置用于初始化与当前表格1700的左上单元格与当前所选单元格1707之间的行数相对应的局部变量STIM_range_offset_height 1709。然后,用局部变量STIM_height 1706表示当前所选单元格范围STIM_range1708的行数。然后,首先用局部变量STIM_offset_width 1703和STIM_offset_height 1704表示单元格范围STIM_instance_range 1713的左上单元格的位置,局部变量STIM_offset_width 1703和STIM_offsetheight 1704分别对应于当前表格1320的左上单元格与单元格范围STIM_instance_range 1713的左上单元格之间的列数和行数。然后,将单元格范围STIM_vertical_flushed_range 1712确定成与STIM_instance_range 1713共享相同的列、和占据当前表格1700的STIM_height 1706个底行的单元格范围。然后,将单元格范围STIM_vertical_kept_range 1711确定成与STIM_instance_range 1713共享相同的列、和占据位于那两个STIM_instance_range 1713和STIM_vertical_flushed_range 1712之间的行的单元格范围。
●在步骤1505中,进行测试以确定当前所选单元格1707位于当前STI的页眉部分或页脚部分内,还是位于当前STI的元素内。如果局部变量STIM_offset_height 1704与STIM_header_size之和小于等于局部变量STIM_range_offset_height 1709,和如果局部变量STIM_range_offset_height 1709小于等于STIM_offset_height 1704、STLM_header_size与STIM_element之和,那么,当前所选单元格1707在当前STI的页眉部分和页脚部分之外,并且,将控制交给步骤1508;否则,将控制交给步骤1506。
●在步骤1506中,发出警告消息通知,以便通知用户如果继续进行插入操作,可能会破坏当前STI。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。然后,提醒用户取消当前“Insertion”操作,或继续进行“Insertion”操作。这通常可以通过在显示设备106上将提醒消息显示在弹出窗口中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在提醒消息弹出窗口内的“Cancel”或“Contihue”按钮,或不偏离本发明精神的任何其它类似手段作出他的选择,如果电子表格用户的决定是取消操作,将控制交给步骤1505,或者,如果电子表格用户的决定是继续进行操作,将控制交给步骤1507。
●在步骤1507中,访问STIT表750,以便从中除去与在步骤1503中识别的当前STI相对应的和包含当前所选单元格1707的记录751。然后,更新STT表720,以反映STI的除去。将其“Name”字段722等于与除去STI相对应的STIT表750的记录751的“ST”字段753的记录721的“REFERENCED”属性729的“INSTANCE REFERENCE”(IR)字段729c除以2(二)。
●在步骤1508中,进行两种求和以检验当前STI内的插入是否落在当前表格1320的边界之内和落在STI的最大尺寸之内。
●如果发现局部变量STIM_height 1706与STIM_element之和大于局部变量STIM_max,那么,将局部变量STI_too_high设置成“YES”;否则,将它设置成“NO”。
●如果发现局部变量STIM_offset_height 1704、STIM_header_size、STIM_element、STIM_footer_size与STIM_height 1706之和大于局部变量STIM_sheet_height 1702,那么,将局部变量STI_too_high设置成“YES”;否则,将它设置成“NO”。
●在步骤1509中,根据两种可能插入模式,进行几种测试以评估插入对任何已经存在STI或数据的潜在影响。这些测试要求分析STIT表750,和访问每个记录751以掌握每个已定义STI的地址(“Address”字段752)和重要性(“Critical”字段755)。这些测试评估两个给定单元格范围是否部分重叠(意味着在第一单元格范围内存在至少一个属于第二单元格范围的单元格,和至少一个不属于第二单元格范围的单元格)或第一给定单元格范围是否包括在第二给定单元格范围内(意味着属于第一单元格范围的每个单元格也属于第二单元格范围)。不同的传统范围比较技术可以用于评估范围部分重叠或范围包括,这不偏离本发明的精神;在本发明的优选实施例中将不描述它们。
首先,研究HORIZONTAL_INSERT实例化模式。
●如果存在至少一个“Critical”字段755取值“YES”和与由当前所选单元格1707所在的整个行组成的单元格范围部分重叠、或与由最底部STIM_height 1706个行构成的单元格范围部分重叠、或包括在由最底部STIM_height 1706个行构成的单元格范围内的现有STI,那么,局部测试变量STIM_horizontal_critical取值“YES”;否则,局部测试变量STIM_horizontal_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与由当前所选单元格1707所在的整个行组成的单元格范围部分重叠、或与由最底部STIM_height 1076个行构成的单元格范围部分重叠、或包括在由最底部STIM_height 1706个行构成的单元格范围内的现有STI,那么,局部测试变量STIM_horizontal_other取值“YES”;否则,局部测试变量STIM_horizontal_other取值“NO”。
●如果由最底部STIM_height 1706个行构成的单元格范围内的所有单元格都是空的(不包含数据),那么,局部测试变量STIM_horizontal_data取值“NO”;否则,局部测试变量STIM_horizontal_data取值“YES”。
其次,研究HORIZONTAL_INSERT_BY_RANGE实例化模式。
●如果存在至少一个“Critical”字段755取值“YES”和与并置单元格范围STIM_vertical_kept_range 1711和通过除去当前所选单元格1712上面的行从单元格范围STIM_instance_range 1713中导出的单元格范围构成的单元格范围部分重叠、或与单元格范围STIM_vertical_flushed_range 1712部分重叠、或包括在单元格范围STIM_vertical_flushed_range 1712内的现有STI,那么,局部测试变量STIM_horizontal_range_critical取值“YES”;否则,局部测试变量STIM_horizontal_range_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与并置单元格范围STIM_vertical_kept_range 1711和通过除去当前所选单元格1712上面的行从单元格范围STIM_instance_range 1713中导出的单元格范围构成的单元格范围部分重叠、或与单元格范围STIM_vertical_flushed_range 1712部分重叠、或包括在单元格范围STIM_vertical_flushed_range 1712内的现有STI,那么,局部测试变量STIM_horizontal_range_other取值“YES”;否则,局部测试变量STIM_horizontal_range_other取值“NO”。
●如果单元格范围STIM_vertical_flushed_range 1712内的所有单元格都是空的(不包含数据),那么,局部测试变量STIM_horizontal_range_dara取值“NO”;否则,局部测试变量STIM_horizontal_range_data取值“YES”。
●在步骤1510中,在显示设备106上显示ST插入管理器对话框1600。如果局部变量STIM_critical取值“YES”,“Critical”复选框1610显示复选标记;否则(值“NO”),Critical”复选框1610保持空白显示。用局部变量ST_name初始化标记框1611。将局部变量STIM_height 1706的值填入文本框1608。将局部变量STIM_too_high的值填入标记框1604。按如下顺序将如下局部变量的值从左到右、从顶行开始逐行填入6个标记框1304:
●STIM_horizontal_critical;
●STIM_horizontal_other;
●STIM_horizontal_data;
●STIM_horizontal_range_citical;
●STIM_borizontal_range_other;
●STIM_horizontal_range_data。
然后,如果局部变量STIM_mode取相应值HORIZONTAL_INSERT、或HORIZONTAL_INSERT_BY_RANGE,那么,选项按钮1606或1605独自显示黑点。最后,一旦如下局部变量之一取值“YES”:STIM_too_high、STIM_horizontal_criticai(只考虑局部变量STIM_mode是否等于HORIZONTAL_NSERT)、和STIM_horizontal_range_critical(只考虑局部变量STIM_mode是否等于HORIZONTAL_INSERT_BY_RANGE),禁止“Insert”按钮1603;否则,使能“Insert”按钮1603。
●在步骤1511中,该方法等待ST插入管理器对话框1600上的任何用户动作。这样的用户动作通常来自用定位设备105的点击,但也可以采取其它类似形式,譬如,键盘104上的特定键组合(但不限于此),或本文未作进一步规定的任何其它类似手段。
●在步骤1512中,检测ST插入管理器对话框1600上的用户动作。
●如果用户动作是点击“Insert”按钮1603,那么,将控制交给步骤1525;
●如果用户动作是点击旋钮1609的上部,那么,将控制交给步骤1522;
●如果用户动作是点击旋钮1609的下部,那么,将控制交给步骤1541;
●如果用户动作是点击“Critical”按钮1610,那么,将控制交给步骤1523;
●如果用户动作是点击选项按钮1606和1605之一,那么,将控制交给步骤1524;和
●如果用户动作是点击“Cancel”按钮1602或关闭窗口按钮1601,那么,将控制交给步骤1521。
●在步骤1513中,用当前表格1740中的总列数初始化局部变量STIMsheet_width 1741(参照图17B)。然后,用当前表格1740中的总行数初始化另一个局部变量STIM_sheet_height 1742。然后,用值HORIZONTAL_INSERT初始化另一个局部变量STIM_mode。然后,分别用局部变量STIM_height 1746和STIM_width 1745表示当前所选单元格范围STIM_rnage 1748的列数和行数。然后,首先用局部变量STIM_offset_width 1743和STIM_offset_height 1744表示当前所选单元格1747的位置,局部变量STIM_offset_width 1743和STIM_offset_height 1744分别对应于当前表格1740的左上单元格与当前所选单元格1747之间的列数和行数。然后,将单元格范围STIM_vertical_flushed_range 1752确定成与STIM_range 1748共享相同的列、和占据当前表格1740的STIM_height 1746个底行的单元格范围。然后,将单元格范围STIM_vertical_kept_range 1751确定成与STIM_range 1748共享相同的列、和占据位于那两个STIM_range 1743和STIM_vertical_flushed_range 1752之间的行的单元格范围。然后,将单元格范围STIM_horizontal_flushed_range 1750确定成与STIM_range 1748共享相同的行、和占据当前表格1740的STIM_width1745个最右列的单元格范围。然后,将单元格范围STIMhorizontal_kept_range 1749确定成与STIM_range 1748共享相同的行、和占据位于那两个STIM_range 1748和STIM_horizontal_flushed_range1750之间的列的单元格范围。
●在步骤1514中,根据四种可能插入模式,进行几种测试以评估插入对任何已存在STI或数据的潜在影响。这些测试要求分析STIT表750,和访问每个记录751以掌握每个已定义STI的地址(“Address”字段752)和重要性(“Critical”字段755)。这些测试评估两个给定单元格范围是否部分重叠(意味着在第一单元格范围内存在至少一个属于第二单元格范围的单元格,和至少一个不属于第二单元格范围的单元格)或第一给定单元格范围是否包括在第二给定单元格范围内(意味着属于第一单元格范围的每个单元格也属于第二单元格范围)。不同的传统范围比较技术可以用于评估范围部分重叠或范围包括,这不偏离本发明的精神;在本发明的优选实施例中将不描述它们。
首先,研究HORIZONTAL_INSERT插入模式。
●如果存在至少一个“Critical”字段755取值“YES”和与由当前所选单元格1747所在的整个行组成的单元格范围部分重叠、或与由最底部STIM_height 1746个行构成的单元格范围部分重叠、或包括在由最底部STIM_height 1746个行构成的单元格范围内的现有STI,那么,局部测试变量STIM_horizontal_critical取值“YES”;否则,局部测试变量STIM_horizontal_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与由当前所选单元格1747所在的整个行组成的单元格范围部分重叠、或与由最底部STIM_height 1746个行构成的单元格范围部分重叠、或包括在由最底部STIM_height 1746个行构成的单元格范围内的现有STI,那么,局部测试变量STIM_horizontal_other取值“YES”;否则,局部测试变量STIM_horizontal_other取值“NO”。
●如果由最底部STIM_height 1746个行构成的单元格范围内的所有单元格都是空的(不包含数据),那么,局部测试变量STIM_horizontal_data取值“NO”;否则,局部测试变量STIM_horizontal_data取值“YES”。
其次,研究HORIZONTAL_INSERT_BY_RANGE插入模式。
●如果存在至少一个“Critical”字段755取值“YES”和与并置两个单元格范围STIM_range 1748和STIM_vertical_kept_range 1751构成的单元格范围部分重叠、或与单元格范围STIM_vertical_flushed_range 1752部分重叠、或包括在单元格范围STIM_vertical_flushed_range 1752内的现有STI,那么,局部测试变量STIM_horizontal_range_critical取值“YES”;否则,局部测试变量STIM_horizontal_range_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与并置两个单元格范围STIM_range 1748和STIM_vertical_kept_range 1751构成的单元格范围部分重叠、或与单元格范围STIM_vertical_flushed_range 1752部分重叠、或包括在单元格范围STIM_vertical_flushed_range 1752内的现有STI,那么,局部测试变量STIM_horizontal_range_other取值“YES”;否则,局部测试变量STIM_horizontal_range_other取值“NO”。
●如果单元格范围STIM_vertical_flushed_range 1752内的所有单元格都是空的(不包含数据),那么,局部测试变量STIM_horizontal_range_data取值“NO”;否则,局部测试变量STIM_horizontalrange_data取值“YES”。
第三,研究VERTICAL_INSERT插入模式。
●如果存在至少一个“Critical”字段755取值“YES”和与由当前所选单元格1747所在的整个列组成的单元格范围部分重叠、或与由最右侧STIM_width 1745个列构成的单元格范围部分重叠、或包括在由最右侧STIM_width 1745个列构成的单元格范围内的现有STI,那么,局部测试变量STIM_vertical_critical取值“YES”;否则,局部测试变量STIM_vertical_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与由当前所选单元格1747所在的整个列组成的单元格范围部分重叠、或与由最右侧STIM_width 1745个列构成的单元格范围部分重叠、或包括在由最右侧STIM_width 1745个列构成的单元格范围内的现有STI,那么,局部测试变量STIM_vertical_other取值“YES”;否则,局部测试变量STIM_vertical_other取值“NO”。
●如果由最右侧STIM_width 1745个列构成的单元格范围内的所有单元格都是空的(不包含数据),那么,局部测试变量STIM_vertical_data取值“NO”;否则,局部测试变量STIM_vertical_data取值“YES”。
第四,研究VERTICAL_INSERT_BY_RANGE插入模式。
●如果存在至少一个“Critical”字段755取值“YES”和与并置两个单元格范围STIM_range 1748和STIM_horizontal_kept_range 1749构成的单元格范围部分重叠、或与单元格范围STIM_horizontal_flushed_range 1750部分重叠、或包括在单元格范围STIM_horizontal_flushed_range 1750内的现有STI,那么,局部测试变量STIM_vertical_range_critical取值“YES”;否则,局部测试变量STIM_vertical_range_critical取值“NO”。
●如果存在至少一个“Critical”字段755取值“NO”和与并置两个单元格范围STIM_range 1748和STIM_horizontal_kept_range 1749构成的单元格范围部分重叠、或与单元格范围STIM_horizontal_flushed_range 1750部分重叠、或包括在单元格范围STIM_horizontal_flushed_range 1750内的现有STI,那么,局部测试变量STIM_vertical_range_other取值“YES”;否则,局部测试变量STIM_vertical_range_other取值“NO”。
●如果单元格范围STIM_horizontal_flushed_range 1750内的所有单元格都是空的(不包含数据),那么,局部测试变量STIM_vertical_range_data取值“NO”;否则,局部测试变量STI_vertical_range_data取值“YES”。
●在步骤1515中,根据在步骤1514期间指定给如下局部变量的值,进行测试以检验插入对任何现有STI的影响:
●STIM_horizontal_critical;
●STIM_horizontal_other;
●STIM_horizontal_range_citical;
●STIM_horizontal_range_other;
●STIM_vertical_critical;
●STIM_vertical_other;
●STIM_vertical_range_citical;和
●STIM_vertical_range_other。
如果这些局部变量没有一个取值“YES”,那么,将控制交给步骤1516;否则,如果这些局部变量的至少一个取值“YES”,那么,将控制交给步骤1517。
●在步骤1516中,触发像在传统电子表格环境下使用和定义的传统插入方法,然后,将控制交还给最初步骤1501,以便处理任何未来的STI插入管理器命令。
●在步骤1517中,在显示设备106上显示ST插入管理器对话框1600。用保留值“None”初始化标记框1629。按如下顺序将如下局部变量的值从左到右、从顶行开始逐行填入12个标记框1624:
●STIM_horizontal_critical;
●STIM_horizontal_other;
●STIM_horizontal_data;
●STIM_horizontal_range_citical;
●STIM_horizontal_range_other;
●STIM_horizontal_range_data;
●STIM_vertical_critical;
●STIM_vertical_other;
●STIM_vertical_data;
●STIM_vertical_range_citical;
●STIM_vertical_range_other;
●STIM_vertical_range_data。
然后,如果局部变量STIM_mode取相应值HORIZONTAL_INSERT、HORIZONTAL_INSERT_BY_RANGE、VERTICAL_INSERT、或VERTICAL_INSERT_BY_RANGE,那么,选项按钮1628、1627、1626、或1625独自显示黑点。
最后,一旦如下局部变量之一取值“YES”:STIM_horizontal_critical(只考虑局部变量STIM_mode是否等于HORIZONTAL_NSERT)、STIM_vertical_critical(只考虑局部变量STIM_mode是否等于VERTICAL_INSERT)、STIM_horizontal_range_criticai(只考虑局部变量STIM_mode是否等于HORIZONTAL_INSERT_BY_RANGE)、和STIM_vertical_range_critical(只考虑局部变量STIM_mode是否等于VERTICAL_INSERT_BY_RANGE),禁止“Insert”按钮1623;否则,使能“Insert”按钮1623。
●在步骤1518中,该方法等待ST插入管理器对话框1620上的任何用户动作。这样的用户动作通常来自用定位设备105的点击,但也可以采取其它类似形式,譬如,键盘104上的特定键组合(但不限于此),或本文未作进一步规定的任何其它类似手段。
●在步骤1519中,检测ST插入管理器对话框1620上的用户动作。
●如果用户动作是点击“Insert”按钮13623,那么,将控制交给步骤1526;
●如果用户动作是点击选项按钮1628、1627、1626、和1625之一,那么,将控制交给步骤1520;
●如果用户动作是点击“Cancel”按钮1622或关闭窗口按钮1621,那么,将控制交给步骤1521。
●在步骤1520中,如果电子表格用户用定位设备105分别点击选项按钮1628、1627、1626、或1625,局部变量STIM_mode取值HORIZONTAL_INSERT、HORIZONTAL_INSERT_BY_RANGE、VERTICAL_INSERT、或VERTICAL_INSERT_BY_RANGE。然后,将控制交给步骤1517。
●在步骤1521中,关闭ST插入管理器对话框1600或1620,以便它从显示设备106上消失。最后,将控制交还给最初步骤1501,以便处理任何未来的ST插入管理器命令。
●在步骤1522中,只要其值与局部变量STIM_element的值之和保持小于等于局部变量STIM_max的值,将局部变量STIM_height 1706加1(一)。如果增加已经完成,通过在最后一行下面将新行加入当前选择中,扩大当前所选单元格范围STIM_mage 1708。然后,将控制交给步骤1508。
●在步骤1523中,更新局部变量STIM_critical,以便在值“YES”和“NO”之间切换。然后,用局部变量STIM_critical的值更新如在步骤1503中找到那样的、STIT表750的记录751内的字段“Critical”755。然后,将控制交给步骤1508。
●在步骤1524中,如果电子表格用户用定位设备105分别点击选项按钮1606、或1605,局部变量STIM_mode取值HORIZONTAL_INSERT、HORIZONTAL_INSERT_BY_RANGE。然后,将控制交给步骤1508。
●在步骤1525中,访问STIT表750,以便从中除去与如在步骤1509期间对局部变量STI_mode所代表的插入模式识别的那样,新行的插入破坏的STI相对应的每个记录751。然后,更新STT表720,以反映每个STI的除去。对于每个除去的STI,将其“Name”字段722等于与除去STI相对应的STIT表750的记录751的“ST”字段753的记录721的“REFERENCED”属性729的“INSTANCE REFERENCE”(IR)字段729c除以2(二)。然后,将控制交给步骤1527。
●在步骤1526中,访问STIT表750,以便从中除去与如在步骤1514期间对局部变量STI_mode所代表的插入模式识别的那样,新行的插入破坏的STI相对应的每个记录751。然后,更新STT表720,以反映每个STI的除去。对于每个除去的STI,将其“Name”字段722等于与除去STI相对应的STIT表750的记录751的“ST”字段753的记录721的“REFERENCED”属性729的“INSTANCE REFERENCE”(IR)字段729c除以2(二)。然后,将控制交给步骤1528。
●在步骤1527中,进行测试以检验局部变量STIM_mode的值。如果发现这个值等于HORIZONTAL_INSERT,那么,将控制交给步骤1529。如果发现这个值等于HORIZONTAL_INSERT_BY_RANGE,那么,将控制交给步骤1530。
●在步骤1528中,进行测试以检验局部变量STIM_mode的值。
●如果发现这个值等于HORIZONTAL_INSERT,那么,将控制交给步骤1531。
●如果发现这个值等于HORIZONTAL_INSERT_BY_RANGE,那么,将控制交给步骤1533。
●如果发现这个值等于VERTICAL_INSERT,那么,将控制交给步骤1532。
●如果发现这个值等于VERTICAL_INSERT_BY_RANGE,那么,将控制交给步骤1534。
●在步骤1529中,选择单元格范围STIM_range 1708以便成为当前所选单元格范围,该当前所选单元格范围保持在其前者的位置1747上,然后,进行“行插入”的常规操作。然后,将控制交给步骤1535。
●在步骤1530中,选择单元格范围STIM_range_col_fit 1721以便成为当前所选单元格范围,将该当前所选单元格范围移动到与单元格范围STIM_instance_range 1713的最左列与当前所选单元格1707以前所在的行的交点相对应的位置1736,然后,进行“将行插入所选范围内”的常规操作。然后,将控制交给步骤1535。
●在步骤1531中,选择单元格范围STIM_range 1748以便成为当前所选单元格范围,该当前所选单元格范围保持在其前者的位置1747上,然后,进行“行插入”的常规操作。然后,将控制交给步骤1521。
●在步骤1532中,选择单元格范围STIM_range 1748以便成为当前所选单元格范围,该当前所选单元格范围保持在其前者的位置1747上,然后,进行“列插入”的常规操作。然后,将控制交给步骤1521。
●在步骤1533中,选择单元格范围STIM_range 1748以便成为当前所选单元格范围,该当前所选单元格范围保持在其前者的位置1747上,然后,进行“将行插入所选范围内”的常规操作。然后,将控制交给步骤1521。
●在步骤1534中,选择单元格范围STIM_range 1748以便成为当前所选单元格范围,该当前所选单元格范围保持在其前者的位置1747上,然后,进行“将列插入所选范围内”的常规操作。然后,将控制交给步骤1521。
●在步骤1535中,调用创建实例元素命令,以及设置成局部变量ST_name、STIM_instance_range和STIM_height的参数。然后,将控制交给步骤1521。
●在步骤1541中,只要其值严格保持正的,将局部变量STIM_height 1706减1(一)。如果增加已经完成,那么,通过从当前选择中除去最后一行,缩小当前所选单元格范围STIM_mage 1708。然后,将控制交给步骤1508。
E8.实例元素创建方法
用在本发明优选实施例中的在现有STI内创建新元素的方法总结在图15B的流程图1550中。可以将这种方法看作创建实例元素命令的处理。
●在步骤1551中,该方法处在它的默认状态下,等待对创建实例元素命令的调用。
●在步骤1552中,检测创建实例元素命令,以及记录在局部变量ST_name、STI_range和Nbr内的参数。
●在步骤1553中,分析STT表720,以便识别其“Name”字段722与局部变量ST_name的值匹配的记录721。在这个记录721内,检索允许在存储器中分配与当前STI服从的ST相关联的STDT表760的“Description Ptr”字段724。然后,将在这个STDT表760内找到的EF名称和EP名称的元素对762设置成当前名称对:(EF名称,EP名称)。然后,将局部变量Nbr存储在第二局部变量Nbr2中。
●在步骤1554中,分析EPT表710,以便找出发现其“Name”字段712等于当前对内的EP名称的记录711。一旦找到这个记录711,检索它的“Descrip-tion Ptr”字段714,以便在存储器中定位例示EP的单元格范围。只通过值将这个EP的描述复制-粘贴到当前所选单元格上,以便相应行接受EP的初始值。然后,分析EFT表700,以便找出发现其“Name”字段702等于当前对内的EF名称的记录701。一旦找到这个记录701,检索它的“Description Ptr”字段704,以便在存储器中定位例示EF的单元格范围。只通过属性将这个EF的描述复制-粘贴到当前所选单元格上,以便相应行接受EF属性。
●在步骤1555中,将局部变量Nbr减1(一)。
●在步骤1556中,进行测试以检验局部变量Nbr是否等于0(零)。如果情况是这样,那么,将控制交给步骤1558,否则,将控制交给步骤1557。
●在步骤1557中,将当前所选单元格向下移动一行。然后,将控制交给步骤1554。
●在步骤1558中,通过在所有元素中恢复“OUT”单元格更新当前STI的STI_range,以防止因插入造成的任何破坏。为了这个目的,将对762内在步骤1553中找到EP名称用于识别EPT表710内“Name”字段712与这个EP名称匹配的记录711。然后,将这同一个记录711的“Description Ptr”字段714用于在存储器中检索指示规定成“OUT”单元格(在本发明的优选实施例中,通过将单元格保护模式属性设置成“防改变的单元格”)的EF单元格的EP例示单元格范围。为了这个目的,临时局部变量STIM_out_fields将规定成“IN”或“OUT”单元格的所有单元格的相对位置存储成一组有序IN或OUT值。例如,在由只有第3和第5单元格是“OUT”单元格的5个单元格组成的EP中,这个局部变量STIM_out_fields取值(IN,IN,OUT,IN,OUT)。然后,选择插入单元格范围的顶行,作为当前所选单元格范围。然后,如果对应于局部变量STIM_out_fields中取值“IN”的位置,撤选这个选择内的每个单元格。在这个选择内,将最左单元格设置成当前所选单元格。在这个阶段,当前选择对应于所有“OUT”单元格的集合。然后,通过加入与在当前选择上面需要的行一样多的行,扩展当前选择,以便它覆盖位于STI的顶元素和插入新元素的顶元素之间的所有元素。然后,完成传统的“向上复制”操作,以便将当前选择的最后一行的“OUT”单元格复制到上面的“OUT”单元格上。然后,通过加入与在最后选择下面需要的行一样多的行,扩展当前选择,以便它覆盖位于STI内的所有元素。然后,完成传统的“向下复制”操作,以便将当前选择的最后一行的“OUT”单元格复制到下面的“OUT”单元格上,以便当前STI的所有“OUT”单元格最终接受正确的内容。最后,将其“Address”字段752等于局部变量STI_ranger的STIT表750的记录751内的字段“Element#”754增加局部变量Nbr2。然后,将控制交给步骤1521。
●在步骤1559中,将控制交还给已经调用了创建实例元素命令的方法。
E9.RSTI插入管理器方法
用在本发明优选实施例中的通过引入新元素改变现有RSTI的方法总结在图15C的流程图1560中。可以将这种方法看作RSTI插入管理器命令的处理。
●在步骤1561中,该方法处在它的默认状态下,等待启动该进程的事件。
●在步骤1562中,作为用户动作的结果,检测RSTI插入管理器命令。
这个动作可以是,例如:
●键盘104上的特定键组合;
●定位设备105在特定按钮、菜单项或子菜单项上的点击;或
●在此未作进一步规定的任何其它类似手段。
当检测到RSTI插入管理器命令时,当前电子选择对应于可能缩减成单个单元格、称为当前所选单元格范围和包括当前所选单元格的单元格范围。如果这个当前所选单元格不是当前所选单元格范围内的左上单元格,那么,当前所选单元格范围的左上单元格成为当前所选单元格。
●在步骤1563中,初始化一些局部变量:
●局部变量csr(“当前所选范围”)是与当前所选单元格范围相对应的单元格范围。
●局部变量csrr(“当前所选范围行”)是包括在局部变量csr内的行数。
●局部变量csc(“当前所选单元格”)是与当前所选单元格相对应的单个单元格。
●局部变量cRSTITr(“当前RSTIT记录”),如果存在的话,对应于其“Address”字段2262与局部变量csc属于同一个表格的RSTIT表2260的记录2261。如果RSTIT表2260不包含“Address”字段2262与局部变量csc占据同一个表格的任何记录2261,那么,局部变量cRSTITr默认为值“void(空)”。
●局部变量rihs(“递归实例页眉尺寸”),如果局部变量cRSTITr不等于值“void”,对应于RSTIT表2260的cRSTITr记录2261的“Header Size”字段2266的值。如果局部变量cRSTITr等于值“void”,那么,局部变量rihs也默认为值“Void”。
●局部变量rifs(“递归实例页脚尺寸”),如果局部变量cRSTITr不等于值“Void”,对应于RSTIT表2260的cRSTITr记录2261的“Footer Size”字段2267的值。如果局部变量cRSTITr等于值“void”,那么,局部变量rifs也默认为值“void”。
●局部变量rir(“递归实例范围”),如果不等于“void”,是通过cRSTITr记录2261的“Address”字段2262给出地址的单元格范围2001。如果局部变量cRSTITr取值“void”,那么,局部变量rir也默认为值“Void”。
●局部变量cRSTIDT(“当前RSTIDT”),如果不是空的,是cRSTITr记录2261的“RSTIDT Ptr”字段2265所指的RSTIDT表2270。如果局部变量cRSTITr取值“Void”,那么,局部变量cRSTIDT也默认为值“void”。
●如果局部变量cRSTITr不等于“void”,用RSTI rir服从的RST的名称初始化局部变量RST_name。这个名称是通过RSTIT表2260的cRSTITr记录2261的“RST”字段2263给出的。如果局部变量cRSTITr等于“void”,那么,局部变量RST_name也默认为值“void”。
●如果局部变量cRSTITr不等于“void”,那么,如果cRSTITr记录2261的“Element#”字段2264等于其“Name”字段2222等于局部变量RST_name的记录2221的“Max Element#”字段2226,局部变量mrer(“达到的最大RE”)取值TRUE。如果局部变量cRSTITr不等于“void”,那么,如果cRSTITr记录2261的“Element#”字段2264小于其“Name”字段2222等于局部变量RST_name的记录2221的“Max Element#”字段2226,局部变量mrer取值FALSE。
●局部变量ir(“实例范围”)是,如果存在的话,对应于包含当前所选单元格csc的STI的单元格范围。如果当前所选单元格csc不属于STI,那么,局部变量ir取设置成“void”的默认值。这个局部变量ir的初始化通过比较局部变量csc的地址和STIT表750的每个记录751的“Address”字段752来确定。例如,参照图18A,如果局部变量csc对应于单元格范围2024或2022之一,局部变量ir取值“void”,和如果局部变量csc对应于单元格范围2018、2019、2020、2021、2023、或2025之一,局部变量ir对应于相应单元格范围2034、2032、2030、2031、2033、或2013。
●局部变量ccirb(“递归主体中的当前单元格”)是,如果当前所选单元格csc位于或未位于单元格范围rir2001的主体部分2003内,相应取值TRUE或FALSE的布尔变量。例如,参照图18A,如果局部变量csc对应于单元格范围2018、2020、2022、或2023之一,局部变量ccirb取值TRUE,和如果局部变量csc对应于单元格范围2019、2021、2024、或2025之一,局部变量ccirb取值FALSE。
●局部变量cRSTIDTc(“当前RSTIDT单元格”)是,如果不是空的,其“Container_range”字段2276对应于包括局部变量csc的地址的cRSTIDT表2270的单元格2272。如果局部变量cRSTIDT取值“void”,那么,局部变量cRSTIDTc也默认为值“void”。
●局部变量cRSTIDTr(“当前RSTIDT记录”)是,如果不是空的,包括cRSTIDTc单元格2272的cRSTIDT表2270的记录2271。如果局部变量cRSTIDT取值“void”,那么,局部变量cRSTIDTr也默认为值“void”。
●局部变量croc(“单元格容器范围”),如果局部变量cRSTIDTc不等于“void”,对应于cRSTIDTc单元格2272的“Container_range”字段2276。如果局部变量cRSTIDTc取值“void”,那么,局部变量croc也默认为值“void”。
●局部变量crocc(“单元格容器范围列”),如果局部变量cRSTIDTc不等于“void”,对应于cRSTIDTc单元格2272的“Container_col”字段2277。如果局部变量cRSTIDTc等于值“void”,那么,局部变量crocc也默认为值“void”。
●局部变量crocr(“单元格容器范围行”),如果局部变量cRSTIDTc不等于“void”,对应于cRSTIDTc单元格2272的“Container_row”字段2281。如果局部变量cRSTIDTc等于值“void”,那么,局部变量crocr也默认为值“void”。
●局部变量STIr(“STI行”),如果局部变量cRSTIDTc不等于“void”,对应于cRSTIDTc单元格2272的“STI_row”字段2279。如果局部变量cRSTIDTc等于值“void”,那么,局部变量STIr也默认为值“void”。
●局部变量STn(“STI名称”),如果局部变量cRSTIDTc不等于“void”,对应于cRSTIDTc单元格2272的“ST_name”字段2280。如果局部变量cRSTIDTc等于值“void”,那么,局部变量STn也默认为值“Void”。
●局部变量ccie(“元素中的当前单元格”)是当局部变量ir非空时,如果当前所选单元格csc包括或未包括在局部变量ir的主体部分内,相应取值TRUE或FALSE的布尔变量。如果局部变量ir等于“void”,那么,局部变量ccie取值FALSE。例如,参照图18A,如果局部变量csc对应于单元格范围2018、2019、2021、2023、或2025之一,局部变量ccie取值TRUE,和如果局部变量csc对应于单元格范围2020、2022、或2024之一,局部变量ccie取值FALSE。
●在步骤1564中,进行测试以确定局部变量rir是否取值“Void”。如果情况是这样,那么,将控制交给步骤1565;否则,将控制交给步骤1566。
●在步骤1565中,调用STI插入管理器命令(作为子例程)。当这个命令已完成和使控制返回到当前进程时,将控制交给最初步骤1561,以便处理任何未来的STI插入管理器命令。
●在步骤1566中,进行测试以确定局部变量csc所代表的单元格范围是否包含在局部变量rir所代表的单元格范围内。如果情况是这样,那么,将控制交给步骤1568;否则,将控制交给步骤1567。
●在步骤1567中,在禁止了污染RSTI范围rir的任何插入模式之后,遵从适合用在现有电子表格环境中的传统插入方法。像如下那样识别这些污染插入模式:
●如果单元格范围csr与单元格范围rir共享一些行,那么,禁止传统行插入方法。
●如果单元格范围csr与单元格范围rir共享一些列,那么,禁止传统列插入方法。
然后,将控制交给最初步骤1561,以便处理任何未来的STI插入管理器命令。
●在步骤1568中,进行测试以确定局部变量ccirb是否取值TRUE和局部变量mrer是否取值FLASE。如果情况是这样,那么,将控制交给步骤1569;否则,将控制交给步骤1570。
●在步骤1569中,进行测试以确定局部变量ccie是否取值TRUE。如果情况是这样,那么,将控制交给步骤1580;否则,将控制交给步骤1581。
●在步骤1570中,进行测试以确定局部变量ccie是否取值TRUE。如果情况是这样,那么,将控制交给步骤1573;否则,将控制交给步骤1571。
●在步骤1571中,发出警告消息通知,以便通知用户如果继续进行插入操作,将破坏当前RSTI。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。然后,提醒用户取消当前“Inertion”操作,或继续进行“Inertion”操作(因此,毁坏RSTI rir)。这通常可以通过在显示设备106上将提醒消息显示在弹出窗口中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在提醒消息弹出窗口内的“Cancel”或“Continue”按钮,或不偏离本发明精神的任何其它类似手段作出他的选择,如果电子表格用户的决定是取消该操作,将控制交给步骤1561,或者,如果电子表格用户的决定是继续进行该操作,将控制交给步骤1572。
●在步骤1572中,从RSTIT表2260中除去记录cRSTITr 2261。然后,将控制交给步骤1565。
●在步骤1573中,进行测试以确定局部变量csrr是否小于等于局部变量crocr与局部变量STIr之间的差值。如果情况是这样,那么,将控制交给步骤1576;否则,将控制交给步骤1574。
●在步骤1574中,将数量等于csrr-crocr+STIr的行插在与局部变量crocs相对应的单元格范围下面,以便将当前容器扩展成拥用足以使插入操作不会破坏RSTI rir的结构的行。
●在步骤1575中,更新记录cRSTIDTr 2271,以便在包括在这个记录cRSTIDTr 2271中的每个单元格2272内的字段“Container_row”2281和“Container_range”2276中反映出(在前一步骤1574中扩展了的)容器行的新尺寸。
●在步骤1576中,将位于局部变量csc所代表的单元格下面的局部变量ir所代表的单元格范围的元素和元元素向下移动等于局部变量csrr的行数。由于已经有足够多的空间可用(如在步骤1573中检验的那样),或由于已经引入了所需的空间(如行插入步骤1574完成的那样),这些移动过的元素和元元素保持在它们的单元格容器范围内。
●在步骤1577中,选择包括在局部变量ir所代表的单元格范围内、和位于局部变量csc所代表的单元格下面的行上的最左单元格。
●在步骤1578中,调用创建实例元素命令,以及设置成局部变量STn、ir和csrr的参数。当这个命令已完成和使控制还回到当前进程时,将控制交给步骤1579。
●在步骤1579中,更新单元格cRSTIDTc 2272,以便在字段“STI_row”2279中反映出局部变量ir所代表的STI的新尺寸。然后,将控制交给最初步骤1561,以便处理任何未来的RSTI插入管理器命令。
●在步骤1580中,发出提醒消息,以便通知用户可以通过将新元素插在局部变量ir所代表的当前STI中,或通过将新RE插在局部变量rir所代表的RSTI内扩展当前RSTI。这通常可以通过在显示设备106上将通知消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。然后,提醒用户指定局部变量ir所代表的STI内的RE插入操作,或指定局部变量rir所代表的RSTI内的RE插入操作。这通常可以通过在显示设备106上将提醒消息显示在弹出窗口中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在提醒消息弹出窗口内的“element”或“RE”按钮,或不偏离本发明精神的任何其它类似手段作出他的选择,如果电子表格用户的决定是将元素插在局部变量ir所代表的STI中,将控制交给步骤1573,或者,如果电子表格用户的决定是将RE插在局部变量rir所代表的RSTI内,将控制交给步骤1581。
●在步骤1581中,将数量等于局部变量crocc的值的行插在局部变量croc所代表的单元格范围的下面。
●在步骤1582中,在cRSTIDT表2270内的记录cRSTIDTr下面创建新记录nRSTIDTr2271。
●在步骤1583中,将记录cRSTIDTr复制-粘贴到新记录nRSTIDTr2271上。
●在步骤1584中,在记录nRSTIDTr2271的每个单元格2272内清除“STIT_rec_ptr”字段2282。
●在步骤1585中,在记录nRSTIDTr2271的每个单元格2272中更新字段“Container_range”2276,以反映相关容器范围的地址。
●在步骤1586中,将局部变量nRSTIDTc2272设置成等于记录nRSTIDTr2271的第1(最左)单元格。然后,将局部变量curr_cell设置成等于通过单元格nRSTIDTc2272的“Container_range”字段2276指定其地址的单元格范围的左上单元格。
●在步骤1587中,将局部变量STI_range设置成等于单元格nRSTIDTc2272的“Container_range”字段2276。将局部变量ST_name设置成等于单元格nRSTIDTc2272的“ST_name”字段2280。将局部变量STI_element设置成等于如单元格nRSTIDTc2272的“STIT_rec_ptr”字段2282所指的、STIT表750中的记录751的“Element#”字段754。
●在步骤1588中,调用例程CreateSTI。
●在步骤1589中,更新单元格nRSTIDTc2272的“STIT_rec_ptr”字段2282,以便指向作为CreateSTI例程的一部分创建的、STIT表750的新记录751(参见步骤1419)。然后,更新单元格nRSTIDTc2272的“STI_row”字段2279,以便反映出包括在CreateSTI中的行数。
●在步骤1590中,进行测试以确定单元格nRSTIDTc2272是否是记录nRSTIDTr2271的最后(最右)单元格。如果情况是这样,那么,将控制交给步骤1592;否则,将控制交给步骤1591。
●在步骤1591中,将局部变量curr_cell所代表的单元格向右移动等于单元格nRSTIDTc2272的“Container_col”字段2277的值的列数。然后,使位于单元格nRSTIDTc右边的单元格成为新单元格nRSTIDTc2272。然后,将控制交给步骤1587。
●在步骤1592中,更新记录nRSTIDTr2271,以便在字段“Element#”2264中反映出包括在局部变量rir所代表的RSTI中的RE的新增数量。然后,将控制交给最初步骤1561,以便处理任何未来的RSTI插入管理器命令。
E10.RST实例化器方法
用在本发明优选实施例中的实例化RST的方法总结在图19A和19B的流程图2100中。可以将这种方法看作RST实例化器命令的处理。
●在步骤2101中,该方法处在它的默认状态下,等待启动该进程的事件。
●在步骤2102中,作为用户动作的结果,检测RST实例化器命令。这个动作可以是,例如,键盘104上的特定键组合,定位设备105在特定按钮上的点击,或本文未作进一步规定的任何其它类似手段。
●在步骤2103中,检索命令参数和初始化一些局部变量:
●将命令参数记录在RST_name变量中。
●用值0(零)初始化局部变量Element#。
●用默认值FLASE初始化局部变量too_wide。
●用默认值FLASE值初始化局部变量too_high。
●用表格上的最大可用列数初始化局部变量Max_col。
●用表格上的最大可用行数初始化局部变量Max_row。
●用默认值FLASE值初始化局部变量STI_present。
●用默认值FLASE值初始化局部变量RSTI_busy。
●将局部变量RSTI_top_left_cell初始化成当前所选单元格。
●在步骤2104中,分析RSTT表2220,以便识别“Name”字段2222等于命令参数RST_name的记录2221(由局部变量Curr_RSTT_rec标识)。然后,将局部变量RSTI_E#设置成等于这个记录Curr_RSTT_rec2221的“Min Element#”字段2225的值。
●在步骤2105中,将局部变量Curr_RSTDT设置成等于记录Curr_RSTT_rec 2221的“Description Ptr”字段2224所指的RSTDT表2250。然后,将局部变量Curr_RSTDT_rec设置成等于Curr_RSTDT表2250的第1单单元格记录2251。然后,将局部变量Curr_RET_rec设置成等于“Name”字段2212等于局部变量Curr_RSTDT_rec、RET表2210的记录2211。然后,将局部变量Curr_RED_RoC设置成等于记录Curr_RET_rec 2211的“Description Ptr”字段2214所指的单元格范围。
●在步骤2106中,将RSTIDT表2270装入存储器中和通过局部变量CurrRSTIDT命名它。这个表格具有等于Curr_RSTDT表2250的行数加局部变量RSTI_E#的值减1(一)的行数。这个表格具有等于Curr_RED_RoC的列数的列数。然后,将局部变量Curr_RSTIDT_rec初始化成Curr_RSTIDT表2270的第1记录2271。
●在步骤2107中,将局部变量Curr_RSTIDT_cell初始化成Curr_RSTIDTrec 2271的第1单元格2280。然后,将局部变量Curr_REC_Roc_cell初始化成Curr_REC_Roc单元格范围的第1单元格。
●在步骤2108中,将Curr_RSTIDT_cell 2280的“STI_col”字段2278设置成等于当用等于局部变量Curr_REC_Roc_cell的值的唯一参数调用时,函数STI_col返回的值。然后,将Curr_RSTIDT_cell 2280的“STI_row”字段2279设置成等于当用分别等于局部变量Curr_REC_Roc_cell的值和0(零)的两个参数调用时,函数STI_row返回的值。然后,将Curr_RSTIDT_cell 2280的“ST_name”字段2280设置成等于局部变量Curr_REC_Roc_cell的值。
●在步骤2109中,进行测试以检验局部变量Curr_RSTIDT_cell 2280所代表的单元格是否是局部变量Curr_RSTIDT_rec 2271所代表的记录的最后一个单元格。如果情况是这样,那么,将控制交给步骤2111;否则,将控制交给步骤2110。
●在步骤2110中,使位于局部变量Curr_RSTIDT_cell 2280所代表的单元格右边的单元格成为新Curr_RSTIDT_cell 2280。然后,使位于局部变量Curr_RET_RoC_cell所代表的单元格右边的单元格成为新Curr_RET_RoC_cell。然后,将控制交给步骤2108。
●在步骤2111中,进行测试以检验局部变量Curr_RET_rec 2211所代表的记录是否是描述RE的局部变量Curr_RET_rec 2211。如果Curr_RET_rec记录2211的“Type”字段2217的“META”属性2218等于值“NO”,就可以确定它。如果情况是这样,那么,将控制交给步骤2112;否则,将控制交给步骤2114。
●在步骤2112中,将局部变量Element#加1(一)。
●在步骤2113中,进行测试以确定局部变量E1ement#是否等于局部变量RSTI_E#。如果情况是这样,那么,将控制交给步骤2114;否则,将控制交给步骤2115。
●在步骤2114中,进行测试以检验局部变量Curr_RSTIDT_cell 2280所代表的单元格是否是Curr_RSTIDT_rec 2271所代表的记录的最后一个单元格。如果情况是这样,那么,将控制交给步骤2116;否则,将控制交给步骤2117。
●在步骤2115中,使Curr_RSTIDT表2270中接在Curr_RSTIDT_rec记录2271之后的记录成为新Curr_RSTIDT_rec记录2271。那么,将控制交给步骤2107。
●在步骤2116中,使Curr_RSTIDT表2270中接在Curr_RSTIDT_rec记录之后的记录成为新Curr_RSTIDT_rec记录。那么,将控制交给步骤2115。
●在步骤2117中,对于属于Curr_RSTIDT表2270的每个单元格Curr_RSTIDT_cell 2280,将“container_row”属性2281设置成等于位于Curr_RSTIDT表2270内与Curr_RSTIDT_cell同一行上的单元格Same_row_cell的“STI_row”属性2279的最大值。然后,对于属于Curr_RSTIDT表2270的每个单元格Curr_RSTIDT_cell 2280,将“container_col”属性2277设置成等于位于Curr_RSTIDT表2270内与Curr_RSTIDT_cell同一列上的单元格Same_col_cell的“STI_col”属性2278的最大值。
●在步骤2118中,将局部变量RSTI_col设置成等于属于Curr_RSTIDT表2270的第1行的单元格的“container_col”属性2277之和。然后,将局部变量RSTI_row设置成等于属于Curr_RSTIDT表2270的第1列的单元格的“container_row”属性2281之和。
●在步骤2119中,进行测试以确定局部变量RSTI_col与单独单元格RSTI_top_left_cell的行指标之和减去1(一)是否严格大于局部变量Max_col。如果情况是这样,那么,将控制交给步骤2120;否则,将控制交给步骤2121。
●在步骤2120中,将局部变量too_wide设置成等于值TRUE。
●在步骤2121中,进行测试以确定局部变量RSTI_row与单独单元格RSTI_top_left_cell的列指标之和减去1(一)是否严格大于局部变量Max_row。如果情况是这样,那么,将控制交给步骤2122;否则,将控制交给步骤2123。
●在步骤2122中,将局部变量too_high设置成等于值TRUE。
●在步骤2123中,进行测试以确定是否存在与单独单元格RSTIcell出现在相同表格上的现有STI。这个测试可以简单地通过分析STIT表750,以便用指向与单独单元格RSTI_top_left_cell相同的表格的“Address”字段752识别任何记录751来完成。如果情况是这样,那么,将控制交给步骤2124;否则,将控制交给步骤2125。
●在步骤2124中,将局部变量STI_present设置成等于值TRUE。
●在步骤2125中,将局部变量STI_range初始化成RSTI_top_left_cell作为左上单元格、行数等于局部变量RSTI_row的值、和列数等于局部变量RSTI_col的值的单元格范围。
●在步骤2126中,进行测试以检验是否存在出现在单元格范围RSTI_range内的数据。如果情况是这样,将控制交给步骤2127;否则,将控制交给步骤2128。
●在步骤2127中,将局部变量RSTI_busy设置成等于值TRUE。
●在步骤2128中,在显示设备106上显示RST实例化器对话框2300。在这个对话框2300内,将局部变量RST_name的值填入文本字段2302,将局部变量RSTI_E#的值填入文本字段2311,将局部变量too_wide的值填入文本字段2304,将局部变量too_high的值填入文本字段2305,将局部变量STI_present的值填入文本字段2306,和将局部变量RSTI_busy的值填入文本字段2307。当且仅当三个局部变量too_wide、too_high和STI_present取相同值FALSE,使能“Create Instance”按钮2310。当且仅当两个局部变量too_wide和too_high取相同值FALSE,使能“Create Instance in a new sheet”按钮2309。
●在步骤2129中,该方法等于RST实例化器对话框2300上的任何用户动作。这样的用户动作通常来自用定位设备105的点击,但也可以采取其它类似形式,譬如,键盘104上的特定键组合(但不限于此),或本文未作进一步规定的任何其它类似手段。
●在步骤2130中,检测RST实例化器对话框2300上的用户动作。
●如果用户动作是用定位设备105点击旋钮2303的“Up”箭头上,那么,将控制交给步骤2133。
●如果用户动作是用定位设备105点击旋钮2303的“Down”箭头上,那么,将控制交给步骤2134。
●如果用户动作是用定位设备105点击“Create Instance”按钮2310,那么,将控制交给步骤2138。
●如果用户动作是用定位设备105点击“Create Instance in a newsheet”按钮2309,那么,将控制交给步骤2136。
●如果用户动作是用定位设备105点击“Cancel”按钮2308或关闭窗口按钮2301,那么,将控制交给步骤2131。
●在步骤2131中,从存储器中释放单元格范围Curr_RSTIDT。
●在步骤2132中,在显示设备106上关闭RST实例化器对话框2300,然后,将控制交还给最初步骤2101,以便处理任何未来的RST实例化器命令。
●在步骤2133中,将局部变量RSTI_E#加1(一)。
●在步骤2134中,将局部变量RSTI_E#减1(一)。
●在步骤2135中,从存储器中释放单元格范围Curr_RSTIDT。那么,将控制交给步骤2105。
●在步骤2136中,创建新表格和将其命名为curr_sheet。
●在步骤2137中,使表格curr_sheet的左上单元格成为新单独单元格RSTI_top_left_cell。
●在步骤2138中,用值OVERLAY初始化局部变量STI_mode。然后,用值YES初始化局部变量STI_critical。然后,将局部变量Curr_RSTIDT_rec初始化成Curr_RSTIDT表2270的第1记录2271。然后,将局部变量Curr_RSTIDT_cell初始化成记录Curr_RSTIDT_rec2271的第1单元格2280。然后,将局部变量Curr_cell初始化成等于RSTI_top_left_cell。
●在步骤2139中,将Curr_RSTIDT_cell 2280的“container_range”属性2276初始化成单独单元格Curr_cell作为左上单元格、行数等于“con-tainer_row”属性2281的值、列数等于“container_col”属性2277的值的单元格范围。
●在步骤2140中,将局部变量STI_range设置成等于Curr_RSTIDT_cell2280的“container_range”属性2276。然后,将局部变量ST_name设置成等于Curr_RSTIDT_cell 2280的“ST_name”属性2280。然后,将局部变量ST_element设置成等于“Name”字段722等于ST_name的STT表720的记录721的“Min Element#”属性2225。
●在步骤2141中,调用CreateSTI命令(作为一个子例程)。当这个命令已完成和使控制返回到当前进程时,将控制交给步骤2142。
●在步骤2142中,将Curr_RSTIDT_cell 2280的“STIT_rec_ptr”设置成指向刚刚在前一步骤2141期间创建的STIT记录751。
●在步骤2143中,进行测试以检验局部变量Curr_RSTIDT_cell 2280所代表的单元格是否是局部变量Curr_RSTIDT_rec 2271所代表的记录的最后一个单元格。如果情况是这样,那么,将控制交给步骤2143;否则,将控制交给步骤2144。
●在步骤2144中,将单独单元格curr_cell向右移动等于Curr_RSTIDT_cell 2280的“container_col”属性2277的值的列数。然后,使位于单独单元格Curr_RSTIDT_cell 2280右边的单元格成为新Curr_RSTIDT_cell2280。
●在步骤2145中,进行测试以检验局部变量Curr_RSTIDT_rec 227l所代表的记录是否是局部变量Curr_RSTIDT 2270所代表的RSTIDT表的最后一个记录。如果情况是这样,那么,将控制交给步骤2147;否则,将控制交给步骤2146。
●在步骤2146中,将单独单元格RST_top_left_cell向下移动等于Curr_RSTIDT_cell 2280的“container_row”属性2281的值的行数。然后,将单独单元格curr_cell设置成等于单独单元格RSTI_top_left_cell。然后,使Curr_RSTIDT 2270中接在Curr_RSTIDT_rec之后的记录2271成为新Curr_RSTIDT_rec 2271。然后,使Curr_RSTIDT_rec 2271的第1单元格成为新单独单元格Curr_RSTIDT_cell 2280。
●在步骤2147中,在RSTIT表2260中创建新记录2261,以便描述刚刚创建的RSTI。将rir单元格范围2001的地址填入“Address”字段2262。将局部变量RST_name填入“RST”字段2263。将局部变量Element#填入“Element#”字段2264。将局部变量Curr_RSTIDT填入“RSTIDT Ptr”字段2265。将构成RSTI页眉2002的容器行的行数填入“Header Size”字段2266。将构成RSTI页脚2204的容器行的行数填入“Footer Size”字段2267。然后,扫描RSTT表2220,以便识别发现“Name”字段2222等于局部变量RST_name的记录2221。一旦找到,通过将“INSTANCEREFERENCE”子字段2229c乘以2(二),更新这个记录2221的“Type”字段2227内的“REFERENCED”属性2229。然后,将控制交给步骤2132。
E11.RE编辑器方法
用在本发明优选实施例中的创建或更新RE或元元素的方法总结在图21C的流程图2340中。可以将这种方法看作RE编辑器命令的处理。
●在步骤2341中,该方法处在它的默认状态下,等待启动该进程的事件。
●在步骤2342中,作为用户动作的结果,检测RE编辑器命令。这个动作可以是,例如:
●键盘104上的特定键组合;
●定位设备105在特定按钮上的点击;或
●在此本文未作进一步规定的任何其它类似手段。
●在步骤2343中,检索命令的参数。它对应于必有参数RE_name,该参数可以取保留值“NEW”,或与如在RSTMT表2230内的记录2231的“Name”字段2232中找到那样的字符串名称相对应的另一个值。将这个参数记录成局部变量。
●在步骤2344中,初始化一些局部变量:将局部变量RE_meta设置成值“NO”,将局部变量RE_size设置成值3(三),和将局部变量RE_rank设置成值1(一)。
●在步骤2345中,进行测试以确定局部变量RE_name所取的值。如果发现等于“NEW”,那么,将控制交给步骤2349;否则,将控制交给步骤2346。
●在步骤2346中,查找RET表2210,以定位发现其“Name”字段2223等于局部变量RE_name所取的值的记录2211。如果找到这样的记录,那么,将控制交给步骤2348;否则,将控制交给步骤2347。
●在步骤2347中,调用异常管理器,以处理这种“不该发生”状况。这样的操作是实现相关的,可以采取不同的形式,譬如,在显示设备106上显示错误消息弹出窗口。然后,将控制交给步骤2341。
●在步骤2348中,
●根据在步骤2346中找到的记录2211的“Type”字段2217内“META”属性2218的值,将局部变量RE_meta设置成值“YES”或“NO”;
●将局部变量RE_size设置成在在步骤2346中找到的记录2211的“Column#”字段2216中找到的值;和
●将在步骤2346中找到的记录2211的“Description Ptr”字段2214所指的存储单元复制到记录成局部变量RE_buffer的临时缓冲区上。然后,将控制交给步骤2350。
●在步骤2349中,根据在本发明的优选实施例中采取“New XX”形式的名称字符串,确定新创建RE的新名称,其中,XX对应于对于以前定义和记录在在各自表格EFT700、EPT710、STT720、RET2210和RSST2220的各自记录701、711、721、2211和2221中找到的“Name”字段702、712、722、2212和2222中的所有名称,保证名称唯一性的计数。只要保证新创建名称的唯一性,可以改用任何其它类似传统手段而不偏移本发明的精神。然后,将新名称记录在局部变量RE_name中。然后,在主存储器102内分配存储空间,以便以后记录新RE或RME的例示单元格范围。这个记录成局部变量RE_buffer的分配存储空间是与当前打开的电子表格文件相对应的存储空间的一部分。然后,在RET表2210中创建新记录2211,和按如下初始化这个新记录2211:
●将“Name”字段2212设置成局部变量RE_name的值;
●将“Last Change Date”字段2213设置成如中央处理器101所知的系统引用时间;
●将“Description Ptr”字段2214设置成刚刚分配的存储单元REbuffer;
●将“Row#”字段2215设置成值1(因为在本发明的优选实施例中,在2D环境下管理RST;在3D环境下,这个字段将携带为创建的RE定义的行数);
●将“Column#”字段2216设置成局部变量RE_size的值;和
●按如下设置“Type”字段2217:将属性“META”2218设置成等于局部变量RE_meta的值,和按如下初始化属性“REFERENCED”2219:
●用还没有指定给任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的质数初始化OR子字段2219a。各种各样的传统技术可以用于识别质数,这里不作进一步详述。
●根据如下公式初始化“FILIATION REFERENCE”(FR)子字段2219b,其中,根据记录在“Description Ptr”字段2214中的结构,F集合对应于构成新RE或元元素的ST的集合:
FR=∏i∈FORi×LCM({FRi})i∈F
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段2219c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段2219d。其中,P集合对应于RST的集合:
如果LCM({FRi})i∈PMod OR=0,RO=“YES”;
否则,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段2219e。其中,S集合对应于所选对象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR#RE_name∈S,
SC=“YES”;
否则,SC=“NO”。
然后,将控制交给步骤2350。
●在步骤2350中,在显示设备106上显示RE编辑器对话框2321。
●用局部变量RE_name的值初始化标记框2324。
●如果发现局部变量RE_meta等于“NO”(相应地,“YES”),将黑点填入顶部选项按钮2331(相应地,底部选项按钮2330)。
●将局部变量RE_size的值填入文本框2326。
●如果发现局部变量RE_size等于当前记录2211的“Column#”字段2216,或如果发现这个记录2211的“Type”字段2217内的属性“REFERENCED”2219拥有等于“NO”的子字段“REFERENCEDOBJECT”2219d(RO),使能按钮“Save”2333,以便将来用定位设备105对这个按钮“Save”2333的任何点击都被识别为一个有效事件。
●否则(未发现局部变量RE_size等于当前记录2211的“Column#”字段2216,或发现这同一个记录2211的“Type”字段2217内的属性“REFERENCED”2219拥有等于“YES”的子字段“REFERENCEDOBJECT”2219d(RO),禁止按钮“Save”2333,以便将来用定位设备105对这个按钮“Save”2333的任何点击都不被识别为一个有效事件。
●用局部变量RE_rank的值初始化文本框2335。
●用属于RE_buffer和其偏移等于RE_rank的单元格的内容初始化列表框2334。在这个列表框2334中可用的名称的列表(通过点击旋钮2328)由记录在STT表720中的ST的名称构成。
●在步骤2351中,该方法等待RE编辑器对话框2321上的任何用户动作。这样的用户动作通常来自用定位设备105的点击,但也可以采取其它类似形式,譬如,键盘104上的特定键组合(但不限于此),或本文未作进一步规定的任何其它类似手段。
●在步骤2352中,检测RE编辑器对话框2321上的用户动作。
●如果用户动作是点击旋钮2328,以便选择ST名称,那么,将控制交给步骤2353;
●如果用户动作是点击按钮“Save”2333,那么,将控制交给步骤2354;
●如果用户动作是点击按钮“Save as”2332,那么,将控制交给步骤2355;
●如果用户动作是点击旋钮2329,那么,将控制交给步骤2358;
●如果用户动作是点击旋钮2327,那么,将控制交给步骤2359;
●如果用户动作是点击两个选项按钮2330或2331之一,那么,将控制交给步骤2360;
●如果用户动作是点击按钮“Done”2323或关闭窗口按钮2322,那么,将控制交给步骤2361。
●在步骤2353中,通过将偏移等于局部变量RE_rank的值的单元格的内容设置成等于列表框2334的内容,更新局部变量RE_buffer。然后,将控制交给步骤2350。
●在步骤2354中,通过刷新“Name”字段2212等于局部变量RE_name的记录2211,更新SET表2210,和将它保存成电子表格文件的一部分。为了这个目的,
●将“Last Change Date”字段2213设置成如中央处理器101所知的系统引用时间;
●将“Column#”字段2216设置成局部变量RE_size的值;和
●按如下设置“Type”字段2217:将属性“META”2218设置成等于局部变量RE_meta的值。
另外,将例示RE或元元素的当前定义的单元格范围RE_buffer复制到“Description Ptr”字段2214所指的存储单元上。然后,将控制交给步骤2350。
●在步骤2355中,对在文本框2325中找到的值进行测试,以确定它是否对应于有效新名称。相应准则是实现相关的,只要新推荐名称相对于记录在“Name”字段702、712、722、2212和2222中的所有已定义名称是唯一字符串,可以采取不同形式而不偏离本发明的精神。如果有效性和唯一性都得到证明,那么,将控制交给步骤2356;否则,将控制交给步骤2357。
●在步骤2356中,在主存储器102内分配存储空间,以便以后记录EF或MEF的例示单元格范围。这个分配的存储空间是与当前打开的电子表格文件相对应的存储空间的一部分。然后,在保存成电子表格文件的一部分的RET表2210中创建新记录2211,和按如下初始化这个新记录2211:
●将“Name”字段2212设置成在文本框2325中找到和在步骤2355中得到核实的值;
●将“Last Change Date”字段2213设置成如中央处理器101所知的系统引用时间;
●将“Description Ptr”字段724设置成刚刚分配的存储单元;
●将“Row#”字段2215设置成值1(因为在本发明的优选实施例中,在2D环境下管理RST;在3D环境下,这个字段将携带为创建的RE定义的行数);
●将“Column#”字段2216设置成局部变量RE_size的值;和
●按如下设置“Type”字段2217:将属性“META”2218设置成等于局部变量RE_meta的值,和按如下初始化属性“REFERENCED”2219:
●用还没有指定给任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的质数初始化OR子字段2219a。各种各样的传统技术可以用于识别质数,这里不作进一步详述。
●根据如下公式初始化“FILIATION REFERENCE”(FR)子字段2219b,其中,根据记录在“Description Ptr”字段2214中的结构,F集合对应于构成新RE或元元素的ST的集合:
FR=∏i∈FORi×LCM({FRi})i∈F
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段2219c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段2219d。其中,P集合对应于RST的集合:
如果LCM({FRi})i∈PMod OR=0,RO=“YES”;
否则,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段2219e。其中,S集合对应于所选对象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”属性2242):
如果LCM({FRi})i∈SMod OR=0# OR#RE_name∈S,
SC=“YES”;
否则,SC=“NO”。
然后,将控制交给步骤2350。
●在步骤2357中,发出警告消息通知,以便通知用户在点击“Save as”按钮2332之前,必须在文本框2325中指定有效唯一的名称。这通常可以通过在显示设备106上将警告消息显示在弹出窗口中或显示在状态栏区域中来完成,但也可以改用任何其它类似手段而不偏离本发明的精神。一旦用户通过传统手段,譬如,用定位设备105点击出现在警告消息弹出窗口内的“OK”按钮,或不偏离本发明精神的任何其它类似手段确认了这个通知消息,将控制交给步骤2350。
●在步骤2358中,如果用户用定位设备106点击了旋钮2329的向下这一侧,只要局部变量RE_rank严格保持正的,将它减1(一),和如果用户用定位设备106点击了旋钮2329的向上这一侧,只要局部变量RE_rank小于等于局部变量RE_size的值,将它加1(一)。然后,将控制交给步骤2350。
●在步骤2359中,根据定位设备105在旋钮2359上指定的方向(向上或向下),和只要其值保持正的,和小于等于在本发明的优选实施例中设置成等于254的上限,将局部变量RE_size加1(一)或减1(一)。然后,将控制交给步骤2350。
●在步骤2360中,更新局部变量RE_meta,以便如果已经点击了底部选项按钮2330(相应地,顶部选项按钮2331),使它的值变成“YES”,(相应地,“NO”)。然后,将控制交给步骤2350。
●在步骤2361中,关闭RE编辑器对话框2321,以便它从显示设备106上消失。最后,将控制交还给最初步骤2341,以便处理任何未来的ST编辑器命令。
E12.STI列/行计数器方法
用在本发明优选实施例中的计数STI内的列数或行数的方法总结在图22A和22B的流程图2400和2420中。可以将这些方法看作STI_Row和STI_col函数的处理。
●在步骤2401中,第一方法处在它的默认状态下,等待对STI_Row函数的调用。
●在步骤2402中,作为用户动作的结果,检测STI_Row函数调用。该函数用名为ST_Name和STI_Element的两个参数调用。
●在步骤2403中,将STT表720的第1记录721设置成Curr_Record。
●在步骤2404中,将记录Curr_Record 721的字段Name 722、Min Element#、和Max Element#分别设置成局部变量Curr_Name、Curr_Min和Curr_Max。
●在步骤2405中,进行测试以检测局部变量Curr_Name是否等于函数参数ST_Name。如果情况是这样,那么,将控制交给步骤2409;否则,将控制交给步骤2406。
●在步骤2406中,进行测试以检测记录Curr_Record 721是否是STT表720的最后一个记录。如果情况是这样,那么,将控制交给步骤2408;否则,将控制交给步骤2407。
●在步骤2407中,使STT表720中接在Curr_Record之后的记录成为新记录Curr_Record 721。然后,将控制交给步骤2404。
●在步骤2408中,将局部变量STI_Row设置成等于0(零)。然后,将控制交给步骤2412。
●在步骤2409中,将记录Curr_Record 721的description Ptr 724所指的单元格范围设置成STDT_address。
●在步骤2410中,将局部变量Element_Nbr设置成等于以局部变量Curr_Max为上界、以局部变量Curr_Min为下界的输入参数STI_Element。
●在步骤2411中,将局部变量STI_row设置成等于单元格范围STDT_add-ress的行数加局部变量STI_Element的值减1(一)。
●在步骤2412中,随着控制返回到函数调用程序完成STI_row函数的执行。
●在步骤2421中,第二方法处在它的默认状态下,等待对STI_Col函数的调用。
●在步骤2422中,作为用户动作的结果,检测STI_Col函数调用。该函数用名为ST_Name的一个参数调用。
●在步骤2423中,将STT表720的第1记录721设置成Curr_Record。
●在步骤2424中,将记录Curr_Record 721的字段Name 722设置成局部变量Curr_Name。
●在步骤2425中,进行测试以检测局部变量Curr_Name是否等于函数参数ST_Name。如果情况是这样,那么,将控制交给步骤2429;否则,将控制交给步骤2426。
●在步骤2426中,进行测试以检测记录Curr_Record 721是否是STT表720的最后一个记录。如果情况是这样,那么,将控制交给步骤2428;否则,将控制交给步骤2427。
●在步骤2427中,使STT表720中接在Curr_Record之后的记录成为新记录Curr_Record 721。然后,将控制交给步骤2424。
●在步骤2428中,将局部变量STI_Col设置成等于0(零)。然后,将控制交给步骤2431。
●在步骤2429中,将记录Curr_Record 721的description Ptr 724所指的单元格范围设置成STDT_address。
●在步骤2430中,将局部变量STI_Col设置成等于单元格范围STDT_add-ress的列数。
●在步骤2431中,随着控制返回到函数调用程序完成STI_col函数的执行。
可替代实施例
根据本发明的方法和系统可以有利地应用在将信息元素组织成垂直构造的两维表的那些环境中。根据本发明的方法和系统可以有利地应用在将信息元素组织成多于两维的多维表的那些环境中。虽然通过参照优选实施例具体显示和描述了本发明,但本领域的普通技术人员应该明白,可以在形式和详细上作出各种各样的改变而不偏移本发明的精神和范围。
Claims (13)
1.一种在包括多个数据的多维电子数据表中管理递归可缩放模板实例中的插入操作的方法;递归可缩放模板实例包括沿着第一数据表维排序和对齐并根据递归可缩放模板构造的可变数量个相邻递归元素实例;所述递归可缩放模板包含递归元素,该递归元素包括一个或多个可缩放模板;每个递归元素实例沿着所述第一数据表维具有可变尺寸和沿着第二数据表维具有相同尺寸;递归元素实例包括一个或多个可缩放模板实例;每个递归元素实例的每个可缩放模板实例沿着所述第一数据表维对齐;每个递归元素实例内的每个可缩放模板实例沿着第二数据表维对齐;可缩放模板实例包括根据可缩放模板构造的可变数量个元素;元素被定义成数据范围;数据范围包括一个或多个数据;该方法包括如下步骤:
·检测用于在递归元素实例的可缩放模板实例中将一个或多个相邻元素插在所选元素之后或之前的插入命令;
·识别:
·其中要插入所述一个或多个元素的可缩放模板实例;
·可缩放模板实例中的其之后或之前必须要插入一个或多个元素的所选元素;
·与所述可缩放模板实例相关联的可缩放模板;
·识别:
·递归可缩放模板实例和包括所识别的可缩放模板实例的递归元素实例;
·在所识别的可缩放模板实例中,把根据与所述可缩放模板实例相关联的可缩放模板构造的一个或多个元素插在所述所选元素之后或之前;
·根据所述递归元素实例中的最大可缩放模板实例的尺寸,沿着所述第一数据表维,调整所识别的递归元素实例的尺寸,所识别的递归可缩放模板实例的所有递归元素实例保持相邻而不重叠。
2.根据前一项权利要求所述的方法,其中,所述递归可缩放模板实例还包括页眉部分和/或页脚部分;递归可缩放模板的页眉部分包括预定数量个递归元元素;递归可缩放模板的页脚部分包括预定数量个递归元元素;递归元元素包括一个或多个可缩放模板;所述方法还包括如下步骤:
·检测用于在递归元元素实例的可缩放模板实例中,将一个或多个相邻元素插在所选元素之后或之前的插入命令;
·识别:
·要插入所述一个或多个元素的可缩放模板实例;
·可缩放模板实例中的其之后或之前必须要插入一个或多个元素的所选元素;
·与所述可缩放模板实例相关联的可缩放模板;
·识别:
·递归可缩放模板实例和包括所识别的可缩放模板实例的递归元元素实例;
·在所识别的可缩放模板实例中,将根据与所述可缩放模板实例相关联的可缩放模板构造的一个或多个元素插在所述所选元素之后或之前;
·根据所述递归元元素实例的最大可缩放模板实例的尺寸,沿着所述第一数据表维,调整所识别的递归元元素实例的尺寸,所识别的递归可缩放模板实例的所有递归元素实例和递归元元素实例保持相邻而不重叠。
3.根据前述权利要求中的任何一项所述的方法,还包括如下步骤:
·检测用于在递归可缩放模板实例中,将一个或多个相邻递归元素实例插在所选递归元素实例之后或之前的插入命令;
·识别:
·要插入所述一个或多个递归元素实例的递归可缩放模板实例;
·递归可缩放模板实例中的其之后或之前必须要插入一个或多个递归元素实例的所选递归元素实例;
·与所述递归可缩放模板实例相关联的递归可缩放模板;
·在递归可缩放模板实例中,将一个或多个相邻递归元素实例插在所述所选递归元素实例之后或之前;
·沿着第一数据表维将一个或多个所插入的递归元素实例与已经存在的一个或多个递归元素实例对齐;所述将一个或多个所插入的递归元素实例沿着第二数据表维具有与已经存在的一个或多个递归元素实例相同的尺寸;
·根据为所识别的递归可缩放模板定义的递归元素构造每个所插入的递归元素实例。
4.根据前一项权利要求所述的方法,还包括如下步骤:
·沿着所述第一数据表维对齐每个所插入的递归元素实例的每个可缩放模板实例;
·在每个所插入的递归元素实例内,沿着所述第二数据表维对齐每个可缩放模板实例。
5.根据前述权利要求中的任何一项所述的方法,其中,在递归可缩放模板实例中,将一个或多个相邻元素插入可缩放模板实例中,或插入一个或多个相邻递归元素实例的所述步骤还包括如下步骤:
·确定该插入是否破坏了数据表中的任何其它现有递归可缩放模板实例,递归可缩放模板实例是在不再根据所相关的递归可缩放模板构造递归元素实例的时候被破坏的。
6.根据前一项权利要求所述的方法,其中,确定所述插入是否破坏了所述数据表中的任何其它现有递归可缩放模板实例的所述步骤还包括如下步骤:
·如果所述插入破坏了被定义成关键性实例的任何递归可缩放模板实例,则取消该插入。
7.根据前一项权利要求所述的方法,对于每个递归可缩放模板实例,包括如下步骤:
·将所述一个或多个递归可缩放模板实例的每一个定义成关键性实例或非关键性实例。
8.根据前述权利要求中的任何一项所述的方法,其中,在递归可缩放模板实例中,将一个或多个相邻元素插入可缩放模板实例中的步骤,或插入一个或多个相邻递归元素实例的所述步骤还包括如下步骤:
·确定该插入是否破坏了数据表中的任何其它现有递归可缩放模板实例,当递归元素不再根据所相关的可缩放模板构造时,递归可缩放模板实例被破坏。
9.根据前一项权利要求所述的方法,其中,确定插入是否破坏了数据表中的任何其它现有可缩放模板实例的所述步骤还包括如下步骤:
·如果插入破坏了被定义成关键性实例的任何可缩放模板实例,则取消该插入。
10.根据前述权利要求中的任何一项所述的方法,其中,所述多维电子数据表是包括通过沿着每一维的单元格地址标识的多个单元格的电子表格。
11.根据前一项权利要求所述的方法,其中,可缩放模板实例包括沿着给定电子表格维排序和对齐并根据可缩放模板构造的尺寸相同的可变数量个相邻元素;元素被定义成单元格范围;所述可缩放模板包括元素格式和/或元素概要;元素格式为每个元素内的每个单元格定义一个或多个格式属性;元素概要为每个元素内的每个单元格定义单元格内容和单元格目的地;所述单元格目的地规定单元格是接受条目的输入单元格还是生成结果的输出单元格。
12.一种包括适合实现根据前面权利要求的任何一项所述的方法的步骤的装置的系统。
13.一种计算机程序,包括当所述计算机程序被执行时,用于实现根据权利要求1到11中的任何一项所述的方法的步骤的指令。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP03368038.0 | 2003-04-18 | ||
| EP03368038 | 2003-04-18 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN1774712A true CN1774712A (zh) | 2006-05-17 |
| CN100378723C CN100378723C (zh) | 2008-04-02 |
Family
ID=33186005
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CNB2004800103996A Expired - Fee Related CN100378723C (zh) | 2003-04-18 | 2004-02-27 | 在数据表中管理递归可缩放模板实例中的插入操作的系统和方法 |
Country Status (6)
| Country | Link |
|---|---|
| US (1) | US7487437B2 (zh) |
| EP (1) | EP1618488B1 (zh) |
| CN (1) | CN100378723C (zh) |
| AT (1) | ATE344946T1 (zh) |
| DE (1) | DE602004003139T2 (zh) |
| WO (1) | WO2004092974A2 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109388310A (zh) * | 2010-04-22 | 2019-02-26 | 三星电子株式会社 | 用于在移动终端中显示文本信息的方法和设备 |
Families Citing this family (25)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7412481B2 (en) | 2002-09-16 | 2008-08-12 | Oracle International Corporation | Method and apparatus for distributed rule evaluation in a near real-time business intelligence system |
| US7912899B2 (en) * | 2002-09-06 | 2011-03-22 | Oracle International Corporation | Method for selectively sending a notification to an instant messaging device |
| US8255454B2 (en) * | 2002-09-06 | 2012-08-28 | Oracle International Corporation | Method and apparatus for a multiplexed active data window in a near real-time business intelligence system |
| US7899879B2 (en) * | 2002-09-06 | 2011-03-01 | Oracle International Corporation | Method and apparatus for a report cache in a near real-time business intelligence system |
| US7941542B2 (en) * | 2002-09-06 | 2011-05-10 | Oracle International Corporation | Methods and apparatus for maintaining application execution over an intermittent network connection |
| US8165993B2 (en) * | 2002-09-06 | 2012-04-24 | Oracle International Corporation | Business intelligence system with interface that provides for immediate user action |
| US7945846B2 (en) * | 2002-09-06 | 2011-05-17 | Oracle International Corporation | Application-specific personalization for data display |
| US7668917B2 (en) * | 2002-09-16 | 2010-02-23 | Oracle International Corporation | Method and apparatus for ensuring accountability in the examination of a set of data elements by a user |
| US7401158B2 (en) * | 2002-09-16 | 2008-07-15 | Oracle International Corporation | Apparatus and method for instant messaging collaboration |
| US7904823B2 (en) * | 2003-03-17 | 2011-03-08 | Oracle International Corporation | Transparent windows methods and apparatus therefor |
| US8621385B2 (en) | 2004-05-21 | 2013-12-31 | Sap Ag | System and method for controlling a display of data |
| WO2006095365A2 (en) * | 2005-03-11 | 2006-09-14 | Suresh Sambandam | A system and method of defining a hierarchical datamodel and related computation and instruction rules using spreadsheet like user interface |
| US20070050471A1 (en) * | 2005-08-31 | 2007-03-01 | Microsoft Corporation | Portable Remoting Component With A Scaleable Feature Set |
| US8286089B2 (en) * | 2005-12-30 | 2012-10-09 | Research In Motion Limited | Representing new messages on a communication device |
| US7965275B1 (en) * | 2006-01-13 | 2011-06-21 | Intuit Inc. | User interface for lenient exception feedback |
| US20090049375A1 (en) * | 2007-08-18 | 2009-02-19 | Talario, Llc | Selective processing of information from a digital copy of a document for data entry |
| US20100198823A1 (en) * | 2009-02-05 | 2010-08-05 | Tsoukalas Kathleen J | Systems and methods to automatically generate enhanced information associated with a selected web table |
| US8707156B2 (en) * | 2009-04-02 | 2014-04-22 | Business Objects, S.A. | Render engine for spreadsheet |
| US9275031B2 (en) * | 2009-10-09 | 2016-03-01 | Microsoft Technology Licensing, Llc | Data analysis expressions |
| US20130117650A1 (en) * | 2011-03-29 | 2013-05-09 | C. James MacLennan | Generating reproducible reports used in predictive modeling actions |
| US10067928B1 (en) * | 2013-11-06 | 2018-09-04 | Apttex Corporation. | Creating a spreadsheet template for generating an end user spreadsheet with dynamic cell dimensions retrieved from a remote application |
| US10073824B1 (en) * | 2013-11-06 | 2018-09-11 | Apttex Corporation | Method for building a spreadsheet template with dynamic data transfer capabilities to a remote application |
| US10789542B2 (en) * | 2015-06-05 | 2020-09-29 | Apple Inc. | System and method for predicting changes in network quality |
| US11488727B2 (en) * | 2018-10-30 | 2022-11-01 | LogicMatter, Inc. | Immutable system of records for IoT/control systems for compliance |
| CN113900742A (zh) * | 2021-09-01 | 2022-01-07 | 深信服科技股份有限公司 | 应用实例的管理方法、装置、电子设备及存储介质 |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5033009A (en) * | 1989-03-03 | 1991-07-16 | Dubnoff Steven J | System for generating worksheet files for electronic spreadsheets |
| US5272628A (en) * | 1990-04-16 | 1993-12-21 | Microsoft Corporation | Method and system for aggregating tables having dissimilar formats |
| US5613131A (en) * | 1993-01-29 | 1997-03-18 | Microsoft Corporation | Auto-formatting of tables in a spreadsheet program |
| FR2721728B1 (fr) | 1994-06-28 | 1996-07-26 | Bull Sa | Procédé et dispositif de génération automatique de feuilles de calcul. |
| US5754858A (en) * | 1996-05-01 | 1998-05-19 | Microsoft Corporation | Customizable application project generation process and system |
| JP3058129B2 (ja) | 1997-07-04 | 2000-07-04 | 日本電気株式会社 | データ計算装置及びプログラムを記録した機械読み取り可能な記録媒体 |
| US7089256B2 (en) * | 2000-07-11 | 2006-08-08 | Knowledge Dynamics, Inc. | Universal data editor |
| US7051276B1 (en) * | 2000-09-27 | 2006-05-23 | Microsoft Corporation | View templates for HTML source documents |
| US6988241B1 (en) * | 2000-10-16 | 2006-01-17 | International Business Machines Corporation | Client side, web-based spreadsheet |
| WO2003014987A2 (en) * | 2001-08-09 | 2003-02-20 | International Business Machines Corporation | Spreadsheet system and method for transferring the content of input cells between scalable template instances |
| US7246311B2 (en) * | 2003-07-17 | 2007-07-17 | Microsoft Corporation | System and methods for facilitating adaptive grid-based document layout |
-
2004
- 2004-02-27 WO PCT/EP2004/003034 patent/WO2004092974A2/en not_active Ceased
- 2004-02-27 EP EP04715324A patent/EP1618488B1/en not_active Expired - Lifetime
- 2004-02-27 DE DE602004003139T patent/DE602004003139T2/de not_active Expired - Lifetime
- 2004-02-27 AT AT04715324T patent/ATE344946T1/de not_active IP Right Cessation
- 2004-02-27 CN CNB2004800103996A patent/CN100378723C/zh not_active Expired - Fee Related
- 2004-02-27 US US10/553,727 patent/US7487437B2/en not_active Expired - Fee Related
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109388310A (zh) * | 2010-04-22 | 2019-02-26 | 三星电子株式会社 | 用于在移动终端中显示文本信息的方法和设备 |
| CN109388310B (zh) * | 2010-04-22 | 2021-11-02 | 三星电子株式会社 | 用于在移动终端中显示文本信息的方法和设备 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP1618488A2 (en) | 2006-01-25 |
| DE602004003139T2 (de) | 2007-04-19 |
| CN100378723C (zh) | 2008-04-02 |
| ATE344946T1 (de) | 2006-11-15 |
| WO2004092974A2 (en) | 2004-10-28 |
| WO2004092974A3 (en) | 2005-08-18 |
| DE602004003139D1 (de) | 2006-12-21 |
| US20070016849A1 (en) | 2007-01-18 |
| EP1618488B1 (en) | 2006-11-08 |
| US7487437B2 (en) | 2009-02-03 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN1774712A (zh) | 在数据表中管理递归可缩放模板实例中的插入操作的系统和方法 | |
| CN1168033C (zh) | 数据结构编辑装置及其编辑方法 | |
| CN1126025C (zh) | 窗口显示装置 | |
| CN1932795A (zh) | 考试试卷智能命题组卷系统 | |
| CN1749958A (zh) | 使用形状的公用图表 | |
| CN1755674A (zh) | 用于同步合成,显示及处理文本和图象文件的方法和设备 | |
| CN1359489A (zh) | 用于构筑建模工具的装置和方法 | |
| CN1510593A (zh) | 编排系统、编排程序和编排方法 | |
| CN1558348A (zh) | 将基于模式的分级数据结构转换成平面数据结构的方法以及系统 | |
| CN1206883A (zh) | 结构化文档检索显示方法和装置 | |
| CN1581156A (zh) | 信息处理系统、方法、程序和记录介质 | |
| CN101034349A (zh) | 基于功能设计的数据库应用系统开发平台 | |
| CN101040292A (zh) | 数据管理装置及其方法 | |
| CN1607524A (zh) | 包含可变数据的文档或版面的选择性预览和校对 | |
| CN1296811C (zh) | 信息处理装置及其控制方法和控制装置 | |
| CN1607522A (zh) | 用于创建和编辑可变数据文档的用户界面 | |
| CN1592230A (zh) | 受控资源的授权管理 | |
| CN1828517A (zh) | 文档处理装置和文档处理方法 | |
| CN1235305A (zh) | 用于归档和访问电子报文的数据处理系统和方法 | |
| CN1073540A (zh) | 管理类方法名 | |
| CN1678991A (zh) | Web服务设备和方法 | |
| CN1609794A (zh) | 用于计算机平台的编程接口 | |
| CN1912825A (zh) | 信息处理装置及其控制方法 | |
| CN101069177A (zh) | 关键字抽取装置 | |
| CN1046625A (zh) | 在结构式文件中制作、扩展及收缩组元标记的技术 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C14 | Grant of patent or utility model | ||
| GR01 | Patent grant | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080402 Termination date: 20190227 |
|
| CF01 | Termination of patent right due to non-payment of annual fee |