在數據表中管理遞歸可縮放模板實例中的插入操作的系統和方法
2023-05-04 23:44:36 1
專利名稱:在數據表中管理遞歸可縮放模板實例中的插入操作的系統和方法
技術領域:
本發明涉及通過數字計算機進行信息處理的領域,尤其涉及一種在數據表中,最好是在電子表格(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和「SaveRefresh」308,以便將來用定位設備105對這兩個按鈕「Save」312和「SaveRefresh」308的任何點擊都被識別為一個有效事件。
●否則(未發現局部變量EFE_size等於當前記錄701的「Column#」欄位706,或發現這同一個記錄701的「Type」欄位707內的屬性「REFERENCED」709擁有等於「YES」的子欄位「REFERENCEDOBJECT」709d(RO),禁止按鈕「Save」312和「SaveRefresh」308,以便將來用定位設備105對這兩個按鈕「Save」312和「SaveRefresh」308的任何點擊都不被識別為一個有效事件。
●在步驟914中,該方法等待EF編輯器對話框301上的任何用戶動作。這樣的用戶動作通常來自用定位設備105的點擊,但也可以採取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限於此),或本文未作進一步規定的任何其它類似手段。
●在步驟915中,檢測EF編輯器對話框301上的用戶動作。
●如果用戶動作是點擊按鈕「SaveRefresh」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和「SaveRefresh」408,以便將來用定位設備105對這兩個按鈕「Save」412和「SaveRefresh」408的任何點擊都被識別為一個有效事件。
●否則(未發現局部變量EPE_size等於當前記錄711的「Column#」欄位716,或發現這同一個記錄711的「Type」欄位717內的屬性「REFERENCED」719擁有等於「YES」的子欄位「REFERENCEDOBJECT」719d(RO)),禁用按鈕「Save」412和「SaveRefresh」408,以便將來用定位設備105對這兩個按鈕「Save」412和「SaveRefresh」408的任何點擊都不被識別為一個事件。
●在步驟1014中,該方法等待EP編輯器對話框401上的任何用戶動作。這樣的用戶動作通常來自用定位設備105的點擊,但也可以採取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限於此),或本文未作進一步規定的任何其它類似手段。
●在步驟1015中,檢測EP編輯器對話框301上的用戶動作。
●如果用戶動作是點擊按鈕「SaveRefresh」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個標記框1304STI_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函數的執行。
可替代實施例根據本發明的方法和系統可以有利地應用在將信息元素組織成垂直構造的兩維表的那些環境中。根據本發明的方法和系統可以有利地應用在將信息元素組織成多於兩維的多維表的那些環境中。雖然通過參照優選實施例具體顯示和描述了本發明,但本領域的普通技術人員應該明白,可以在形式和詳細上作出各種各樣的改變而不偏移本發明的精神和範圍。
權利要求
1.一種在包括多個數據的多維電子數據表中管理遞歸可縮放模板實例中的插入操作的方法;遞歸可縮放模板實例包括沿著第一數據表維排序和對齊並根據遞歸可縮放模板構造的可變數量個相鄰遞歸元素實例;所述遞歸可縮放模板包含遞歸元素,該遞歸元素包括一個或多個可縮放模板;每個遞歸元素實例沿著所述第一數據表維具有可變尺寸和沿著第二數據表維具有相同尺寸;遞歸元素實例包括一個或多個可縮放模板實例;每個遞歸元素實例的每個可縮放模板實例沿著所述第一數據表維對齊;每個遞歸元素實例內的每個可縮放模板實例沿著第二數據表維對齊;可縮放模板實例包括根據可縮放模板構造的可變數量個元素;元素被定義成數據範圍;數據範圍包括一個或多個數據;該方法包括如下步驟·檢測用於在遞歸元素實例的可縮放模板實例中將一個或多個相鄰元素插在所選元素之後或之前的插入命令;·識別·其中要插入所述一個或多個元素的可縮放模板實例;·可縮放模板實例中的其之後或之前必須要插入一個或多個元素的所選元素;·與所述可縮放模板實例相關聯的可縮放模板;·識別·遞歸可縮放模板實例和包括所識別的可縮放模板實例的遞歸元素實例;·在所識別的可縮放模板實例中,把根據與所述可縮放模板實例相關聯的可縮放模板構造的一個或多個元素插在所述所選元素之後或之前;·根據所述遞歸元素實例中的最大可縮放模板實例的尺寸,沿著所述第一數據表維,調整所識別的遞歸元素實例的尺寸,所識別的遞歸可縮放模板實例的所有遞歸元素實例保持相鄰而不重疊。
2.根據前一項權利要求所述的方法,其中,所述遞歸可縮放模板實例還包括頁眉部分和/或頁腳部分;遞歸可縮放模板的頁眉部分包括預定數量個遞歸元元素;遞歸可縮放模板的頁腳部分包括預定數量個遞歸元元素;遞歸元元素包括一個或多個可縮放模板;所述方法還包括如下步驟·檢測用於在遞歸元元素實例的可縮放模板實例中,將一個或多個相鄰元素插在所選元素之後或之前的插入命令;·識別·要插入所述一個或多個元素的可縮放模板實例;·可縮放模板實例中的其之後或之前必須要插入一個或多個元素的所選元素;·與所述可縮放模板實例相關聯的可縮放模板;·識別·遞歸可縮放模板實例和包括所識別的可縮放模板實例的遞歸元元素實例;·在所識別的可縮放模板實例中,將根據與所述可縮放模板實例相關聯的可縮放模板構造的一個或多個元素插在所述所選元素之後或之前;·根據所述遞歸元元素實例的最大可縮放模板實例的尺寸,沿著所述第一數據表維,調整所識別的遞歸元元素實例的尺寸,所識別的遞歸可縮放模板實例的所有遞歸元素實例和遞歸元元素實例保持相鄰而不重疊。
3.根據前述權利要求中的任何一項所述的方法,還包括如下步驟·檢測用於在遞歸可縮放模板實例中,將一個或多個相鄰遞歸元素實例插在所選遞歸元素實例之後或之前的插入命令;·識別·要插入所述一個或多個遞歸元素實例的遞歸可縮放模板實例;·遞歸可縮放模板實例中的其之後或之前必須要插入一個或多個遞歸元素實例的所選遞歸元素實例;·與所述遞歸可縮放模板實例相關聯的遞歸可縮放模板;·在遞歸可縮放模板實例中,將一個或多個相鄰遞歸元素實例插在所述所選遞歸元素實例之後或之前;·沿著第一數據表維將一個或多個所插入的遞歸元素實例與已經存在的一個或多個遞歸元素實例對齊;所述將一個或多個所插入的遞歸元素實例沿著第二數據表維具有與已經存在的一個或多個遞歸元素實例相同的尺寸;·根據為所識別的遞歸可縮放模板定義的遞歸元素構造每個所插入的遞歸元素實例。
4.根據前一項權利要求所述的方法,還包括如下步驟·沿著所述第一數據表維對齊每個所插入的遞歸元素實例的每個可縮放模板實例;·在每個所插入的遞歸元素實例內,沿著所述第二數據表維對齊每個可縮放模板實例。
5.根據前述權利要求中的任何一項所述的方法,其中,在遞歸可縮放模板實例中,將一個或多個相鄰元素插入可縮放模板實例中,或插入一個或多個相鄰遞歸元素實例的所述步驟還包括如下步驟·確定該插入是否破壞了數據表中的任何其它現有遞歸可縮放模板實例,遞歸可縮放模板實例是在不再根據所相關的遞歸可縮放模板構造遞歸元素實例的時候被破壞的。
6.根據前一項權利要求所述的方法,其中,確定所述插入是否破壞了所述數據表中的任何其它現有遞歸可縮放模板實例的所述步驟還包括如下步驟·如果所述插入破壞了被定義成關鍵性實例的任何遞歸可縮放模板實例,則取消該插入。
7.根據前一項權利要求所述的方法,對於每個遞歸可縮放模板實例,包括如下步驟·將所述一個或多個遞歸可縮放模板實例的每一個定義成關鍵性實例或非關鍵性實例。
8.根據前述權利要求中的任何一項所述的方法,其中,在遞歸可縮放模板實例中,將一個或多個相鄰元素插入可縮放模板實例中的步驟,或插入一個或多個相鄰遞歸元素實例的所述步驟還包括如下步驟·確定該插入是否破壞了數據表中的任何其它現有遞歸可縮放模板實例,當遞歸元素不再根據所相關的可縮放模板構造時,遞歸可縮放模板實例被破壞。
9.根據前一項權利要求所述的方法,其中,確定插入是否破壞了數據表中的任何其它現有可縮放模板實例的所述步驟還包括如下步驟·如果插入破壞了被定義成關鍵性實例的任何可縮放模板實例,則取消該插入。
10.根據前述權利要求中的任何一項所述的方法,其中,所述多維電子數據表是包括通過沿著每一維的單元格地址標識的多個單元格的電子表格。
11.根據前一項權利要求所述的方法,其中,可縮放模板實例包括沿著給定電子表格維排序和對齊並根據可縮放模板構造的尺寸相同的可變數量個相鄰元素;元素被定義成單元格範圍;所述可縮放模板包括元素格式和/或元素概要;元素格式為每個元素內的每個單元格定義一個或多個格式屬性;元素概要為每個元素內的每個單元格定義單元格內容和單元格目的地;所述單元格目的地規定單元格是接受條目的輸入單元格還是生成結果的輸出單元格。
12.一種包括適合實現根據前面權利要求的任何一項所述的方法的步驟的裝置的系統。
13.一種電腦程式,包括當所述電腦程式被執行時,用於實現根據權利要求1到11中的任何一項所述的方法的步驟的指令。
全文摘要
本發明涉及在包括多個數據的多維電子數據表中、最好在電子表格中,管理遞歸可縮放模板實例中的插入操作的方法、系統和程序;遞歸可縮放模板實例包括沿第一數據表維排序和對齊和根據遞歸可縮放模板構造的可變數量個相鄰遞歸元素實例;所述遞歸可縮放模板有包括一個或多個可縮放模板的遞歸元素;每個遞歸元素實例沿所述第一數據表維有可變尺寸和沿第二數據表維有相同尺寸;遞歸元素實例有一個或多個可縮放模板實例;每個遞歸元素實例的每個可縮放模板實例沿所述第一數據表維對齊;每個遞歸元素實例內的每個可縮放模板實例沿第二數據表維對齊;可縮放模板實例有根據可縮放模板構造的可變數量個元素;元素定義成數據範圍;數據範圍有一個或多個數據。
文檔編號G06F17/24GK1774712SQ200480010399
公開日2006年5月17日 申請日期2004年2月27日 優先權日2003年4月18日
發明者讓-雅克·奧裡格莉亞, 弗雷德裡克·鮑科特 申請人:國際商業機器公司