專利名稱:在數(shù)據(jù)表中管理遞歸可縮放模板實(shí)例中的插入操作的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通過(guò)數(shù)字計(jì)算機(jī)進(jìn)行信息處理的領(lǐng)域,尤其涉及一種在數(shù)據(jù)表中,最好是在電子表格(electronic spreadsheet)中,用于管理遞歸可縮放模板實(shí)例中的插入操作的系統(tǒng)和方法。
背景技術(shù):
電子表格的一個(gè)基本價(jià)值是,將數(shù)據(jù)組織成列和行,同時(shí)使單調(diào)乏味(tiedious)的計(jì)算自動(dòng)化。組織成列和行的這樣一個(gè)數(shù)據(jù)集的典型、常見(jiàn)和有價(jià)值例子是一個(gè)單元格范圍。即使一個(gè)單元格范圍在電子表格的環(huán)境下接受正式的和嚴(yán)格的定義,它也足夠靈活,使信息可以包括在單個(gè)單元格范圍中或幾個(gè)單元格范圍的一個(gè)集合(set)中。因此,單元格范圍是相當(dāng)有用的對(duì)象??梢詫⒁粋€(gè)單元格范圍定義成一個(gè)整體和當(dāng)作一個(gè)整體來(lái)處理。例如,可以在電子表格內(nèi)將它從一個(gè)地方復(fù)制到另一個(gè)地方或?qū)⑺鼜囊粋€(gè)電子表格文件復(fù)制到另一個(gè)電子表格文件。單元格范圍廣泛用于在電子表格的領(lǐng)域中開(kāi)發(fā)的應(yīng)用程序中。時(shí)常,根據(jù)一些類型的結(jié)構(gòu)排列單元格范圍,從而變成所構(gòu)造的單元格范圍。每個(gè)單元格的內(nèi)容被定義在一個(gè)元素(element)內(nèi),其中,一個(gè)元素被定義成所構(gòu)造的單元格范圍的一行,然后,重復(fù)相同類型的元素一定次數(shù),以便存儲(chǔ)/處理可變數(shù)量個(gè)信息段。多數(shù)情況下,使用相似所構(gòu)造的單元格范圍的幾個(gè)實(shí)例。在當(dāng)前沒(méi)有其它工具真正可用的背景下,經(jīng)常通過(guò)剪切/復(fù)制和粘貼操作創(chuàng)建這樣相似所構(gòu)造的單元格范圍的實(shí)例。為了對(duì)不斷增加的信息量保持高度的智能控制,人們需要組織或構(gòu)造這種信息。由于允許嵌套結(jié)構(gòu)(nested structure),所以往往使用分層(hierarchical)模型。這樣分層結(jié)構(gòu)的典型和眾所周知例子是諸如DOS或Microsoft Windows之類的計(jì)算機(jī)操作系統(tǒng)的目錄樹(shù)。根目錄可能包含文件和/或大量目錄,這些目錄本身可能包含文件和/或大量目錄,這些目錄本身可能又包含文件和/或大量目錄,以此類推。遞歸有助于將信息構(gòu)造和保持對(duì)它的智能控制。這種對(duì)遞歸的需要在電子表格(spredsheet)的環(huán)境下也可應(yīng)用于所構(gòu)造的單元格范圍。當(dāng)在電子表格文件中定義和使用所構(gòu)造的單元格范圍的幾個(gè)實(shí)例時(shí),它們本身往往根據(jù)可以在不同電子表格文件之間或甚至在單個(gè)電子表格文件內(nèi)復(fù)制的特定超級(jí)結(jié)構(gòu)排列或“所構(gòu)造的單元格范圍陣列”構(gòu)造。在這樣的所構(gòu)造的單元格范圍陣列內(nèi),找出遵從相同中間超級(jí)結(jié)構(gòu)的幾個(gè)所構(gòu)造的單元格范圍,以及遵從其它中間超級(jí)結(jié)構(gòu)的一些其它所構(gòu)造的單元格范圍是平常的事。然后,可以將所構(gòu)造的單元格范圍陣列視作所構(gòu)造的單元格范圍的成群中間超級(jí)結(jié)構(gòu)的一個(gè)集合。在當(dāng)前傳統(tǒng)電子表格的背景下,這樣所構(gòu)造的單元格范圍陣列的實(shí)例經(jīng)常通過(guò)剪切/復(fù)制和粘貼操作來(lái)創(chuàng)建。
創(chuàng)建所構(gòu)造的單元格范圍的新實(shí)例既復(fù)雜又漫長(zhǎng),尤其,由于傳統(tǒng)單元格范圍呈現(xiàn)出嚴(yán)重的局限性●(i)結(jié)構(gòu)信息(譬如,列數(shù)、行數(shù))、格式信息(譬如,字體、顏色、或邊框)、和內(nèi)容信息(譬如,公式或原始(raw)或信息性數(shù)據(jù))是混合的;和●(ii)單元格范圍的尺寸在給定時(shí)刻是固定的。
因此,當(dāng)電子表格用戶想要?jiǎng)?chuàng)建結(jié)構(gòu)相同的另一個(gè)單元格范圍時(shí),他/她需要依次進(jìn)行幾步操作。他/她需要1.復(fù)制-粘貼現(xiàn)有所構(gòu)造的單元格范圍;2.區(qū)分包含原始或信息性數(shù)據(jù)的區(qū)域和包含諸如公式之類的通用內(nèi)容的區(qū)域;3.在試圖保持該結(jié)構(gòu)、格式和通用內(nèi)容的同時(shí),清除所復(fù)制原始數(shù)據(jù)的所復(fù)制的所構(gòu)造的單元格范圍;4.將所構(gòu)造的所復(fù)制的單元格范圍的尺寸調(diào)整成他新需要的尺寸;和5.最后,將默認(rèn)值填入原始數(shù)據(jù)區(qū)中,以便方便以后的數(shù)據(jù)條目(entry)。
更進(jìn)一步,在復(fù)制和粘貼所構(gòu)造的單元格范圍之前,由于存在蓋寫并因此喪失目的地位置上的先前存在信息的風(fēng)險(xiǎn),因此用戶必須為所復(fù)制的所構(gòu)造的單元格范圍預(yù)備地方。這個(gè)操作鏈迅速地變得單調(diào)乏味、漫長(zhǎng)和易于出錯(cuò),尤其當(dāng)被操縱的所構(gòu)造的單元格范圍尺寸和復(fù)雜性增大時(shí)。
更新所構(gòu)造的單元格范圍往往也是非常復(fù)雜、漫長(zhǎng)(lengthy)和易于出錯(cuò)的。這樣的更新包括添加新元素和修改現(xiàn)有元素。在電子表格的環(huán)境下,可以不會(huì)出現(xiàn)任何特殊問(wèn)題地進(jìn)行幾種類型的修改。但是,對(duì)于一些修改,例如,對(duì)于插入,情況并非總是這樣。例如,如果通過(guò)諸如電子表格行插入方法之類的傳統(tǒng)功能來(lái)添加行,所創(chuàng)建的行是空的。這意味著需要輸入每個(gè)元素的每個(gè)單元格的值。輸入數(shù)據(jù)或執(zhí)行復(fù)制/粘貼操作代表著用戶的重要工作負(fù)荷,而每個(gè)元素的內(nèi)容在一定程度上是已知,應(yīng)該遵從所構(gòu)造的單元格范圍的一般結(jié)構(gòu)。此外,諸如行插入功能之類的正常電子表格功能可能危及一些相鄰元素的內(nèi)容。危及相鄰元素的插入的一個(gè)良好例子是通過(guò)諸如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)。舉第二個(gè)例子來(lái)說(shuō),存在著必須在整個(gè)所構(gòu)造的單元格范圍地一致進(jìn)行修改的情況。今天,這只能利用應(yīng)用于要修改的確切區(qū)域的特定復(fù)制-粘貼操作來(lái)完成。這可能變得非常困難,尤其當(dāng)操縱的所構(gòu)造的單元格范圍尺寸和復(fù)雜性不斷增大。
當(dāng)涉及到遞歸時(shí),創(chuàng)建所構(gòu)造的單元格范圍陣列的新實(shí)例甚至更加復(fù)雜和漫長(zhǎng),尤其由于所構(gòu)造的單元格范圍陣列涉及到雙層結(jié)構(gòu)(twofold level ofstructure)●在較低層上,必須創(chuàng)建所構(gòu)造的單元格范圍的多個(gè)、甚至不同的實(shí)例的一個(gè)集合。如前所述,由于傳統(tǒng)單元格范圍的局限性,這個(gè)操作本身是復(fù)雜、漫長(zhǎng)和易于出錯(cuò)的。
●在較高層上,創(chuàng)建所構(gòu)造的單元格范圍陣列的實(shí)例要求電子表格用戶進(jìn)行幾步操作1.識(shí)別用作創(chuàng)建新實(shí)例的參考的、所構(gòu)造的單元格范圍陣列的現(xiàn)有實(shí)例;2.由于存在可能因蓋寫而喪失任何先前存在信息的風(fēng)險(xiǎn),因此在目的地位置上預(yù)備保存新實(shí)例的地方;3.將所構(gòu)造的單元格范圍陣列的參考實(shí)例復(fù)制-粘貼到目的地位置上;4.通過(guò)在陣列中刪除或引入所構(gòu)造的單元格范圍的實(shí)例的一個(gè)或幾個(gè)中間超級(jí)結(jié)構(gòu),將所構(gòu)造的單元格范圍陣列的新創(chuàng)建實(shí)例的結(jié)構(gòu)調(diào)整成滿足他/她的新需要;5.清除包括在該陣列內(nèi)的所構(gòu)造的單元格范圍的每個(gè)實(shí)例的內(nèi)容;和6.最后,將相關(guān)默認(rèn)值填入所構(gòu)造的單元格范圍的每個(gè)實(shí)例中。
更新所構(gòu)造的單元格范圍陣列往往也是非常復(fù)雜、漫長(zhǎng)和易于出錯(cuò)的。實(shí)際上,這樣的更新可能涉及到將新對(duì)象引入所構(gòu)造的單元格范圍陣列內(nèi)或修改所構(gòu)造的單元格范圍陣列內(nèi)的現(xiàn)有對(duì)象。第一個(gè)困難是確定用戶想要修改包括在所構(gòu)造的單元格范圍陣列內(nèi)的現(xiàn)有所構(gòu)造的單元格范圍(例如,在現(xiàn)有所構(gòu)造的單元格范圍內(nèi)加上一行),還是修改所構(gòu)造的單元格范圍陣列(例如,加入中間超級(jí)結(jié)構(gòu))。在第一種情況中,像已經(jīng)看到那樣的修改本身就是一種有風(fēng)險(xiǎn)操作。在第二種情況中,操作的復(fù)雜性因要操縱的結(jié)構(gòu)的信息量和層次而進(jìn)一步增加。在電子表格環(huán)境下可獲得的的傳統(tǒng)工具無(wú)助于用戶處理這樣的替換(alternative),使得在操作鏈期間的任何用戶錯(cuò)誤的改正可能既困難和漫長(zhǎng)。
1989年3月3日頒發(fā)給Steven J.Dubnoff的、發(fā)明名稱為“為電子表格生成工作表文件的系統(tǒng)(System for generating worksheet files for electronicspreadsheets)”的美國(guó)專利US5,033,009號(hào)是令人感興趣的現(xiàn)有技術(shù)文件。這個(gè)發(fā)明發(fā)展了可以通過(guò)工作表文件生成器合并在一起生成工作表文件的圖形數(shù)據(jù)(pattem data)和可變數(shù)據(jù)的概念。但是,該發(fā)明呈現(xiàn)出妨礙它解決上文給出的一系列問(wèn)題的許多局限性,尤其●它的目的是根據(jù)兩個(gè)輸入文件的集合中生成新輸出電子表格,而存在著在用戶應(yīng)用環(huán)境下,在用戶熟悉的現(xiàn)有電子表格文件內(nèi)創(chuàng)建和操縱新實(shí)體的需要。
●除了常規(guī)電子表格工具之外,它不包含允許直接更新輸出電子表格的機(jī)制。
●它不包含在同一電子表格文件內(nèi),操縱可變數(shù)量個(gè)不同結(jié)構(gòu)以及那些結(jié)構(gòu)中每一個(gè)的可變數(shù)量個(gè)實(shí)例的能力。粒度(granularity)局限于電子表格文件,而所需的粒度是所構(gòu)造的單元格范圍的粒度。
●所謂的“文件格式規(guī)范”真正將結(jié)構(gòu)信息(譬如,列和行的個(gè)數(shù)和相對(duì)位置)、展示信息(譬如,字體、顏色、背景等)、和內(nèi)容信息(譬如,公式等)混合在一起。
發(fā)明內(nèi)容
正如在獨(dú)立權(quán)利要求中定義的那樣,本發(fā)明涉及包括多個(gè)數(shù)據(jù)的多維電子數(shù)據(jù)表、最好是電子表格,更具體地說(shuō),本發(fā)明涉及管理遞歸可縮放模板實(shí)例中的插入操作的方法、系統(tǒng)和程序;遞歸可縮放模板實(shí)例包括沿著第一數(shù)據(jù)表維排序和對(duì)齊和根據(jù)遞歸可縮放模板構(gòu)造的可變數(shù)量個(gè)相鄰遞歸元素實(shí)例;所述遞歸可縮放模板包含遞歸元素,該遞歸元素包括一個(gè)或多個(gè)可縮放模板;每個(gè)遞歸元素實(shí)例沿著所述第一數(shù)據(jù)表維具有可變尺寸和沿著第二數(shù)據(jù)表維具有相同尺寸;遞歸元素實(shí)例包括一個(gè)或多個(gè)可縮放模板實(shí)例;每個(gè)遞歸元素實(shí)例的每個(gè)可縮放模板實(shí)例沿著所述第一數(shù)據(jù)表維對(duì)齊;每個(gè)遞歸元素實(shí)例內(nèi)的每個(gè)可縮放模板實(shí)例沿著第二數(shù)據(jù)表維對(duì)齊;可縮放模板實(shí)例包括根據(jù)可縮放模板構(gòu)造的可變數(shù)量個(gè)元素;元素被定義成數(shù)據(jù)范圍;數(shù)據(jù)范圍包括一個(gè)或多個(gè)數(shù)據(jù)。該方法包括如下步驟●檢測(cè)用于在遞歸元素實(shí)例的可縮放模板實(shí)例中將一個(gè)或多個(gè)相鄰元素插在所選元素之后或之前的插入命令;●識(shí)別●其中要插入所述一個(gè)或多個(gè)元素的可縮放模板實(shí)例;●可縮放模板實(shí)例中的其之后或之前必須要插入一個(gè)或多個(gè)元素的所選元素;●與所述可縮放模板實(shí)例相關(guān)聯(lián)的可縮放模板;●識(shí)別●遞歸可縮放模板實(shí)例和包括所識(shí)別的可縮放模板實(shí)例的遞歸元素實(shí)例;●在所識(shí)別的可縮放模板實(shí)例中,把根據(jù)與所述可縮放模板實(shí)例相關(guān)聯(lián)的可縮放模板構(gòu)造的一個(gè)或多個(gè)元素插在所述所選元素之后或之前;●根據(jù)所述遞歸元素實(shí)例中的最大可縮放模板實(shí)例的尺寸,沿著所述第一數(shù)據(jù)表維,調(diào)整所識(shí)別的遞歸元素實(shí)例的尺寸,所識(shí)別的遞歸可縮放模板實(shí)例的所有遞歸元素實(shí)例保持相鄰而不重疊。
在特定實(shí)施例中,該方法還包括如下步驟●檢測(cè)用于在遞歸可縮放模板實(shí)例中,將一個(gè)或多個(gè)相鄰遞歸元素實(shí)例插在所選遞歸元素實(shí)例之后或之前的插入命令;
●識(shí)別●其中要插入所述一個(gè)或多個(gè)遞歸元素實(shí)例的遞歸可縮放模板實(shí)例;●遞歸可縮放模板實(shí)例中的在其之后或之前必須插入一個(gè)或多個(gè)遞歸元素實(shí)例的所選遞歸元素實(shí)例;●與所述遞歸可縮放模板實(shí)例相關(guān)聯(lián)的遞歸可縮放模板;●在遞歸可縮放模板實(shí)例中,將一個(gè)或多個(gè)相鄰遞歸元素實(shí)例插在所述所選遞歸元素實(shí)例之后或之前;●沿著第一數(shù)據(jù)表維將一個(gè)或多個(gè)所插入的遞歸元素實(shí)例與已經(jīng)存在的一個(gè)或多個(gè)遞歸元素實(shí)例對(duì)齊;所述一個(gè)或多個(gè)所插入的遞歸元素實(shí)例沿著第二數(shù)據(jù)表維具有與已經(jīng)存在的一個(gè)或多個(gè)遞歸元素實(shí)例相同的尺寸;●根據(jù)為所識(shí)別的遞歸可縮放模板定義的遞歸元素構(gòu)造每個(gè)所插入的遞歸元素實(shí)例。
在所附的從屬權(quán)利要求中提供了本發(fā)明的進(jìn)一步實(shí)施例。
首字母縮寫詞為了更加簡(jiǎn)潔起見(jiàn),使用如下首字母縮寫詞●EF代表元素格式;●EP代表元素概要;●MEF代表元元素(meta-element)格式;●MEP代表元元素概要;●RE代表遞歸元素;●RME代表遞歸元元素;●RST代表遞歸可縮放模板;●RSTI代表遞歸可縮放模板實(shí)例;●ST代表可縮放模板;●STI代表可縮放模板實(shí)例。
附圖簡(jiǎn)述●
圖1A是可以實(shí)施本發(fā)明的計(jì)算機(jī)系統(tǒng)的示意圖;
●圖1B是用于實(shí)施本發(fā)明的包括操作系統(tǒng)、應(yīng)用軟件、以及用戶界面的軟件系統(tǒng)的示意圖;●圖2示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于管理RST的優(yōu)選電子表格用戶界面;●圖3示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于編輯EF的優(yōu)選電子表格用戶界面;●圖4示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于編輯EP的優(yōu)選電子表格用戶界面;●圖5示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于編輯ST的優(yōu)選電子表格用戶界面;●圖6示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于編輯RST的優(yōu)選電子表格用戶界面;●圖7A、7B、7C、7D、和7E分別例示了根據(jù)本發(fā)明優(yōu)選實(shí)施例的EF表(EFT)、EP表(EPT)、ST表(STT)、ST描述符(descriptor)表(STDT)、和STI表(STIT)的結(jié)構(gòu);●圖7F給出了根據(jù)本發(fā)明優(yōu)選實(shí)施例在表EFT、EPT、STT、STDT、STIT、RET、RSTT、RSTDT、RSTIT和RSTIDT之間建立的關(guān)系的圖形例示;●圖8是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例管理RST對(duì)象的優(yōu)選方法的流程圖;●圖9是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例編輯EF和MEF的優(yōu)選方法的流程圖;●圖10是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例編輯EP和MEP的優(yōu)選方法的流程圖;●圖11是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例編輯ST的優(yōu)選方法的流程圖;●圖12是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例編輯RST的優(yōu)選方法的流程圖;●圖13A示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于創(chuàng)建ST的優(yōu)選電子表格用戶界面;●圖13B例示了根據(jù)本發(fā)明優(yōu)選實(shí)施例的ST實(shí)例化(instaciation);●圖14A是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例舉例(instancing)ST的優(yōu)選方法的流程圖;●圖14B是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例創(chuàng)建STI的優(yōu)選方法的流程圖;
●圖15A是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例管理STI中的插入的優(yōu)選方法的流程圖;●圖15B是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例創(chuàng)建STI內(nèi)的元素的優(yōu)選方法的流程圖;●圖15C是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例管理RSTI中的插入的優(yōu)選方法的流程圖;●圖16A和16B分別示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于管理STI中的插入的優(yōu)先電子表格用戶界面;●圖17A和17B例示了根據(jù)本發(fā)明優(yōu)選實(shí)施例的STI插入的不同模式;●圖18A例示了根據(jù)本發(fā)明優(yōu)選實(shí)施例的RSTI的邏輯結(jié)構(gòu);●圖18B例示了根據(jù)本發(fā)明優(yōu)選實(shí)施例的RST的邏輯結(jié)構(gòu);●圖19A和19B構(gòu)成例示用于根據(jù)本發(fā)明優(yōu)選實(shí)施例創(chuàng)建RSTI的優(yōu)選方法的流程圖;●圖20A、20B、20C、20D、20E和20F分別例示了RE表(RET)、RST表(RSTT)、RST管理器表(RSTMT)、RST描述符表(RSTDT)、RSTI表(RSTIT)、和RSTI描述符表(RSTIDT)的結(jié)構(gòu);●圖21A示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于創(chuàng)建RSTI的優(yōu)選電子表格用戶界面;●圖21B示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的用于編輯RE的優(yōu)選電子表格用戶界面;●圖21C是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例編輯RST中的RE的優(yōu)選方法的流程圖;●圖22A是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例計(jì)算包括在STI中的行數(shù)的優(yōu)選方法的流程圖;和●圖22B是例示根據(jù)本發(fā)明優(yōu)選實(shí)施例計(jì)算包括在STI中的列數(shù)的優(yōu)選方法的流程圖。
優(yōu)選實(shí)施例詳述系統(tǒng)硬件如圖1A所示,本發(fā)明可以在計(jì)算機(jī)系統(tǒng)100上實(shí)施,該計(jì)算機(jī)系統(tǒng)100包括中央處理器101、主存儲(chǔ)器102、輸入/輸出控制器103、鍵盤104、定位設(shè)備105(例如,鼠標(biāo)、跟蹤球、筆式設(shè)備等)、顯示設(shè)備106、和大容量存儲(chǔ)器107(例如,硬盤)。如有需要,諸如打印設(shè)備108之類的另外輸入/輸出設(shè)備也可以包括在系統(tǒng)100中。如圖所示,系統(tǒng)100的各種各樣部件通過(guò)系統(tǒng)總線110或類似結(jié)構(gòu)進(jìn)行通信。在優(yōu)選實(shí)施例中,計(jì)算機(jī)系統(tǒng)100包括可從幾個(gè)銷售商(包括美國(guó)國(guó)際商用機(jī)器(IBM)公司(Armonk,N.Y.))那里購(gòu)買到的IBM兼容個(gè)人計(jì)算機(jī)。
如圖1B所示,為了向計(jì)算機(jī)系統(tǒng)100發(fā)出操作指令,配備了計(jì)算機(jī)軟件系統(tǒng)150。存儲(chǔ)在系統(tǒng)存儲(chǔ)器102中和存儲(chǔ)在盤存儲(chǔ)器107上的軟件系統(tǒng)150包括內(nèi)核或操作系統(tǒng)151和外殼或界面153??梢浴把b載”諸如應(yīng)用軟件152之類的一個(gè)或多個(gè)應(yīng)用程序(即,從外部存儲(chǔ)器(storage)107傳送到內(nèi)部存儲(chǔ)器(memory)102)供系統(tǒng)100執(zhí)行。系統(tǒng)100通過(guò)用戶界面153接收用戶命令和數(shù)據(jù);然后,系統(tǒng)100可以按照來(lái)自操作模塊151和/或應(yīng)用模塊152的指令對(duì)這些輸入采取行動(dòng)。最好是圖形用戶界面(GUI)的界面153還用于顯示結(jié)果,用戶可以根據(jù)這些結(jié)果供應(yīng)附加輸入或終止對(duì)話(session)。在優(yōu)選實(shí)施例中,操作系統(tǒng)151和界面153是可從微軟公司(Redmond,Wash.)購(gòu)買到的Microsoft Win95。另一方面,應(yīng)用模塊152包括下文進(jìn)一步詳述的本發(fā)明的電子表格筆記本。
界面如下的描述關(guān)注實(shí)現(xiàn)Aureglia等人在發(fā)明名稱為“在電子表格中從一個(gè)可縮放模式實(shí)例到另一個(gè)可縮放模式實(shí)例輸出-輸入輸入單元格的內(nèi)容的系統(tǒng)和方法(System and method in an electronic spreadsheet forexporting-importing the content of input cells from a scalable template instance toanother)”的國(guó)際專利申請(qǐng)PCT/EP 02/09483(IBM參考文獻(xiàn)FR9 2001 0029)中描述的用戶界面的本發(fā)明的當(dāng)前優(yōu)選實(shí)施例。
遞歸可縮放模板管理A.引言可縮放模板(ST’s)的概念傳統(tǒng)電子表格包括使電子表格用戶可以容易地將數(shù)據(jù)組織成列和行的、同時(shí)使單調(diào)乏味的計(jì)算自動(dòng)化的內(nèi)置裝置。所組織的數(shù)據(jù)的集合可以包括在單個(gè)單元格范圍中或幾個(gè)單元格范圍的一個(gè)集合中。在電子表格的環(huán)境下,單元格范圍是相當(dāng)有用的和廣泛使用的對(duì)象??梢詫⑺鳛檎w來(lái)進(jìn)行定義和處理。根據(jù)在國(guó)際專利申請(qǐng)PCT/EP 02/09483(IBM參考文獻(xiàn)FR9 20010029)中描述的發(fā)明,該系統(tǒng)和方法適用于使電子表格用戶
●為單元格范圍定義結(jié)構(gòu),包括●(i)由一個(gè)或多個(gè)元元素組成的可選頁(yè)眉部分(header part);●(ii)由一個(gè)或多個(gè)元素組成的必有主體部分;●(iii)由一個(gè)或多個(gè)元元素組成的可選頁(yè)腳部分(footer part)。
頁(yè)眉部分的每個(gè)元元素的結(jié)構(gòu)可以通過(guò)MEF用屬性來(lái)定義,和通過(guò)MEP依據(jù)內(nèi)容來(lái)定義。
主體部分的所有元素的結(jié)構(gòu)可以通過(guò)EF用屬性來(lái)定義,和通過(guò)EP依據(jù)內(nèi)容來(lái)定義。
頁(yè)腳部分的每個(gè)元元素的結(jié)構(gòu)可以通過(guò)MEF用屬性來(lái)定義,和通過(guò)MEP依據(jù)內(nèi)容來(lái)定義。
這種結(jié)構(gòu)被稱為ST。總之,ST通過(guò)指定字段個(gè)數(shù)、通過(guò)引用定義所有主體元素的一對(duì)EF和EP、和可選地,通過(guò)引用定義頁(yè)眉部分或頁(yè)腳部分的每個(gè)元元素的一對(duì)或幾對(duì)MEF和MEP來(lái)定義結(jié)構(gòu)。
●管理ST’s和稱為EF、EP、MEF和MEP的在它下面定義的對(duì)象。
●創(chuàng)建或更新EF’s、MEF’s。
●創(chuàng)建或更新EP’s、MEP’s。
●創(chuàng)建或更新ST。
●創(chuàng)建服從所定義的ST的STI。
●在STI內(nèi)插入一個(gè)或多個(gè)元素。
●從STI中移動(dòng)一個(gè)或多個(gè)元素。
如下的一組工具支持上面的一組功能●“RST管理器”方法,或簡(jiǎn)稱為RSTM方法;●“EF編輯器”方法,或簡(jiǎn)稱為EFE方法;●“EP編輯器”方法,或簡(jiǎn)稱為EPE方法;●“ST編輯器”方法,或簡(jiǎn)稱為STE方法;●“ST實(shí)例化器(instanciator)”方法,或簡(jiǎn)稱為STI方法;●“STI插入管理器”方法,或簡(jiǎn)稱為STIIM方法。
遞歸可縮放模板(RST)的概念在引入了ST和STI的概念之后,RST和RSTI的概念就變得更容易掌握了。實(shí)際上,可以將RST看作兩層結(jié)構(gòu)。最高層邏輯上等效于作為可以邏輯上映射成元素和元元素的構(gòu)造RE和RME的一個(gè)集合的ST的結(jié)構(gòu)。RST的遞歸性質(zhì)表現(xiàn)在較低結(jié)構(gòu)層上,因?yàn)镽E和RME是本身包括STI(取代傳統(tǒng)電子表格單元格,與元素和元元素的情況一樣)的對(duì)象。換句話說(shuō),RST是ST的同級(jí)(tiered)結(jié)構(gòu)。當(dāng)將RST實(shí)例化時(shí),可以清楚地表達(dá)相同的相似性來(lái)描述所得RSTI的結(jié)構(gòu)。在較高層上,RSTI呈現(xiàn)邏輯上等效于STI的結(jié)構(gòu),但由容器范圍,而不是單獨(dú)單元格構(gòu)成的結(jié)構(gòu)。在每個(gè)容器范圍內(nèi),較低層結(jié)構(gòu)呈現(xiàn)STI的形式。其結(jié)果是,可以將RSTI看作本身包含代替?zhèn)鹘y(tǒng)單元格的STI的STI。因此,這樣的對(duì)象首先以“所構(gòu)造的單元格范圍陣列”的名義引入?,F(xiàn)在參照?qǐng)D18A和18B,這樣RST和RSTI的簡(jiǎn)單例子將用于例示本申請(qǐng)。首先參照?qǐng)D18B,名為“RST_customer(RST_客戶)”的RST 2051定義網(wǎng)絡(luò)服務(wù)供應(yīng)商遵從的結(jié)構(gòu),以記錄與接受聯(lián)網(wǎng)服務(wù)的客戶相對(duì)應(yīng)的所有各種各樣數(shù)據(jù)。該RST圍繞著一種結(jié)構(gòu)來(lái)組織,該結(jié)構(gòu)包括●頁(yè)眉部分2052,其中,根據(jù)名為“ST_cust_data”的ST的結(jié)構(gòu)記錄客戶數(shù)據(jù)(譬如,公司名、地址、業(yè)務(wù)、合同進(jìn)度等),根據(jù)名為“ST_contacts”ST的結(jié)構(gòu)記錄客戶聯(lián)系人(譬如,CEO、CIO、CFO、經(jīng)理等),根據(jù)名為“ST_SLA”的ST的結(jié)構(gòu)記錄所訂立的服務(wù)層協(xié)議,以及根據(jù)名為“ST_support_team”的ST結(jié)構(gòu)記錄客戶支持團(tuán)隊(duì)(譬如,運(yùn)輸(transition)經(jīng)理交付經(jīng)理、解答經(jīng)理等)。
●主體部分2053,其中,根據(jù)名為“ST_res_info”的ST的結(jié)構(gòu),為從服務(wù)供應(yīng)商接受服務(wù)的每個(gè)客戶記錄管理這個(gè)資源所需的信息(譬如,位置、IP地址、配置文件等),和根據(jù)名為“ST_pb_log”的ST的結(jié)構(gòu)記錄同一資源的當(dāng)前問(wèn)題日志。
●頁(yè)腳部分2054,其中,根據(jù)名為“ST_billing”的ST的結(jié)構(gòu)記錄這個(gè)客戶的結(jié)算狀態(tài),和根據(jù)名為“ST_stats”的ST的結(jié)構(gòu),記錄客戶管理資源的問(wèn)題統(tǒng)計(jì)。
然后,參照?qǐng)D18B,RSTI 2001遵從RST 2051的結(jié)構(gòu)“RST_customer”。實(shí)際上,它也圍繞著包括頁(yè)眉部分2002、主體部分2003、和頁(yè)腳部分2004的結(jié)構(gòu)來(lái)組織。頁(yè)眉部分2002包含本身根據(jù)RST頁(yè)眉部分2052的結(jié)構(gòu)來(lái)組織、和服從ST的“ST_cust_data”、“ST_contacts”、“ST_SLA”、和“ST_support_team”的結(jié)構(gòu)的4個(gè)STI。主體部分2003由3個(gè)不同記錄2010、2009、和2008構(gòu)成,它們的每一個(gè)根據(jù)RST主體部分2053的結(jié)構(gòu)來(lái)組織,RST主體部分2053的結(jié)構(gòu)包括服從ST的“ST_res_info”和“ST_cpb_log”的結(jié)構(gòu)的2個(gè)STI。最后,頁(yè)腳部分2054包含本身根據(jù)RST頁(yè)腳部分2054的結(jié)構(gòu)來(lái)組織并服從ST的“ST_billing”和“ST_stats”的結(jié)構(gòu)的2個(gè)STI。時(shí)常,還使用相似遞歸構(gòu)造的單元格范圍的幾個(gè)實(shí)例。在如上所述的和如圖18A所示的我們例子的邏輯內(nèi),在新表格中為每個(gè)客戶創(chuàng)建相似遞歸構(gòu)造的單元格范圍。在當(dāng)前沒(méi)有其它工具真正可用的電子表格環(huán)境的背景下,經(jīng)常通過(guò)剪切/復(fù)制和粘貼操作來(lái)創(chuàng)建這樣相似遞歸構(gòu)造的單元格范圍的實(shí)例。我們已經(jīng)描述過(guò)用于創(chuàng)建STI的傳統(tǒng)工具的局限性。由于RSTI的雙重結(jié)構(gòu),創(chuàng)建RSTI甚至更加困難和更易于出錯(cuò)。實(shí)際上,操縱這樣遞歸對(duì)象時(shí)出現(xiàn)的額外困難就是確定應(yīng)該進(jìn)行給定操作(譬如,復(fù)制-粘貼遞歸對(duì)象,識(shí)別遞歸對(duì)象內(nèi)包含行數(shù)據(jù)或結(jié)構(gòu)專用數(shù)據(jù)的區(qū)域,調(diào)整遞歸對(duì)象的尺寸,騰空遞歸對(duì)象內(nèi)的一些字段,糾正由作用于遞歸對(duì)象的以前操作所導(dǎo)致的任何錯(cuò)誤,以及將默認(rèn)值填入遞歸對(duì)象內(nèi)的一些字段中)的結(jié)構(gòu)層。而且,在對(duì)遞歸構(gòu)造的單元格范圍進(jìn)行復(fù)制和粘貼操作之前,用戶必須在目的地位置上為所復(fù)制的遞歸構(gòu)造的單元格范圍預(yù)備地方,因?yàn)槿绻贿@樣做的話,就存在因蓋寫而喪失這個(gè)目的地位置上的先前存在信息的風(fēng)險(xiǎn)。上述的操作鏈迅速地變得單調(diào)乏味、漫長(zhǎng)和易于出錯(cuò),主要由于當(dāng)使用傳統(tǒng)工具時(shí),遞歸構(gòu)造的單元格范圍的尺寸和復(fù)雜度會(huì)迅速達(dá)到人的極限。在本發(fā)明的優(yōu)選實(shí)施例中,通過(guò)使電子表格用戶進(jìn)行如下操作,提供了對(duì)這些問(wèn)題的用戶友好解決方案,這些操作為●為單元格范圍定義超級(jí)結(jié)構(gòu),包括●(i)由一個(gè)或多個(gè)RME組成的可選頁(yè)眉部分;●(ii)由一個(gè)RE組成的必有主體部分;●(iii)由一個(gè)或多個(gè)RME組成的可選頁(yè)腳部分。
頁(yè)眉部分的每個(gè)RME的結(jié)構(gòu)被定義成每一個(gè)對(duì)應(yīng)于ST的超級(jí)結(jié)構(gòu)字段的有序集合(collection)。
主體部分的所有RE的結(jié)構(gòu)被定義成每一個(gè)對(duì)應(yīng)于ST的超級(jí)結(jié)構(gòu)字段的有序集合。
頁(yè)腳部分的每個(gè)RME的結(jié)構(gòu)被定義成每一個(gè)對(duì)應(yīng)于ST的超級(jí)結(jié)構(gòu)字段的有序集合。
這種超級(jí)結(jié)構(gòu)被稱為RST??傊?,RST通過(guò)指定字段個(gè)數(shù)、通過(guò)引用定義主體部分的RE、和可選地,通過(guò)引用定義頁(yè)眉部分或頁(yè)腳部分的一個(gè)或幾個(gè)RME’s來(lái)定義超級(jí)結(jié)構(gòu)。
●管理RST’s和稱為RE’s和RME’s的在它下面定義的對(duì)象。
●創(chuàng)建或更新RE’s。
●創(chuàng)建或更新RME’s。
●創(chuàng)建或更新RST。
●創(chuàng)建服從定義的RST的RSTI。
如下的一組工具支持上面的一組功能●“RST管理器”方法,或簡(jiǎn)稱為RSTM方法;●“RE編輯器”方法,或簡(jiǎn)稱為REE方法;●“RST編輯器”方法,或簡(jiǎn)稱為RSTE方法;●“RST實(shí)例化器”方法,或簡(jiǎn)稱為RSTI方法。
在如下章節(jié)中,更詳細(xì)地描述這組功能。
在我們的例子中,RST被發(fā)展成定義“NSP客戶資源庫(kù)(repository)”的通用結(jié)構(gòu),因此,便于創(chuàng)建所述“NSP客戶資源庫(kù)”的幾個(gè)實(shí)例?,F(xiàn)在參照?qǐng)D18B,定義“NSP客戶資源庫(kù)”的結(jié)構(gòu)的RST●(i)指定超級(jí)結(jié)構(gòu)字段的個(gè)數(shù),在我們的例子中,為2(兩)個(gè)。
●(ii)通過(guò)如下步驟定義“NSP客戶資源庫(kù)”的頁(yè)眉部分2052●定義第一ST的“ST_cust_data”、和第二ST的“ST_contacts”的結(jié)構(gòu)。
●定義包含前兩個(gè)ST的第一RME2058的結(jié)構(gòu)。
●定義第三ST的“ST_SLA”、和第四ST的“ST_support_team”的結(jié)構(gòu)。
●定義包含前兩個(gè)ST’s的第二RME 2057的結(jié)構(gòu)。
●(iii)通過(guò)如下步驟定義“NSP客戶資源庫(kù)”的主體部分2053●定義第五ST的“ST_res_info”、和第六ST的“ST_pb_log”的結(jié)構(gòu)。
●定義包含前兩個(gè)ST的RE2056的結(jié)構(gòu)。
●(iv)通過(guò)如下步驟定義“NSP客戶資源庫(kù)”的頁(yè)腳部分2054●定義第一ST的“ST_billing”、和第二ST的“ST_stats”的結(jié)構(gòu)。
●定義包含前兩個(gè)ST的RME2055的結(jié)構(gòu)。
根據(jù)上面的RST2051,可以以對(duì)用戶而言非常有限的成本創(chuàng)建像如圖18A所示的那個(gè)那樣的一個(gè)或幾個(gè)RSTI,并因此,避免了許多出錯(cuò)風(fēng)險(xiǎn)。
將對(duì)象插入RSTI中給定上面簡(jiǎn)述的和在如下章節(jié)中精確定義的解決方案,電子表格用戶現(xiàn)在能夠在RST中定義單元格范圍超級(jí)結(jié)構(gòu),和創(chuàng)建服從在RST中定義的超級(jí)結(jié)構(gòu)、包括給定個(gè)數(shù)的RE’s的RSTI,RE’s它們本身包括服從ST’s的結(jié)構(gòu)的較低層所構(gòu)造的單元格范圍。在我們“NSP客戶資源庫(kù)”的例子中,新創(chuàng)建的RSTI通常表現(xiàn)得像18A所示那樣。一旦完成這個(gè)創(chuàng)建,用戶現(xiàn)在可以將數(shù)據(jù)填入RSTI中,馬上利用提供必須區(qū)域以記錄所有所需客戶相關(guān)信息的預(yù)定構(gòu)造實(shí)例,并且,保存這個(gè)RSTI,作為電子表格文件的一部分,以便在需要的時(shí)候,進(jìn)一步使用它。在我們的例子中,和現(xiàn)在參照?qǐng)D18A,用戶將會(huì)●(i)為了限定(qualify)客戶、合同、和客戶支持團(tuán)隊(duì),填充包括在頁(yè)眉部分2002中的四個(gè)STI’s(“客戶數(shù)據(jù)”、“客戶聯(lián)系人”、“服務(wù)層協(xié)議”、和“支持團(tuán)隊(duì)”)。
●(ii)為了限定在合同服務(wù)的范圍內(nèi)的三個(gè)客戶管理資源,填充三對(duì)STI’s(“資源信息”和“問(wèn)題日志”)。
●(iii)為了限定客戶的結(jié)算/開(kāi)票和服務(wù)層計(jì)量(measurement),填充兩個(gè)STI’s(“結(jié)算”和“問(wèn)題統(tǒng)計(jì)”)。
一旦填入數(shù)據(jù),RSTI就包括如圖18A所示的數(shù)據(jù)和結(jié)果。但是,用戶可能需要迅速更新RSTI,例如,為了插入新的信息段。對(duì)于我們“NSP客戶資源庫(kù)”的例子,電子表格用戶可能不得不處理實(shí)例,例如,在客戶支持團(tuán)隊(duì)中引入新成員,引入新客戶管理資源,或在問(wèn)題日志中引入新問(wèn)題。除了將新元素插入STI內(nèi)所固有的難度之外,如前面所述,將新信息段插入RST內(nèi)甚至更富挑戰(zhàn)性,因?yàn)椤窨梢栽诓煌Y(jié)構(gòu)層上定義引入的對(duì)象。例如,引入新客戶支持團(tuán)隊(duì)成員或在問(wèn)題日志中引入新問(wèn)題在于在所定義的STI(分別是“支持團(tuán)隊(duì)”和“問(wèn)題日志”STI)中引入新元素,而引入新客戶管理資源則要求根據(jù)相關(guān)RE2056的結(jié)構(gòu),在RSTI2001的主體部分2003內(nèi)引入一對(duì)STI“資源信息”和“問(wèn)題日志”。因此,由于任何錯(cuò)誤都不得不通過(guò)維護(hù)RSTI的雙層結(jié)構(gòu)來(lái)恢復(fù),用戶必須進(jìn)行謹(jǐn)慎的插入操作。
●引入對(duì)象造成的副作用在RSTI的較低結(jié)構(gòu)層上可能是有害的(例如,通過(guò)破壞定義為RSTI一部分的STI),或者,通過(guò)破壞構(gòu)成RSTI的各種各樣STI的組織,而在較高結(jié)構(gòu)層上可能也是有害的。在STI內(nèi)的插入操作的描述中已經(jīng)解決了前一種情況。當(dāng)電子表格用戶需要在RSTI2001的主體部分2003的頂部插入新客戶管理資源時(shí),可以例示后一種情況。在這種情況下,必須在“服務(wù)層協(xié)議”STI和頂部“資源信息”STI之間插入新“資源信息”STI;和必須在“支持團(tuán)隊(duì)”STI和頂部“問(wèn)題日志”STI之間插入新“問(wèn)題日志”STI。由于兩個(gè)新插入的STI’s的高度未必相等,并且作為上部STI“服務(wù)層協(xié)議”和“支持團(tuán)隊(duì)”的底行,插入的結(jié)果最有可能是,屬于主體部分2003的兩個(gè)頂部現(xiàn)有STI’s不再水平對(duì)齊,因此,破壞了RSTI2001的超級(jí)結(jié)構(gòu)。
在本發(fā)明的優(yōu)選實(shí)施例中,通過(guò)在保證RSTI的所有RE和下面STI元素的完整性的同時(shí),將新RE’s引入RSTI中,或者,將新元素引入RSTI的所選STI成員中,使電子表格用戶可以改變現(xiàn)有RSTI,提供了對(duì)這些問(wèn)題的用戶友好解決方案。上面的功能被稱為“RSTI插入管理器”方法,或簡(jiǎn)稱為RSTIIM方法,在如下的章節(jié)中,更詳細(xì)地定義它。
B.概念和詞匯這個(gè)章節(jié)的目的是形式化在本發(fā)明的范圍內(nèi)定義的一些概念(與對(duì)象相關(guān)聯(lián))和一些詞匯。在如下的描述中,假設(shè)電子表格采取二維(2D)形式,以便可以在2D環(huán)境下描述表格和結(jié)構(gòu)。此外,假設(shè)表格垂直組織,以便表格標(biāo)題(heading)在表格的頂部,而不是在它的左側(cè)。這樣就可以非常清晰地描述作為本發(fā)明組成部分的各種各樣原始概念、對(duì)象和方法,但無(wú)論如何,這不會(huì)對(duì)本發(fā)明的范圍構(gòu)成限制。也就是說(shuō),下面的描述可以推廣到水平組織的2D表格的環(huán)境或3D表格的環(huán)境,而不偏離本發(fā)明的精神。
B1.基本定義構(gòu)造單元格范圍所構(gòu)造的單元格范圍是服從將數(shù)據(jù)組織成行和列的某種結(jié)構(gòu)的單元格范圍。列定義旨在每一行上包含相同類型的信息的字段。行定義記錄(或元素)。
表格字表可以用于指定所構(gòu)造的單元格范圍。
字段字段是數(shù)據(jù)庫(kù)或表格中包括每個(gè)記錄(或元素)的相同類型信息的帶標(biāo)記列。例如,客戶表可以包含標(biāo)有名稱、地址和電話號(hào)碼(tel#)的字段。
推廣之,在給定記錄(或元素)中,給定字段指的是位于記錄(或元素)和給定字段(帶標(biāo)記列)的交點(diǎn)上的單元格。
上面的定義用于列定義字段和行定義記錄的2D環(huán)境。
可以在行定義字段和列定義記錄的2D環(huán)境中調(diào)換它們。
也可以在例如頁(yè)定義記錄的3D環(huán)境中調(diào)換它們。
輸入/輸出單元格當(dāng)假設(shè)用于記錄用戶提供的信息時(shí),將單元格指定成“輸入”單元格。當(dāng)假設(shè)用于生成信息(一般通過(guò)其變量(argument)直接或間接引用“輸入”單元格的公式獲得)時(shí),將單元格指定成“輸出”單元格。
B2.對(duì)象定義定義如下對(duì)象有助于理解本發(fā)明。
元素格式EF是用格式屬性定義2維或3維單元格范圍內(nèi)的元素的結(jié)構(gòu)的電子表格對(duì)象,這些屬性為●背景屬性(顏色、圖案等);●對(duì)齊屬性(水平、垂直、文本環(huán)繞、跨列對(duì)齊(alignment across column)等);●字體屬性(大小、顏色等);●線屬性(類型、顏色等);●字段保護(hù);和●任何其它傳統(tǒng)格式屬性。
元元素格式MEF是依據(jù)格式屬性定義2維或3維單元格范圍內(nèi)的元元素的結(jié)構(gòu)的電子表格對(duì)象,這些屬性為●背景屬性(顏色、圖案等);●對(duì)齊屬性(水平、垂直、文本環(huán)繞、單元格合并等);●字體屬性(大小、顏色等);●線屬性(類型、顏色等);●字段保護(hù);和●任何其它傳統(tǒng)格式屬性。
元素概要EP是用內(nèi)容和目的定義2維或3維單元格范圍內(nèi)的元素的結(jié)構(gòu)的電子表格對(duì)象●從包括在同一元素的其它字段中,或同一STI的另一個(gè)元素或元元素的其它字段中,或甚至STI之外的其它字段中的數(shù)據(jù)中計(jì)算的字段公式。
●在元素創(chuàng)建時(shí)指定的字段默認(rèn)值。
●單元格的目的(為“輸入”單元格輸入的數(shù)據(jù)或?yàn)椤拜敵觥眴卧裆傻臄?shù)據(jù))。
元元素概要MEP是依據(jù)內(nèi)容和目的地定義2維或3維單元格范圍內(nèi)的元元素的結(jié)構(gòu)的電子表格對(duì)象,這些內(nèi)容和目的地●用于根據(jù)包括在同一元素的其它單元格中、或在同一STI的另一個(gè)元素或元元素的其它單元格中、或甚至在STI之外的其它單元格中的數(shù)據(jù)中計(jì)算的單元格公式。
●在元元素創(chuàng)建時(shí)賦予的單元格默認(rèn)值。
●單元格的目的(為“輸入”單元格輸入的數(shù)據(jù)或?yàn)椤拜敵觥眴卧裆傻臄?shù)據(jù))。
可縮放模板(也稱為“模板”或“ST”)ST是用{元素+元元素}布局定義2維或3維單元格范圍的結(jié)構(gòu)的電子表格對(duì)象。字匯(word)“可縮放”指的是為尺寸可變(例如,從最小值到最大值)單元格范圍定義給定結(jié)構(gòu)的ST的能力。ST通過(guò)如下來(lái)定義結(jié)構(gòu)●指定字段個(gè)數(shù);●引用定義每個(gè)主體元素的一對(duì)EF和/或EP;和●可選地,引用一對(duì)或幾對(duì)MEF和/或MEP。
在2維環(huán)境中,這樣的MEF’s/MEP’s位于構(gòu)成ST“頁(yè)眉”部分的EF/EP之上,或位于構(gòu)成ST“頁(yè)腳”部分的EF/EP之下。ST“頁(yè)眉”部分或ST“頁(yè)腳”部分,或它們二者都有可能是空的。當(dāng)元素和元元素引用(reference)只由EP和MEP構(gòu)成時(shí),那么,ST只攜帶內(nèi)容信息,因此,可以被命名為可縮放概要化模板。當(dāng)元素和元元素引用只由EF和MEF構(gòu)成時(shí),那么,ST只攜帶格式信息,因此,可以被命名為可縮放格式化模板。當(dāng)元素和元元素引用由EP’s和EF’s兩者的任何組合構(gòu)成時(shí),那么,ST攜帶概要和格式信息,因此,可以被命名為可縮放概要化和格式化模板。
可縮放模板實(shí)例(也稱為“實(shí)例”、“可縮放實(shí)例”或“STI”)STI是服從如下所定義ST的結(jié)構(gòu)的電子表格對(duì)象可縮放格式化模板、可縮放概要化模板、或可縮放概要化和格式化模板??梢詫TI視作ST的繼承對(duì)象(heir obiect)。它包含可變數(shù)量個(gè)元素(至少一個(gè)),這些元素包含在每個(gè)字段中與父結(jié)構(gòu)(parent structure)相對(duì)應(yīng)、和構(gòu)成“主體”部分的信息,可選地,加上如ST所定義的、和構(gòu)成STI的“頁(yè)眉”部分和“頁(yè)腳”部分的一個(gè)或幾個(gè)元元素。
元素元素是屬于STI、和由服從在父結(jié)構(gòu)中(分別在可縮放格式化模板、可縮放概要化模板、或可縮放概要化和格式化模板中)找到的EF、EP、(EF,EP)對(duì)的基本字段組成的電子表格對(duì)象。在不會(huì)喪失任何一般性的情況下,假設(shè)元素總是服從(EF,EP)對(duì),其中,EF或EP可以退化成空對(duì)象。
元元素元元素是屬于STI、和由服從MEF、MEP、(MEF,MEP)對(duì)的基本單元格組成的電子表格對(duì)象。在不會(huì)喪失任何一般性的情況下,假設(shè)元元素總是服從(MEF,MEP)對(duì),其中,MEF或MEP可以退化成空對(duì)象。
遞歸元素RE是屬于RST、構(gòu)成RST的主體部分、和由用于記錄ST的名稱的基本字段組成的電子表格對(duì)象。RE具有與元素的結(jié)構(gòu)相似的結(jié)構(gòu),但不是被實(shí)例化成單元格范圍,而是被實(shí)例化成STI’s的范圍。
例子如圖18B所示的RST2051的RE對(duì)應(yīng)于構(gòu)成這個(gè)RST的主體部分2053、和由分別包含ST的“ST_res_info”和“ST_pb_log”的名稱的兩個(gè)字段組成的結(jié)構(gòu)2056。
遞歸元元素RME是屬于RST、屬于RST的頁(yè)眉和/或頁(yè)腳部分、和由用于記錄ST的名稱的基本字段組成的電子表格對(duì)象。RME具有與元元素的結(jié)構(gòu)相似的結(jié)構(gòu),但不是被實(shí)例化成單元格范圍,而是被實(shí)例化成STI的范圍。
例子如圖18B所示的RST2052的RME對(duì)應(yīng)于屬于這個(gè)RST的主體部分2052、和由分別包含ST的“ST_cust_data”和“ST_contacts”的名稱的兩個(gè)字段組成的結(jié)構(gòu)2058。
遞歸可縮放模板(也稱為“遞歸模板”或“RST”)RST是用{RE+RME}布局定義2維或3維單元格范圍的超級(jí)結(jié)構(gòu)的電子表格對(duì)象字匯“可縮放”指的是為尺寸可變(例如,從最小值到最大值)單元格范圍定義給定超級(jí)結(jié)構(gòu)的RST的能力。RST通過(guò)如下來(lái)定義超級(jí)結(jié)構(gòu)●指定字段個(gè)數(shù);●引用定義RST的主體元素的RE;和●可選地,引用一個(gè)或幾個(gè)RME。
在2維環(huán)境中,這樣的RME位于構(gòu)成RST“頁(yè)眉”部分的RE之上,或位于構(gòu)成RST“頁(yè)腳”部分的RE之下。RST“頁(yè)眉”部分或RST的“頁(yè)腳”部分,或它們二者都有可能是空的。
例子RST2051例示在圖18B中。它由頁(yè)眉部分2052、主體部分2053、和頁(yè)腳部分2054構(gòu)成。頁(yè)眉部分包括兩個(gè)RME2058和2057,兩者都擁有兩個(gè)字段,和分別包含ST的“ST_cust_data”、“ST_contacts”和“ST_SLA”、“ST_support_team”的名稱。主體部分包括一個(gè)RE 2056,它擁有兩個(gè)字段,分別包含ST的“ST_res_info”、“ST_pb_log”的名稱。頁(yè)腳部分包括一個(gè)RME2055,它擁有兩個(gè)字段,分別包含ST的“ST_billing”、“ST_stats”的名稱。
遞歸可縮放模板實(shí)例(也稱為“遞歸實(shí)例”、“遞歸可縮放實(shí)例”或“RSTI”)RSTI是服從所定義RST的結(jié)構(gòu)的電子表格對(duì)象??梢詫STI視作RST的繼承對(duì)象。它包含可變數(shù)量個(gè)容器行(container row)(至少一個(gè)),這些容器行包含與父RE結(jié)構(gòu)相對(duì)應(yīng)、和構(gòu)成“主體”部分的一個(gè)或多個(gè)STI,可選地,加上包含與父RME結(jié)構(gòu)相對(duì)應(yīng)、和構(gòu)成RSTI的“頁(yè)眉”部分和“頁(yè)腳”部分的一個(gè)或多個(gè)STI的一個(gè)或幾個(gè)其它容器行。
例子RSTI2001例示在圖18A中。這個(gè)RSTI服從如圖18B所示的RST2051。它由頁(yè)眉部分2002、主體部分2003、和頁(yè)腳部分2004構(gòu)成。頁(yè)眉部分包括兩個(gè)容器行2012和2011。主體部分包括三個(gè)容器行2010、2009和2008。頁(yè)腳部分包括一個(gè)容器行2007。每個(gè)容器行包含兩個(gè)補(bǔ)償器范圍,譬如,可以看作頂容器行2012和右容器列2005的交點(diǎn)的容器范圍(containerrange)2014。每個(gè)容器范圍包含服從定義成RST2051的RE或RME成員的一部分的ST的結(jié)構(gòu)的STI。例如,包括在容器行2010和容器列2005的補(bǔ)償器范圍交點(diǎn)內(nèi)的STI 2034服從如在RST 2051的RME 2056中定義的那樣、名為“ST_pb_log”的ST的結(jié)構(gòu),并且,本身由頁(yè)眉部分2015、主體部分2016、和頁(yè)腳部分2017構(gòu)成。
容器行(container row)容器行是屬于RSTI、和與包含根據(jù)RSTI服從的RST的RE或RME部分的定義構(gòu)造的STI的單元格范圍相對(duì)應(yīng)的電子表格對(duì)象。容器行的行數(shù)等于它包含的最高STI的行數(shù)。容器行也可以稱為遞歸元素實(shí)例。容器行在RSTI內(nèi)可以被看作等效于STI內(nèi)的元素。
例子容器行2012例示在圖18A中,與包括在RSTI2001內(nèi)定義的STI2032和2013的單元格范圍相對(duì)應(yīng)。這個(gè)容器行的行數(shù)等于比STI2013高的STI2032的行數(shù)。
容器列(container column)容器列是屬于RSTI、和與包含在RSTI的容器行內(nèi)占據(jù)相同超級(jí)結(jié)構(gòu)位置的STI的單元格范圍相對(duì)應(yīng)的電子表格對(duì)象。容器列的列數(shù)等于它包含的最寬STI的列數(shù)。
例子容器列2006例示在圖18A中,與包括在RSTI2001內(nèi)占據(jù)最左位置的STI的單元格范圍相對(duì)應(yīng)。這個(gè)容器列的列數(shù)等于STI2030的列數(shù),STI2030是RSTI2001左側(cè)最寬的STI。
容器范圍容器范圍是屬于RSTI、和與容器行和容器列的交點(diǎn)相對(duì)應(yīng)的電子表格對(duì)象。每個(gè)容器范圍包含占據(jù)左上角的單個(gè)STI。RSTI內(nèi)的容器范圍可以被看作等效于STI內(nèi)的單個(gè)單元格。
例如容器范圍2014例示在圖18A中,與兩者都屬于RSTI2001的容器行2012和容器列2005的交點(diǎn)相對(duì)應(yīng)。這個(gè)容器范圍2014包含STI2013。
B3.記號(hào)(container column)下列記號(hào)∏i∈Sai對(duì)應(yīng)于項(xiàng)ai的乘積,指標(biāo)i屬于集合S。下列記號(hào)LCM({ai})i∈S對(duì)應(yīng)于項(xiàng)ai的最小公倍數(shù),指標(biāo)i屬于集合S。如果S由單個(gè)元素a構(gòu)成,那么,LCM({ai})i∈S等于a。下列記號(hào)aModb對(duì)應(yīng)于a除以b的余數(shù)。
C.用于管理RST對(duì)象的表格正如在前面章節(jié)中介紹的那樣,本發(fā)明的優(yōu)選實(shí)施例依賴于管理RST的不同類型對(duì)象。將這些對(duì)象記錄在不同資源庫(kù)中,以便可以通過(guò)作為本發(fā)明優(yōu)選實(shí)施例的一部分的不同方法訪問(wèn)和更新它們。這樣的資源庫(kù)被稱為表格●EF表或簡(jiǎn)稱為EFT;●EP表或簡(jiǎn)稱為EPT;●ST表或簡(jiǎn)稱為STT;●ST描述符表或簡(jiǎn)稱為STDT;●ST實(shí)例化器表或簡(jiǎn)稱為STIT;●RE表或簡(jiǎn)稱為RET;●RST表或簡(jiǎn)稱為RSTT;●RST管理器表或簡(jiǎn)稱為RSTMT;●RST描述符表或簡(jiǎn)稱為RSTDT;●RSTI表或簡(jiǎn)稱為RSTIT;●RSTI描述符表或簡(jiǎn)稱為RSTIDT。
EFT、EPT、STT、STDT、STIT、RET、RSTT、RSTDT、RSTIT、和RSTIDT表作為電子表格盤文件的一部分保存在大容量存儲(chǔ)器107上,而RSTMT表臨時(shí)保存在主存儲(chǔ)器102上和RSTEIT表保存在電子表格輸出-輸入文件上。
C1.EF表現(xiàn)在參照?qǐng)D7A,根據(jù)本發(fā)明,EFT表700對(duì)應(yīng)于由幾個(gè)記錄701組成的簡(jiǎn)單邏輯結(jié)構(gòu),它們的每一個(gè)對(duì)應(yīng)于EF或MEF。每個(gè)記錄包括六個(gè)字段●“Name(名稱)”702字段用于記錄唯一地標(biāo)識(shí)當(dāng)前記錄701描述的EF或MEF的字符串。
●“Last Change Date(最后變化日期)”703字段用于記錄當(dāng)前記錄701描述的EF或MEF的最后更新日期。
●“Description(描述)Ptr”704字段是指向記錄描繪當(dāng)前記錄701描述的EF或MEF的例示單元格范圍的存儲(chǔ)單元的引用。這個(gè)存儲(chǔ)單元可以在大容量存儲(chǔ)器107上,在主存儲(chǔ)器102上,或在其它傳統(tǒng)存儲(chǔ)器資源庫(kù)裝置上,這不偏離本發(fā)明的精神。
●“Row#(行)”705字段用于記錄出現(xiàn)在當(dāng)前記錄701描述的EF或MEF中的行數(shù)。這個(gè)字段適用于元素或MEF對(duì)應(yīng)于2D結(jié)構(gòu)的3D ST。在采用2D ST的本發(fā)明優(yōu)選實(shí)施例中,總是用值1填充這個(gè)字段。
●“Column#(列)”706字段用于記錄出現(xiàn)在當(dāng)前記錄701描述的EF或MEF中的列數(shù)。
●“Type(類型)”707字段用于記錄與當(dāng)前記錄701描述的EF或MEF相關(guān)聯(lián)的不同屬性這是指定當(dāng)前記錄701是否描述EF或MEF的“META”屬性708(具有相應(yīng)值“NO”和“YES”)、和通過(guò)專用子字段(709a、709b、709c、709d和709e)指定與其它對(duì)象的關(guān)系的“REFERENCED(引用)”屬性709。這些子字段被描述成“REFERENCED”屬性2240的描述的一部分。傳統(tǒng)技術(shù)可以用于編碼這個(gè)“Type”字段中的這些不同屬性,譬如,用預(yù)定位組合模式(bitpattern)進(jìn)行逐位XOR(“異或”)運(yùn)算,但也可以改用任何其它傳統(tǒng)手段而不偏離本發(fā)明的精神。
C2.EP表現(xiàn)在參照?qǐng)D7B,根據(jù)本發(fā)明,EPT表710對(duì)應(yīng)于由幾個(gè)記錄711組成的簡(jiǎn)單邏輯結(jié)構(gòu),它們的每一個(gè)對(duì)應(yīng)于EP或MEP。每個(gè)記錄包括六個(gè)字段●“Name”712字段用于記錄唯一地標(biāo)識(shí)當(dāng)前記錄711描述的EP或MEP的字符串。
●“Last Change Date”713字段用于記錄當(dāng)前記錄711描述的EP或MEP的最后更新日期。
●“Description Ptr”714字段是指向記錄描繪當(dāng)前記錄711描述的EP或MEP的例示單元格范圍的存儲(chǔ)單元的引用。這個(gè)存儲(chǔ)單元可以在大容量存儲(chǔ)器107上,在主存儲(chǔ)器102上,或在其它傳統(tǒng)存儲(chǔ)器資源庫(kù)裝置上,這不偏離本發(fā)明的精神。
●“Row#”715字段用于記錄出現(xiàn)在當(dāng)前記錄711描述的EP或MEP中的行數(shù)。這個(gè)字段適用于元素或MEP對(duì)應(yīng)于2D結(jié)構(gòu)的3D ST。在采用2D ST的本發(fā)明優(yōu)選實(shí)施例中,總是用值1填充這個(gè)字段。
●“Column#”716字段用于記錄出現(xiàn)在當(dāng)前記錄711描述的EP或MEP中的列數(shù)。
●“Type”717字段用于記錄與當(dāng)前記錄711描述的EP或MEP相關(guān)聯(lián)的不同屬性這是指定當(dāng)前記錄711是否描述EP或MEP的“META”屬性718(具有相應(yīng)值“NO”和“YES”)、和通過(guò)專用子字段(719a、719b、719c、719d和719e)指定與其它對(duì)象的關(guān)系的“REFERENCED”屬性719。這些子字段被描述成“REFERENCED”屬性2240的描述的一部分。傳統(tǒng)技術(shù)可以用于編碼這個(gè)“Type”字段中的這些不同屬性,譬如,用預(yù)定位組合模式進(jìn)行逐位XOR運(yùn)算,但也可以改用任何其它傳統(tǒng)手段而不偏離本發(fā)明的精神。
C3.ST表現(xiàn)在參照?qǐng)D7C,根據(jù)本發(fā)明,STT表720對(duì)應(yīng)于由幾個(gè)記錄721組成的簡(jiǎn)單邏輯結(jié)構(gòu),它們的每一個(gè)對(duì)應(yīng)于ST。每個(gè)記錄包括六個(gè)字段●“Name”722字段用于記錄唯一地標(biāo)識(shí)當(dāng)前記錄721描述的ST的字符串。
●“Last Change Date”723字段用于記錄當(dāng)前記錄721描述的ST的最后更新日期。
●“Description Ptr”724字段是指向記錄當(dāng)前記錄721描述的ST的描述的存儲(chǔ)單元的引用。這個(gè)存儲(chǔ)單元可以在大容量存儲(chǔ)器107上,在主存儲(chǔ)器102上,或在其它傳統(tǒng)存儲(chǔ)器資源庫(kù)裝置上,這不偏離本發(fā)明的精神。這個(gè)描述是根據(jù)例示在圖7D中的STDT表760構(gòu)造的,也就是說(shuō),被構(gòu)造成數(shù)對(duì)名稱的有序列表,每一對(duì)由元素或MEF的名稱和元素或MEP的名稱組成。
●“Min Element(最小元素)#”725字段用于記錄在服從當(dāng)前記錄721描述的ST的每個(gè)STI中找到的最小元素?cái)?shù)。
●“Max Element(最大元素)#”726字段用于記錄在服從當(dāng)前記錄721描述的ST的每個(gè)STI中找到的最大元素?cái)?shù)。
●“Type”727字段用于記錄與當(dāng)前記錄721描述的ST相關(guān)聯(lián)的不同屬性這是總是取值“NO”的“META”屬性728、和通過(guò)專用子字段(729a、729b、729c、729d和729e)指定與其它對(duì)象的關(guān)系的“REFERENCED”屬性729。這些子字段被描述成“REFERENCED”屬性2240的描述的一部分。傳統(tǒng)技術(shù)可以用于編碼這個(gè)“Type”字段中的這些不同屬性,譬如,用預(yù)定位組合模式進(jìn)行逐位XOR運(yùn)算,但也可以改用任何其它傳統(tǒng)手段而不偏離本發(fā)明的精神。
C4.ST描述符表現(xiàn)在參照?qǐng)D7D,STDT表760對(duì)應(yīng)于由幾對(duì)元素或MEF765和元素或MEP766組成的簡(jiǎn)單邏輯結(jié)構(gòu),這個(gè)結(jié)構(gòu)被組織成三個(gè)子集●可選ST“頁(yè)眉”部分767,由像頂對(duì)761那樣的可變個(gè)(可能零個(gè))對(duì)組成。這些對(duì)的每一個(gè)由MEF(列765)和MEP(列764)構(gòu)成。
●由單對(duì)組成的必有“主體”部分762,這個(gè)單對(duì)由EF(列765)和EP(列764)構(gòu)成。
●可選ST“頁(yè)腳”部分766,由像底對(duì)763那樣的可變個(gè)(可能零個(gè))對(duì)組成。這些對(duì)的每一個(gè)由MEF(列765)和MEP(列764)構(gòu)成。
C5.ST實(shí)例化器表現(xiàn)在參照?qǐng)D7E,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,STIT表750對(duì)應(yīng)于由幾個(gè)記錄751組成的簡(jiǎn)單邏輯結(jié)構(gòu),它們的每一個(gè)對(duì)應(yīng)于STI。每個(gè)記錄包括六個(gè)字段●“Address(地址)”752字段用于定位當(dāng)前記錄751描述的STI它的值對(duì)應(yīng)于用于記錄任何單元格范圍的地址的傳統(tǒng)字符串。
●“ST”753字段用于記錄服從當(dāng)前記錄751描述的STI的ST的名稱。
●“Element(元素)#”754字段用于記錄當(dāng)前記錄751描述的STI內(nèi)的元素?cái)?shù)。
●“Critical(關(guān)鍵的)”755字段用于記錄是否認(rèn)為當(dāng)前記錄751描述的STI是關(guān)鍵性的。它的內(nèi)容可以取值“YES”或“NO”。
●“Header Size(頁(yè)眉尺寸)”756字段用于記錄構(gòu)成當(dāng)前記錄751描述的STI的頁(yè)眉部分的元元素?cái)?shù)。
●“Footer Size(頁(yè)腳尺寸)”757字段用于記錄構(gòu)成當(dāng)前記錄751描述的STI的頁(yè)腳部分的元元素?cái)?shù)。
C6.RE表現(xiàn)在參照?qǐng)D20A,根據(jù)本發(fā)明,RET表2210對(duì)應(yīng)于由幾個(gè)記錄2211組成的簡(jiǎn)單邏輯結(jié)構(gòu),它們的每一個(gè)對(duì)應(yīng)于RME。每個(gè)記錄包括六個(gè)字段●“Name”2212字段用于記錄唯一地標(biāo)識(shí)當(dāng)前記錄2211描述的RE或RME的字符串。
●“Last Change Date”2213字段用于記錄當(dāng)前記錄2211描述的RE或RME的最后更新日期。
●“Description Ptr”2214字段是指向記錄描繪當(dāng)前記錄2211描述的RE或RME的例示單元格范圍的存儲(chǔ)單元的引用。這個(gè)存儲(chǔ)單元可以在大容量存儲(chǔ)器107上,在主存儲(chǔ)器102上,或在其它傳統(tǒng)存儲(chǔ)器資源庫(kù)裝置上,這不偏離本發(fā)明的精神。
●“Row#”2215字段用于記錄出現(xiàn)在當(dāng)前記錄2211描述的RE或RME中的行數(shù)。這個(gè)字段適用于RE或RME對(duì)應(yīng)于2D結(jié)構(gòu)的3D RST。在采用2D RST的本發(fā)明優(yōu)選實(shí)施例中,總是用值1填充這個(gè)字段。
●“Column#”2216字段用于記錄出現(xiàn)在當(dāng)前記錄2211描述的RE或RME中的列數(shù)。
●“Type”2217字段用于記錄與當(dāng)前記錄2211描述的RE或RME相關(guān)聯(lián)的不同屬性這是指定當(dāng)前記錄2211是否描述RE或RME的“META”屬性2218(具有相應(yīng)值“NO”和“YES”)、和通過(guò)專用子字段(2219a、2219b、2219c、2219d和2219e)指定與其它對(duì)象的關(guān)系的“REFERENCED”屬性2219。這些子字段被描述成“REFERENCED”屬性2240的描述的一部分。傳統(tǒng)技術(shù)可以用于編碼這個(gè)“Type”字段中的這些不同屬性,譬如,用預(yù)定位組合模式進(jìn)行逐位XOR(“異或”)運(yùn)算,但也可以改用任何其它傳統(tǒng)手段而不偏離本發(fā)明的精神。
C7.RST表現(xiàn)在參照?qǐng)D20B,根據(jù)本發(fā)明,RSTT表2220對(duì)應(yīng)于由幾個(gè)記錄2221組成的簡(jiǎn)單邏輯結(jié)構(gòu),它們的每一個(gè)對(duì)應(yīng)于RST。每個(gè)記錄包括六個(gè)字段●“Name”2222字段用于記錄唯一地標(biāo)識(shí)當(dāng)前記錄2221描述的RST的字符串。
●“Last Change Date”2223字段用于記錄當(dāng)前記錄2221描述的RST的最后更新日期。
●“Description Ptr”2224字段是指向記錄當(dāng)前記錄2221描述的RST的描述的存儲(chǔ)單元的引用。這個(gè)存儲(chǔ)單元可以在大容量存儲(chǔ)器107上,在主存儲(chǔ)器102上,或在其它傳統(tǒng)存儲(chǔ)器資源庫(kù)裝置上,這不偏離本發(fā)明的精神。這個(gè)描述是根據(jù)例示在圖20D中的RSTDT表2250構(gòu)造的,也就是說(shuō),被構(gòu)造成RME或RE名稱的有序列表。
●“Min Element#”2225字段用于記錄在服從當(dāng)前記錄2221描述的RST的每個(gè)RSTI中找到的最小RE個(gè)數(shù)。
●“Max Element#”2226字段用于記錄在服從當(dāng)前記錄2221描述的RST的每個(gè)STI中找到的最大RE個(gè)數(shù)。
●“Type”2227字段用于記錄與當(dāng)前記錄2221所描述的RST相關(guān)聯(lián)的不同屬性這是總是取值“NO”的“META”屬性2228、和通過(guò)專用子字段(2229a、2229b、2229c、2229d和2229e)指定與其它對(duì)象的關(guān)系的“REFERENCED”屬性2229。這些子字段被描述成“REFERENCED”屬性2240的描述的一部分。傳統(tǒng)技術(shù)可以用于編碼這個(gè)“Type”字段中的這些不同屬性,譬如,用預(yù)定位組合模式進(jìn)行逐位XOR運(yùn)算,但也可以改用任何其它傳統(tǒng)手段而不偏離本發(fā)明的精神。
C8.RST管理器表現(xiàn)在參照?qǐng)D20C,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,RSTMT表2230對(duì)應(yīng)于由幾個(gè)記錄2231組成的簡(jiǎn)單邏輯結(jié)構(gòu),它們的每一個(gè)對(duì)應(yīng)于RST管理器管理的對(duì)象。每個(gè)記錄包括七個(gè)字段●“Name”2232字段用于記錄唯一地標(biāo)識(shí)當(dāng)前記錄2231描述的對(duì)象的字符串。
●“Last Change Date”2233字段用于記錄當(dāng)前記錄2231描述的對(duì)象的最后更新日期。
●“Description Ptr”2234字段是指向記錄當(dāng)前記錄2231描述的對(duì)象的描述的存儲(chǔ)單元的引用。這個(gè)存儲(chǔ)單元可以在大容量存儲(chǔ)器107上,在主存儲(chǔ)器102上,或在其它傳統(tǒng)存儲(chǔ)器資源庫(kù)裝置上,這不偏離本發(fā)明的精神。
●“Info Field(信息字段)1”2235字段用于記錄與當(dāng)前記錄2231描述的對(duì)象相關(guān)聯(lián)的第一段信息。
●“Info Field 2”2236字段用于記錄與當(dāng)前記錄2231描述的對(duì)象相關(guān)聯(lián)的第二段信息。
●“Type”2237字段用于記錄與當(dāng)前記錄2231描述的對(duì)象相關(guān)聯(lián)的不同屬性,譬如●前面為類似“Type”字段707、717、727、777、2217、和2227描述的屬性“META”2239,以及兩個(gè)其它屬性●根據(jù)例示RSTMT表2230的例子的圖20C,由5(五)子字段構(gòu)成的屬性“REFERENCED”2240●“OWN REFERENCE(自有引用)”(或簡(jiǎn)稱為OR)子字段2240a。這個(gè)子字段是創(chuàng)建記錄2231描述的對(duì)象時(shí)指定的唯一質(zhì)數(shù)。只有當(dāng)刪除記錄2231描述的對(duì)象時(shí),才釋放這個(gè)質(zhì)數(shù)。
●“FILIATION REFERENCE(分支引用)”(或簡(jiǎn)稱為FR)子字段2240b。這個(gè)子字段根據(jù)如下公式來(lái)評(píng)估,其中,F(xiàn)集合對(duì)應(yīng)于構(gòu)成記錄2231描述的對(duì)象的一組對(duì)象FR=∏i∈FORi×LCM({FRi})i∈F上面的公式允許動(dòng)態(tài)地將記錄2231所描述的對(duì)象與構(gòu)成它的對(duì)象聯(lián)系在一起,因?yàn)橐蜃覱Ri和FRi之一的值的任何改變都自動(dòng)反映到FR上。如果F集合是空的(例如,當(dāng)記錄2231描述的對(duì)象是EP、MEP、EF、或MEF時(shí)),那么,F(xiàn)R子字段默認(rèn)為值1(一)。
●“INSTANCE REFERENCE(實(shí)例引用)”(或簡(jiǎn)稱為IR)子字段2240c。當(dāng)創(chuàng)建記錄2231描述的對(duì)象時(shí),將這個(gè)子字段初始化成值1(一)。此后,每當(dāng)創(chuàng)建服從這個(gè)對(duì)象的新實(shí)例時(shí),將這個(gè)字段乘以2(二),和每當(dāng)刪除服從這個(gè)對(duì)象的現(xiàn)有實(shí)例時(shí),將這個(gè)字段除以2(二)。
●“REFERENCED OBJECT(所引用對(duì)象)”(或簡(jiǎn)稱為RO)子字段2240d。這個(gè)子字段是指定記錄2231描述的對(duì)象是否參與另一個(gè)對(duì)象的定義的布爾變量。例如,EF、MEF、EP、或MEP可以參與ST的定義。類似地,ST可以參與本身可以參與RST的定義的RE的定義。這個(gè)子字段根據(jù)如下公式來(lái)評(píng)估,其中,P集合對(duì)應(yīng)于RST對(duì)象的分層結(jié)構(gòu)中,其類型遵從記錄2231描述的對(duì)象的類型的一組對(duì)象如果LCM({FRi})i∈PMod OR=0,RO=“YES”;否則,RO=“NO”。
上面的公式允許動(dòng)態(tài)地將記錄2231描述的對(duì)象與屬于P集合的對(duì)象聯(lián)系在一起,因?yàn)橐蜃覨Ri之一的值的任何改變都自動(dòng)反映到RO上。如果記錄2231描述的對(duì)象是EF、MEF、EP、或MEP,那么,P集合對(duì)應(yīng)于ST的集合。如果記錄2231描述的對(duì)象是RE,那么,P集合對(duì)應(yīng)于RST的集合。如果記錄2231描述的對(duì)象是RST,那么,P集合是空的(已經(jīng)到達(dá)頂層),從而RO子字段默認(rèn)為值“NO”。
●“SELECTED CHILDREN(所選子系)”(或簡(jiǎn)稱為SC)子字段2240e。這個(gè)子字段是指定記錄2231描述的對(duì)象是否參與所選對(duì)象的定義的布爾變量。這個(gè)子字段根據(jù)如下公式來(lái)評(píng)估,其中,S集合對(duì)應(yīng)于所選對(duì)象的集合(具有等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR #object∈S,SC=“YES”;否則,SC=“NO”。
上面的公式允許動(dòng)態(tài)地將記錄2231描述的對(duì)象與所選對(duì)象(屬于S集合)聯(lián)系在一起,因?yàn)橐蜃覨Ri之一的值或S集合的任何改變都自動(dòng)反映到SC上。
如在表EFT700、EPT710、STT720、RSTEIT770、RET2210、和RSTT2220內(nèi)定義的那樣的其它“REFERENCED”屬性基于五個(gè)子字段的同一個(gè)集合。
●反映電子表格用戶是否已經(jīng)在RST管理器對(duì)話框2300內(nèi)選擇了相關(guān)對(duì)象的“SELECTED”屬性2242(具有相應(yīng)值“YES”和“NO”),以及●反映對(duì)象是(M)EF,(M)EP,ST,R(M)E,還是RST的“NATURE”屬性2241(具有相應(yīng)值“FORMAT”,“PROFILE”,“TEMPLATE”,“RECELEMENT”或“RECTEMPLATE”)。
傳統(tǒng)技術(shù)可以用于編碼這個(gè)“Type”字段2237中的這些不同屬性,譬如,用預(yù)定位組合模式進(jìn)行逐位XOR運(yùn)算,但也可以改用任何其它傳統(tǒng)手段而不偏離本發(fā)明的精神。
●“Index”2238字段用于像通過(guò)RST管理器方法進(jìn)行的那樣,分類RSTMT表。
C9.RST描述符表現(xiàn)在參照?qǐng)D20D,RSTDT表2250對(duì)應(yīng)于由幾對(duì)RE或RME的名稱2254組成的簡(jiǎn)單邏輯結(jié)構(gòu),這個(gè)結(jié)構(gòu)被組織成三個(gè)子集●可選RST“頁(yè)眉”部分2256,由像頂部名稱2251那樣的可變個(gè)(可能零個(gè))RME名稱組成。
●由單個(gè)RE名稱組成的必有“主體”部分2252。
●可選RST“頁(yè)腳”部分2255,由像底部名稱2253那樣的可變個(gè)(可能零個(gè))RME名稱組成。
C10.RSTI表現(xiàn)在參照?qǐng)D20E,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,RSTIT表2260對(duì)應(yīng)于由幾個(gè)記錄2261組成的簡(jiǎn)單邏輯結(jié)構(gòu),它們的每一個(gè)對(duì)應(yīng)于RSTI。每個(gè)記錄包括六個(gè)字段●“Address”2262字段用于定位當(dāng)前記錄2261描述的RSTI它的值對(duì)應(yīng)于用于記錄任何單元格范圍的地址的傳統(tǒng)字符串。
●“ST”2263字段用于記錄服從當(dāng)前記錄2261描述的RSTI的RST的名稱。
●“Element#”2264字段用于記錄當(dāng)前記錄2261描述的RSTI內(nèi)的RE的個(gè)數(shù)。
●“Critical”2265字段用于記錄是否認(rèn)為當(dāng)前記錄2261描述的RSTI是關(guān)鍵性的。它的內(nèi)容可以取值“YES”或“NO”。
●“Header Size”2266字段用于記錄構(gòu)成當(dāng)前記錄2261描述的RSTI的頁(yè)眉部分的RME的個(gè)數(shù)。
●“Footer Size”2267字段用于記錄構(gòu)成當(dāng)前記錄2261描述的RSTI的頁(yè)腳部分的RME的個(gè)數(shù)。
C11.RSTI描述符表現(xiàn)在參照?qǐng)D20F,根據(jù)本發(fā)明的優(yōu)選實(shí)施例,RSTIDT表2270對(duì)應(yīng)于由幾個(gè)記錄2271組成的簡(jiǎn)單邏輯結(jié)構(gòu),它們的每一個(gè)由幾個(gè)單元格2272組成,它們的每一個(gè)對(duì)應(yīng)于RSTI的STI成員。RSTIDT表2270被映射成具有由一個(gè)或幾個(gè)記錄2271組成的頂部頁(yè)眉部分2275(可能空的)、由一個(gè)或幾個(gè)記錄2271組成的中間主體部分2274、以及由一個(gè)或幾個(gè)記錄2271組成的底部頁(yè)腳部分2273(可能空的)的相關(guān)RSTI的結(jié)構(gòu)。每個(gè)記錄2271包括一個(gè)或多個(gè)單獨(dú)單元格2272,它們的個(gè)數(shù)對(duì)應(yīng)于每個(gè)RE的STI的個(gè)數(shù)。每個(gè)記錄2272包括表示RSTI的STI成員的特征的七個(gè)字段●“Container_range”2276字段用于記錄存放記錄2272描述的STI的容器范圍的地址。參照?qǐng)D18A,如果記錄2272描述STI2013,這個(gè)字段記錄容器2014的地址(容器行2012和容器列2005)的交點(diǎn)。
●“Container_col”2277字段用于記錄存放記錄2272描述的STI的容器范圍的列數(shù)。參照?qǐng)D18A,如果記錄2272描述STI2013,這個(gè)字段記錄列數(shù)2028。
●“STI_col”2278字段用于記錄記錄2272描述的STI的列數(shù)。參照?qǐng)D18A,如果記錄2272描述STI2013,這個(gè)字段記錄列數(shù)2026。
●“STI_row”2279字段用于記錄記錄2272描述的STI的行數(shù)。參照?qǐng)D18A,如果記錄2272描述STI2013,這個(gè)字段記錄行數(shù)2027。
●“ST_name”2280字段用于記錄服從記錄2272描述的STI的ST的名稱。
●“Container_row”2281字段用于記錄存放記錄2272描述的STI的容器范圍的行數(shù)。參照?qǐng)D18A,如果記錄2272描述STI2013,這個(gè)字段記錄行數(shù)2029。
●“STIT_rec_ptr”2282字段用于在STIT表750內(nèi),指向描述由記錄2272所描述的STI的記錄751。
C12.表格之間的關(guān)系現(xiàn)在參照?qǐng)D7F,該圖一起給出了一些以前引入的表格RSTIT2260、RSTIDT2270、RSTT2220、RSTDT2250、RET2210、STIT750、STT720、STDT760、EFT700和EPT710,以例示在這些表格之間建立的關(guān)系和與RSTI的RSTI730或STI的STI797的關(guān)系。在這個(gè)圖內(nèi),粗實(shí)線箭頭例示指向表格或記錄的基于指針關(guān)系,粗虛線箭頭例示指向單元格范圍的基于地址關(guān)系,細(xì)實(shí)線箭頭例示指向?qū)ο蟮幕诿Q關(guān)系,和細(xì)虛線箭頭例示指向?qū)ο蟮幕诔叽珀P(guān)系。在圖7F中,基于指針、基于地址、和基于名稱的關(guān)系是根據(jù)如下順序,通過(guò)表示在圓圈內(nèi)的指標(biāo)標(biāo)識(shí)的
●從由三個(gè)部分“STI Header”、“STI Body”和“STI Footer”組成的STI的STI797開(kāi)始,在這個(gè)STI的STI797與STIT表750的記錄751之間建立第1基于地址關(guān)系j。
●然后,在這個(gè)記錄751與STT表720的記錄721之間建立第2基于名稱關(guān)系k。這個(gè)記錄721對(duì)應(yīng)于服從STI797的ST。
●在這個(gè)記錄721與描述ST的結(jié)構(gòu)的STDT表760之間建立第3基于指針關(guān)系l。STDT表760的每個(gè)記錄對(duì)應(yīng)于一對(duì)元素或MEF名稱和元素或MEP名稱。
●在元素或MEF名稱與EFT表700的記錄701之間建立第4基于名稱關(guān)系m。
●在元素或MEP名稱與EPT表710的記錄711之間建立第5基于名稱關(guān)系n。
●在記錄701與指定格式屬性的例示單元格范圍798之間建立第6基于指針關(guān)系o。
●在記錄711與指定概要屬性的例示單元格范圍799之間建立第7基于指針關(guān)系p。
●現(xiàn)在從由三個(gè)部分“RSTI Header”、“RSTI Body”和“RSTI Footer”組成的RSTI730開(kāi)始,在這個(gè)RSTI730與RSTIT表2260的記錄2261之間建立第8基于地址關(guān)系q。
●在這個(gè)記錄2261與描述RSTI730的結(jié)構(gòu)的RSTIDT表2270之間建立第9基于指針關(guān)系r。RSTIDT表2270的每個(gè)單元格2272包括與RSTI730的給定STI(像STI797那樣)有關(guān)的七個(gè)字段2276、2277、2278、2279、2280、2281和2282。
●因此在RSTIDT表2270的單元格2272的2276字段與包括STI的STI797的容器范圍之間建立起第10基于地址關(guān)系s。
●還在RSTIDT表2270的單元格2272的2282字段與對(duì)應(yīng)于STI的STI797的STIT表750的記錄751之間建立起第11基于指針關(guān)系jj。
●然后,在記錄2261與RSTT表2220的記錄2221之間建立第12基于名稱關(guān)系jk。這個(gè)記錄2221對(duì)應(yīng)于服從RSTI 730的RST。
●在這個(gè)記錄2221與描述RST的結(jié)構(gòu)的RSTDT表2250之間建立第13基于指針關(guān)系jl。RSTDT表2250的每個(gè)記錄對(duì)應(yīng)于RE或RME。
●在RE或RME名稱與RET表2210的記錄2211之間建立第14基于名稱關(guān)系jm。
●在記錄2211與包含ST的名稱的RE描述符單元格范圍731之間建立第15基于指針關(guān)系jn。
●在RE描述符單元格范圍731與STT表720的記錄721之間建立第16基于名稱關(guān)系jo。
●在RSTIDT表2270的單元格2272與STT表720的記錄721之間建立類似的第17基于名稱關(guān)系jp。
D.方案與剛剛描述過(guò)的傳統(tǒng)工具不同,本發(fā)明的優(yōu)選實(shí)施例以一群方法的形式提供了定義和管理ST的更有功效的、用戶友好的和交互式的途徑。在優(yōu)選實(shí)施例中,本發(fā)明用在清楚地表達(dá)成一系列操作的方案內(nèi)。
●1.第一操作創(chuàng)建STI或RSTI第一操作發(fā)生在電子表格用戶根據(jù)這里未詳述的一些準(zhǔn)則,決定創(chuàng)建服從ST的結(jié)構(gòu)的STI或創(chuàng)建服從RST的結(jié)構(gòu)的RSTI的時(shí)候。在本發(fā)明的優(yōu)選實(shí)施例中,這個(gè)操作包括如下步驟●a.RST管理器電子表格用戶首先借助于適合用在電子表格環(huán)境中的傳統(tǒng)手段,譬如,定位設(shè)備105或鍵盤104(但不限于這些),調(diào)用稱為“RST管理器”的原始專用命令,以便通過(guò)專用用戶界面看見(jiàn)任何現(xiàn)有EF、MEF、EP、MEP、RE、RME、ST或RST。這個(gè)RST管理器為進(jìn)一步管理這些實(shí)體提供了不同的選擇。
這可以借助于參照?qǐng)D2所述的用戶界面來(lái)例示,圖2示出了如顯示在顯示設(shè)備106上那樣的RST管理器對(duì)話框200。在這個(gè)RST管理器對(duì)話框200內(nèi),用戶可以在分別指定對(duì)象的名稱、對(duì)象的類型、和它們的最后更新日期的“列表框”213、214和202中看見(jiàn)已經(jīng)定義的對(duì)象(EF、MEF、EP、MEP、RE、RME、ST和RST)。如果已經(jīng)定義了大量對(duì)象,那么,用戶可以借助于定位設(shè)備105向上或向下點(diǎn)擊滾動(dòng)條203,在它們之間導(dǎo)航,以便顯示在列表框213、214和202內(nèi)的對(duì)象在頂部對(duì)象和底部對(duì)象之間向前向后移動(dòng)。在本發(fā)明的優(yōu)選實(shí)施例中,通過(guò)最后更新日期對(duì)對(duì)象加以分類,但也可以使用任何其它分類方案,這不偏離本發(fā)明的精神。然后,用戶可以采取幾種行動(dòng)。用戶可以利用定位設(shè)備105點(diǎn)擊像復(fù)選框212那樣在RST管理器對(duì)話框200左側(cè)的復(fù)選框,以便選擇或撤選其名稱在列表框213內(nèi)正好顯示在被點(diǎn)擊復(fù)選框右邊的對(duì)象。可以選擇或撤選一個(gè)或多個(gè)對(duì)象。列表滾動(dòng)當(dāng)然會(huì)在復(fù)選框上反映出來(lái)。一旦進(jìn)行了選擇,如果用戶想要從列表框213、214和202中除去所有所選對(duì)象,他/她可以利用定位設(shè)備105點(diǎn)擊“Delete”按鈕207。如果沒(méi)有其它對(duì)象(ST、STI、RE、RME、RST或RSTI)引用這些對(duì)象的至少一個(gè),那么,馬上刪除它們,以便它們不再出現(xiàn)在列表框213、214和202上。如果存在至少一個(gè)其它ST、STI、RE、RME、RST或RSTI引用所選對(duì)象的至少一個(gè),那么,在顯示設(shè)備106上顯示傳統(tǒng)對(duì)話框,首先將這種狀況告訴用戶,其次請(qǐng)他取消刪除操作或確認(rèn)它。如果用戶的決定是取消操作,那么,不采取任何行動(dòng),否則,馬上刪除所選對(duì)象,以便它們不再出現(xiàn)在列表框213、214和202上??商娲?,如果用戶想要編輯假設(shè)是唯一的所選對(duì)象,他/她可以利用定位設(shè)備105點(diǎn)擊“Edit”按鈕211。
如果以前沒(méi)有選擇對(duì)象或選擇了多個(gè)對(duì)象,如在RST管理器對(duì)話框200內(nèi),在位于左側(cè)的復(fù)選框中沒(méi)有復(fù)選標(biāo)記或存在多個(gè)復(fù)選標(biāo)記(看得見(jiàn)的或看不見(jiàn)的)所示,那么,在顯示設(shè)備106上,通過(guò)傳統(tǒng)手段,譬如,彈出窗口、狀態(tài)欄消息,或可以改用而不會(huì)偏離本發(fā)明精神的任何其它類似傳統(tǒng)手段,向用戶顯示警告消息。
如果以前選擇了單個(gè)對(duì)象,如在像復(fù)選框212那樣,位于左側(cè)的復(fù)選框中存在單個(gè)復(fù)選標(biāo)記(看得見(jiàn)的或看不見(jiàn)的)所示,那么,首先關(guān)閉RST管理器對(duì)話框200,此后,考慮這單個(gè)所選對(duì)象的性質(zhì),以確定要打開(kāi)的新對(duì)話框。
如果所選對(duì)象是EF或MEF,那么,發(fā)出EF編輯器命令,以便EF編輯器方法通過(guò)首先在顯示設(shè)備106上顯示如圖3所示的EF編輯器對(duì)話框301采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。
如果所選對(duì)象是EP或MEP,那么,發(fā)出EP編輯器命令,以便EP編輯器方法通過(guò)首先在顯示設(shè)備106上顯示如圖4所示的EP編輯器對(duì)話框301采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。
如果所選對(duì)象是RE或RME,那么,發(fā)出RE編輯器命令,以便RE編輯器方法通過(guò)首先在顯示設(shè)備106上顯示如圖21B所示的RE編輯器對(duì)話框2321采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。
如果所選對(duì)象是ST,那么,發(fā)出ST編輯器命令,以便ST編輯器方法通過(guò)首先在顯示設(shè)備106上顯示如圖5所示的ST編輯器對(duì)話框501采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。如果所選對(duì)象是RST,那么,發(fā)出RST編輯器命令,以便RST編輯器方法通過(guò)首先在顯示設(shè)備106上顯示如圖6所示的RST編輯器對(duì)話框601采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。
可替代地,如果用戶想要生成服從假設(shè)是唯一的和分別是ST或RST的所選對(duì)象的STI或RSTI,他/她可以利用定位設(shè)備105點(diǎn)擊“Instanciate”按鈕204。
如果以前沒(méi)有選擇對(duì)象或選擇了多個(gè)對(duì)象,如在RST管理器對(duì)話框200內(nèi),在像復(fù)選框212那樣,位于左側(cè)的復(fù)選框中沒(méi)有復(fù)選標(biāo)記或存在多個(gè)復(fù)選標(biāo)記(看得見(jiàn)的或看不見(jiàn)的)所示,那么,在顯示設(shè)備106上,通過(guò)傳統(tǒng)手段,譬如,彈出窗口、狀態(tài)欄消息,或可以改用而不會(huì)偏離本發(fā)明精神的任何其它類似傳統(tǒng)手段,向用戶顯示警告消息。
如果以前選擇了單個(gè)對(duì)象,如在像復(fù)選框212那樣,位于左側(cè)的復(fù)選框中存在單個(gè)復(fù)選標(biāo)記(看得見(jiàn)的或看不見(jiàn)的)所示,那么,該方法檢驗(yàn)這個(gè)對(duì)象是否是ST或RST。
如果情況不是這樣,那么,在顯示設(shè)備106上,通過(guò)傳統(tǒng)手段,譬如,彈出窗口、狀態(tài)欄消息,或可以改用而不會(huì)偏離本發(fā)明精神的任何其它類似傳統(tǒng)手段,向用戶顯示警告消息。
如果以前選擇了單個(gè)ST(相應(yīng)地,RST),那么,首先關(guān)閉RST管理器對(duì)話框200,此后,發(fā)出ST實(shí)例化器(相應(yīng)地,RST實(shí)例化器)命令,以便ST實(shí)例化器(相應(yīng)地,RST實(shí)例化器)方法通過(guò)首先在顯示設(shè)備106上顯示如圖13A(相應(yīng)地,圖21A)所示的ST實(shí)例化器對(duì)話框1300(相應(yīng)地,RST實(shí)例化器對(duì)話框2300)采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。
可替代地,如果用戶想要將一組非空對(duì)象從當(dāng)前電子表格文件輸出到另一個(gè)電子表格文件,他/她可以利用定位設(shè)備105點(diǎn)擊“Export”按鈕206。如果復(fù)選框“Including child objects(for Export)”220上已打上復(fù)選標(biāo)記,那么,即使沒(méi)有通過(guò)像復(fù)選框212那樣,位于左側(cè)的復(fù)選框選擇所選對(duì)象的所有子對(duì)象,這些子對(duì)象也將從輸出操作中受益。
如果以前沒(méi)有選擇對(duì)象,如在RST管理器對(duì)話框200內(nèi),在像復(fù)選框212那樣,位于左側(cè)的復(fù)選框中沒(méi)有任何復(fù)選標(biāo)記(看得見(jiàn)的或看不見(jiàn)的)所示,那么,在顯示設(shè)備106上,通過(guò)傳統(tǒng)手段,譬如,彈出窗口、狀態(tài)欄消息,或可以改用而不會(huì)偏離本發(fā)明精神的任何其它類似傳統(tǒng)手段,向用戶顯示警告消息。
如果以前選擇了一個(gè)或多個(gè)對(duì)象,如在像復(fù)選框212那樣,位于左側(cè)的復(fù)選框中存在至少一個(gè)復(fù)選標(biāo)記(看得見(jiàn)的或看不見(jiàn)的)所示,那么,首先關(guān)閉RST管理器對(duì)話框200,此后,發(fā)出專用RST ExportMananger命令,以便在本發(fā)明中未描述的專用方法采取控制以管理輸出操作。
可替代地,如果用戶想要將一個(gè)或幾個(gè)對(duì)象從另一個(gè)電子表格文件輸入到當(dāng)前電子表格文件,他/她可以利用定位設(shè)備105點(diǎn)擊“Import”按鈕205。首先關(guān)閉RST管理器對(duì)話框200,此后,發(fā)出專用RSTImport Mananger命令,以便在本發(fā)明中未描述的專用方法采取控制以管理輸入操作。
可替代地,如果用戶想要指定以后可能創(chuàng)建的新對(duì)象的類型,他/她可以利用定位設(shè)備105在RSTMananger對(duì)話框200的左下側(cè)點(diǎn)擊五個(gè)選項(xiàng)按鈕217“Format”、209“Profile”、216“Template”、218“RE”、和219“Recursive Template”之一。用戶擁有將EF、EP、RE、ST或RST指定為此后要?jiǎng)?chuàng)建的新對(duì)象的類型的選擇。
可替代地,如果用戶想要指定是否從當(dāng)前在電子表格文件中選擇的單元格范圍中導(dǎo)出此后要?jiǎng)?chuàng)建的新對(duì)象,他/她可以利用定位設(shè)備105點(diǎn)擊叫作“From current selection”的復(fù)選框208。
可替代地,如果用戶想要?jiǎng)?chuàng)建以前借助于像下面那樣的五個(gè)選項(xiàng)按鈕指定了類型的新對(duì)象,他/她可以利用定位設(shè)備105點(diǎn)擊“CreateNew”按鈕210●“Profile”選項(xiàng)按鈕209;●“Format”選項(xiàng)按鈕217;●“Template”選項(xiàng)按鈕216●“RE”選項(xiàng)按鈕218;或●“Recursive Template”選項(xiàng)按鈕219。
如果這五個(gè)選項(xiàng)按鈕沒(méi)有一個(gè)顯示出以前被用戶選擇,如在RST管理器對(duì)話框200內(nèi),這五個(gè)選項(xiàng)按鈕209、216、217、218和219沒(méi)有一個(gè)被打點(diǎn)所示,那么,在顯示設(shè)備106上,通過(guò)傳統(tǒng)手段,譬如,彈出窗口、狀態(tài)欄消息,或可以改用而不會(huì)偏離本發(fā)明精神的任何其它類似傳統(tǒng)手段,向用戶顯示警告消息。
如果這五個(gè)選項(xiàng)按鈕209、216、217、218和219之一顯示出以前被用戶選擇,那么,首先關(guān)閉RST管理器對(duì)話框200,此后,考慮單個(gè)所選選項(xiàng)按鈕,以確定要打開(kāi)的新對(duì)話框。
如果“Format”選項(xiàng)按鈕217顯示出被選擇,那么,發(fā)出EF編輯器命令,以便EF編輯器方法通過(guò)首先在顯示設(shè)備106上顯示如圖3所示的EF編輯器對(duì)話框301采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。
如果“Profile”選項(xiàng)按鈕209顯示出被選擇,那么,發(fā)出EP編輯器命令,以便EP編輯器方法通過(guò)首先在顯示設(shè)備106上顯示如圖4所示的EP編輯器對(duì)話框301采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。
如果“Template”選項(xiàng)按鈕216顯示出被選擇,那么,發(fā)出ST編輯器命令,以便ST編輯器方法通過(guò)首先在顯示設(shè)備106上顯示如圖5所示的ST編輯器對(duì)話框501采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。
如果“RE”選項(xiàng)按鈕218顯示出被選擇,那么,發(fā)出RE編輯器命令,以便RE編輯器方法通過(guò)首先在顯示設(shè)備106上顯示如圖21B所示的RE編輯器對(duì)話框2321采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。
如果“Recursive Template”選項(xiàng)按鈕219顯示出被選擇,那么,發(fā)出RST編輯器命令,以便RST編輯器方法通過(guò)首先在顯示設(shè)備106上顯示如圖6所示的RST編輯器對(duì)話框601采取控制。在隨后的章節(jié)中詳述這個(gè)方案事例的接著步驟。
最后,如果用戶想要結(jié)束RST管理器方法,他/她可以利用定位設(shè)備105點(diǎn)擊“Done”按鈕201或關(guān)閉窗口按鈕215。其結(jié)果是關(guān)閉顯示設(shè)備106上的RST管理器對(duì)話框200。
●b.EF編輯器根據(jù)前面例示RST管理器方法的方案,電子表格用戶然后可以借助于適合用在電子表格環(huán)境中的傳統(tǒng)手段,譬如,定位設(shè)備105或鍵盤104(但不限于這些),調(diào)用稱為“EF編輯器”的原始專用命令,以便創(chuàng)建新EF;創(chuàng)建新MEF;更新現(xiàn)有EF;或更新現(xiàn)有MEF。Aureglia等人在發(fā)明名稱為“在電子表格中從一個(gè)可縮放模式實(shí)例到另一個(gè)可縮放模式實(shí)例輸出-輸入輸入單元格的內(nèi)容的系統(tǒng)和方法(System and method in an electronic spreadsheet forexporting-importing the content of input cells from a scalable templateinstance to another)”的國(guó)際專利申請(qǐng)PCT/EP 02/09483(IBM參考文獻(xiàn)FR9 2001 0029)中描述了相應(yīng)方案。
●c.EP編輯器根據(jù)前面例示RST管理器方法的方案,電子表格用戶然后可以借助于適合用在電子表格環(huán)境中的傳統(tǒng)手段,譬如,定位設(shè)備105或鍵盤104(但不限于這些),調(diào)用稱為“EP編輯器”的原始專用命令,以便創(chuàng)建新EP,創(chuàng)建新MEP,更新現(xiàn)有EP,或更新現(xiàn)有MEP。Aureglia等人在發(fā)明名稱為“在電子表格中從一個(gè)可縮放模式實(shí)例到另一個(gè)可縮放模式實(shí)例輸出-輸入輸入單元格的內(nèi)容的系統(tǒng)和方法(System and method in an electronic spreadsheet forexporting-impofting the content of input cells from a scalable templateinstance to another)”的國(guó)際專利申請(qǐng)PCT/EP02/09483(IBM參考文獻(xiàn)FR9 2001 0029)中描述了相應(yīng)方案。
●d.RE編輯器根據(jù)前面例示RST管理器方法的方案,電子表格用戶然后可以借助于適合用在電子表格環(huán)境中的傳統(tǒng)手段,譬如,定位設(shè)備105或鍵盤104(但不限于這些),調(diào)用稱為“RE編輯器”的原始專用命令,以便創(chuàng)建新RE,創(chuàng)建新RME,更新現(xiàn)有RE,或更新現(xiàn)有RME。這可以借助于參照?qǐng)D21B所述的用戶界面來(lái)例示,圖21B示出了如在顯示設(shè)備106上顯示在電子表格辦公應(yīng)用軟件的GUI窗口內(nèi)那樣的RE編輯器對(duì)話框2321。
當(dāng)在顯示設(shè)備106上顯示RE編輯器對(duì)話框232時(shí),它包含一些信息段。
第一,通過(guò)指定是否是RE或RME的一對(duì)選項(xiàng)按鈕2330和2331示出編輯對(duì)象的性質(zhì)。電子表格用戶可以用定位設(shè)備105點(diǎn)擊這兩個(gè)選項(xiàng)按鈕2330和2331之一,以便切換RE定義和RME定義。
第二,在文本框2326中指定編輯對(duì)象內(nèi)的字段數(shù)。當(dāng)創(chuàng)建新RE或RME時(shí)(電子表格用戶以前已經(jīng)用定位設(shè)備105點(diǎn)擊了選項(xiàng)按鈕218將點(diǎn)打在上面和點(diǎn)擊了按鈕210,兩者都包含在如圖2所示的RST管理器對(duì)話框200內(nèi)),文本框2326所示的值對(duì)應(yīng)于在本發(fā)明的優(yōu)選實(shí)施例中設(shè)置成3的默認(rèn)值。當(dāng)編輯現(xiàn)有RE或RME時(shí),文本框2326所示的值對(duì)應(yīng)于以前為這個(gè)對(duì)象定義的字段數(shù)。在所有情況中,電子表格用戶可以通過(guò)用定位設(shè)備105點(diǎn)擊旋鈕2327,點(diǎn)擊在上升側(cè)上或點(diǎn)擊在下降側(cè)上,以便可以使值增加或減小(在預(yù)定界限內(nèi)),改變顯示在文本框2326中的值。
第三,在標(biāo)記按鈕2324上顯示編輯RE或RME的名稱。當(dāng)編輯現(xiàn)有RE或RME時(shí),標(biāo)記框2324所示的名稱對(duì)應(yīng)于以前指定給這個(gè)對(duì)象的名稱。當(dāng)創(chuàng)建新RE或RME時(shí),那么,顯示在標(biāo)記框2324上的名稱對(duì)應(yīng)于在本發(fā)明的優(yōu)選實(shí)施例中,采取“New XX”形式的默認(rèn)值,其中,XX是保證指定名稱唯一性的計(jì)數(shù)。
第四,文本框2325和2334一起指定構(gòu)成編輯RE或RME的ST。文本框2325指定按慣例,為編輯RE或RME的最左邊字段取值1,和為編輯RE或RME的最右邊字段取與顯示在文本框2326上的那個(gè)相同的值的字段等級(jí)。文本框2324為文本框2325指定其等級(jí)的字段指定ST的名稱。
RE編輯器對(duì)話框2321包含允許電子表格用戶采取一些行動(dòng)的幾個(gè)圖形對(duì)象。
第一,電子表格用戶可以將新名稱指定給當(dāng)前編輯的RE或RME。為了這個(gè)目的,他/她首先利用諸如鍵盤104之類的傳統(tǒng)手段在文本框2325內(nèi)指定要給予編輯RE或RME的新名稱。然后,他/她利用定位設(shè)備105點(diǎn)擊“Save as”按鈕2332。如果輸入文本框2325內(nèi)的指定名稱已經(jīng)指定給現(xiàn)有對(duì)象或不是有效名稱,那么,在顯示設(shè)備106上,通過(guò)傳統(tǒng)手段,譬如,彈出窗口、狀態(tài)欄消息,或可以改用而不會(huì)偏離本發(fā)明精神的任何其它類似傳統(tǒng)手段,向用戶顯示警告消息。這個(gè)警告信息將這種狀況通知電子表格用戶,然后,提醒他加以確認(rèn)。然后,清除文本框2325而不采取進(jìn)一步行動(dòng)。如果輸入文本框2325內(nèi)的指定名稱還沒(méi)有指定給現(xiàn)有對(duì)象和是有效名稱,那么,清除文本框2325,和將編輯對(duì)象保存在電子表格文件上也顯示在標(biāo)記框2324內(nèi)的新名稱下。
第二,電子表格用戶可以通過(guò)用定位設(shè)備105點(diǎn)擊“Save”按鈕2333,將編輯對(duì)象的當(dāng)前定義保存在電子表格文件上。這個(gè)事件的后果是檢驗(yàn)更新的RE或RME是否已經(jīng)被現(xiàn)有RST引用。如果情況不是這樣,那么,在顯示設(shè)備106上,通過(guò)傳統(tǒng)手段,譬如,彈出窗口、狀態(tài)欄消息,或可以改用而不會(huì)偏離本發(fā)明精神的任何其它類似傳統(tǒng)手段,向用戶顯示警告消息。這個(gè)警告信息將這種狀況通知電子表格用戶,然后,提醒他取消操作或繼續(xù)進(jìn)行。在第一種情況中,不保存更新的RE或RME定義,而在第二種情況中,將它保存在電子表格文件上。
第三,電子表格用戶可以改變構(gòu)成編輯RE或RME的ST的定義。為了這個(gè)目的,他/她通過(guò)用定位設(shè)備105點(diǎn)擊旋鈕2329,降低和提高像顯示在文本框2335中那樣、和ST名稱顯示在文本框2334中的字段的等級(jí),首先在編輯對(duì)象的字段內(nèi)導(dǎo)航。字段等級(jí)所取的值保持在下限為值1(一)和上限為文本框2326的值的區(qū)間內(nèi)。然后,電子表格用戶可以通過(guò)用定位設(shè)備105點(diǎn)擊旋鈕2328選擇適當(dāng)ST名稱,為其等級(jí)顯示在文本框2335中的字段更新ST的名稱。最后,如果用戶想要結(jié)束RE編輯器方法,他/她可以利用定位設(shè)備105點(diǎn)擊“Done”按鈕2323或關(guān)閉窗口按鈕2322。其結(jié)果是關(guān)閉顯示設(shè)備106上的RE編輯器對(duì)話框2321。
●e.ST編輯器根據(jù)前面例示RST管理器方法的方案,電子表格用戶然后可以借助于適合用在電子表格環(huán)境中的傳統(tǒng)手段,譬如,定位設(shè)備105或鍵盤104(但不限于這些),調(diào)用稱為“ST編輯器”的原始專用命令,以便創(chuàng)建新ST或更新現(xiàn)有ST。Aureglia等人在發(fā)明名稱為“在電子表格中從一個(gè)可縮放模式實(shí)例到另一個(gè)可縮放模式實(shí)例輸出-輸入輸入單元格的內(nèi)容的系統(tǒng)和方法(System and methodin an electronic spreadsheet for exporting-importing the content of inputcells from a scalable template instance to another)”的國(guó)際專利申請(qǐng)PCT/EP 02/09483(IBM參考文獻(xiàn)FR9 2001 0029)中描述了相應(yīng)方案。
●f.RST編輯器根據(jù)前面例示RST管理器方法的方案,電子表格用戶然后可以借助于適合用在電子表格環(huán)境中的傳統(tǒng)手段,譬如,定位設(shè)備105或鍵盤104(但不限于這些),調(diào)用稱為“RST編輯器”的原始專用命令,以便創(chuàng)建新RST或更新現(xiàn)有RST。這可以借助于參照?qǐng)D6所述的用戶界面來(lái)例示,圖6示出了如在顯示設(shè)備106上顯示在電子表格辦公應(yīng)用軟件的GUI窗口611內(nèi)那樣的RST編輯器對(duì)話框601。當(dāng)在顯示設(shè)備106上顯示RST編輯器對(duì)話框601時(shí),當(dāng)前表格變成在本發(fā)明的優(yōu)選實(shí)施例中叫作“Editor Space”615的專用表格。在“Editor Space”615表格內(nèi),要編輯的RST在左上角顯示成一個(gè)單元格范圍614,左上單元格在地址B2上。盡管編輯的RST對(duì)應(yīng)于表格內(nèi)的常規(guī)單元格范圍614,但適合用在電子表格環(huán)境中的傳統(tǒng)工具不能用于更新這個(gè)單元格范圍614。電子表格用戶只能利用作為RST編輯器對(duì)話框601的一部分的專用手段在例示RST的單元格范圍614內(nèi)導(dǎo)航,和在例示RST的單元格范圍614內(nèi)插入或刪除行?!癊ditor Space”表格615內(nèi)中的行插入或刪除將被禁止。此外,對(duì)“Editor Space”表格615加上寫保護(hù),以防止用戶不小心修改了定義成單元格范圍614所例示的RST的一部分的RE或RME的設(shè)置。當(dāng)在顯示設(shè)備106上顯示RST編輯器對(duì)話框601時(shí),它包含與單元格范圍614所例示的整個(gè)RST有關(guān),或與當(dāng)前在這同一個(gè)單元格范圍614內(nèi)選擇的單元格所指的RE或RME有關(guān)的一些信息段。
第一,當(dāng)前選擇的單元格所指的RE或RME由“RE”組合框610示出。通過(guò)用定位設(shè)備105點(diǎn)擊位于這個(gè)“RE”組合框610右側(cè)的箭頭,電子表格用戶可以顯示所定義RE和RME的列表和在所定義RE和RME的列表內(nèi)導(dǎo)航,然后,選出他/她選擇的RE或RME和出現(xiàn)在位于單元格范圍614內(nèi)的當(dāng)前所選單元格上的行上的他/她的選擇。如果電子表格用戶通過(guò)用定位設(shè)備105點(diǎn)擊“Up”按鈕619,或“Down”按鈕616,改變單元格范圍614內(nèi)的所選行,那么,更新顯示在組合框610內(nèi)的名稱,以指定與新選行相對(duì)應(yīng)的RE或RME的名稱。如果電子表格用戶想要將新RME插入RST的頁(yè)眉部分或頁(yè)腳部分中,他/她剛才不得不用定位設(shè)備105點(diǎn)擊“Add”按鈕617,以便將新行插在單元格范圍614內(nèi)當(dāng)前所選單元格的最后位置之上的所需地方。然后,用顯示在窗口611上的新行更新單元格范圍614。然后,通過(guò)在組合框610內(nèi)示出默認(rèn)指定給引入RME的名稱更新RST編輯器對(duì)話框601。如果電子表格用戶想要從RST的頁(yè)眉部分或頁(yè)腳部分中除去RME,他/她剛才不得不用定位設(shè)備105點(diǎn)擊“Delete”按鈕618,以便在單元格范圍614內(nèi)在所需地方除去相應(yīng)行。然后,單元格范圍614內(nèi)的當(dāng)前所選單元格變成屬于代表在RST內(nèi)定義的唯一RE的行的那一個(gè),和通過(guò)在組合框610內(nèi)示出在RST內(nèi)定義的唯一RE的名稱更新RST編輯器對(duì)話框60。
第二,在“MIN”文本框606中指定在服從編輯RST的RSTI內(nèi)允許的最小RE個(gè)數(shù)。類似地,在“MAX”文本框609中指定在服從編輯RST的RSTI內(nèi)允許的最大RE個(gè)數(shù)。當(dāng)創(chuàng)建新RST時(shí)(電子表格用戶以前已經(jīng)用定位設(shè)備105點(diǎn)擊了選項(xiàng)按鈕219將點(diǎn)打在上面和點(diǎn)擊了按鈕210,兩者都包含在如圖2所示的RST管理器對(duì)話框200內(nèi)),“MIN”文本框606所示的值對(duì)應(yīng)于在本發(fā)明的優(yōu)選實(shí)施例中設(shè)置成1的默認(rèn)值,和“MAX”文本框609所示的值對(duì)應(yīng)于在本發(fā)明的優(yōu)選實(shí)施例中設(shè)置成16的默認(rèn)值。當(dāng)編輯現(xiàn)有RST時(shí),文本框606和609所示的值分別對(duì)應(yīng)于如電子表格用戶以前定義的那樣的、在服從當(dāng)前編輯RST的任何RSTI內(nèi)允許的最小和最大RE個(gè)數(shù)。在所有情況中,電子表格用戶可以通過(guò)用定位設(shè)備105分別點(diǎn)擊旋鈕607或旋鈕608,點(diǎn)擊在上升側(cè)上或點(diǎn)擊在下降側(cè)上,以便在保證在“MIN”文本框606中指定的值保持小于等于在“MAX”文本框609中的值的同時(shí),可以使值增加或減小(在預(yù)定界限內(nèi)),改變顯示在文本框“MIN”606或文本框“MAX”609中的值。倘若服從更新RST的某個(gè)現(xiàn)有RSTI具有落在新“MIN”-“MAX”區(qū)間之外的元素個(gè)數(shù),那么,這個(gè)RSTI將不受RST更新影響,但任何未來(lái)的RE加入或除去都根據(jù)“MIN”-“MAX”區(qū)間的新定義來(lái)完成。
第三,在標(biāo)記按鈕604上顯示編輯RST的名稱。當(dāng)編輯現(xiàn)有RST時(shí),標(biāo)記框606所示的名稱對(duì)應(yīng)于以前指定給這個(gè)對(duì)象的名稱。當(dāng)創(chuàng)建新RST時(shí),那么,顯示在標(biāo)記框604上的名稱對(duì)應(yīng)于在本發(fā)明的優(yōu)選實(shí)施例中,采取“New XX”形式的默認(rèn)值,其中,XX是保證指定名稱唯一性的計(jì)數(shù)。
RST編輯器對(duì)話框601包括允許電子表格用戶采取一些行動(dòng)的幾個(gè)圖形對(duì)象。
第一,如果當(dāng)前編輯的RST當(dāng)前由均存在相同個(gè)數(shù)的字段的RE和RME組成,電子表格用戶可以將新名稱指定給當(dāng)這個(gè)RST。實(shí)際上,在這種情況下,使能“Save as”按鈕612,以便用定位設(shè)備105對(duì)它的任何點(diǎn)擊都被識(shí)別為有效事件。電子表格用戶首先利用諸如鍵盤104之類的傳統(tǒng)手段在文本框605內(nèi)指定要給予編輯RST的新名稱。然后,他/她利用定位設(shè)備105點(diǎn)擊“Save as”按鈕612。如果輸入文本框605內(nèi)的指定名稱已經(jīng)指定給現(xiàn)有對(duì)象或不是有效名稱,那么,在顯示設(shè)備106上,通過(guò)傳統(tǒng)手段,譬如,彈出窗口、狀態(tài)欄消息,或可以改用而不會(huì)偏離本發(fā)明精神的任何其它類似傳統(tǒng)手段,向用戶顯示警告消息。這個(gè)警告信息將這種狀況通知電子表格用戶,然后,提醒他加以確認(rèn)。然后,清除文本框605而不采取進(jìn)一步行動(dòng)。如果輸入文本框605內(nèi)的指定名稱還沒(méi)有指定給現(xiàn)有對(duì)象和是有效名稱,那么,清除文本框2325,和將編輯的RST保存在電子表格文件上也顯示在標(biāo)記框604內(nèi)的新名稱下。
第二,如果編輯的RST當(dāng)前由均存在相同個(gè)數(shù)的字段的RE和RME組成,電子表格用戶可以將這個(gè)RST的當(dāng)前定義保存在電子表格文件上。實(shí)際上,在這種情況下,使能“Save”按鈕613,以便用定位設(shè)備105對(duì)它的任何點(diǎn)擊都被識(shí)別為有效事件。這個(gè)事件的后果是檢驗(yàn)更新的RST是否已經(jīng)被現(xiàn)有RSTI引用。如果情況不是這樣,那么,將RST的更新定義保存在電子表格文件上。如果情況是這樣,那么,在顯示設(shè)備106上,通過(guò)傳統(tǒng)手段,譬如,彈出窗口、狀態(tài)欄消息,或可以改用而不會(huì)偏離本發(fā)明精神的任何其它類似傳統(tǒng)手段,向用戶顯示警告消息。這個(gè)警告信息將這種狀況通知電子表格用戶,然后,提醒他取消操作或繼續(xù)進(jìn)行。在第一種情況中,不保存更新的RST定義,而在第二種情況中,將它保存在電子表格文件上。
最后,如果用戶想要結(jié)束RST編輯器方法,他/她可以利用定位設(shè)備105點(diǎn)擊“Done”按鈕603或關(guān)閉窗口按鈕602。其結(jié)果是關(guān)閉顯示設(shè)備106上的RST編輯器對(duì)話框601,和返回到最初調(diào)用RST編輯器命令時(shí)激活的表格。
●g.ST實(shí)例化器根據(jù)前面例示RST管理器方法的方案,電子表格用戶然后可以借助于適合用在電子表格環(huán)境中的傳統(tǒng)手段,譬如,定位設(shè)備105或鍵盤104(但不限于這些),調(diào)用稱為“ST實(shí)例化器”的原始專用命令,以便創(chuàng)建服從所選ST和根據(jù)當(dāng)前所選單元格定位的STI。Aureglia等人在發(fā)明名稱為“在電子表格中從一個(gè)可縮放模式實(shí)例到另一個(gè)可縮放模式實(shí)例輸出-輸入輸入單元格的內(nèi)容的系統(tǒng)和方法(System and method in an electronic spreadsheet forexporting-importing the content of input cells from a scalable templateinstance to another)”的國(guó)際專利申請(qǐng)PCT/EP 02/09483(IBM參考文獻(xiàn)FR9 2001 0029)中描述了相應(yīng)方案。
●h.RST實(shí)例化器根據(jù)前面例示RST管理器方法的方案,電子表格用戶然后可以借助于適合用在電子表格環(huán)境中的傳統(tǒng)手段,譬如,定位設(shè)備105或鍵盤104(但不限于這些),調(diào)用稱為“RST實(shí)例化器”的原始專用命令,以便創(chuàng)建服從所選RST和根據(jù)當(dāng)前所選單元格定位的RSTI。這可以借助于參照?qǐng)D21A所述的用戶界面來(lái)例示,圖21A示出了如顯示在顯示設(shè)備106上那樣的RST實(shí)例化器對(duì)話框2300。當(dāng)在顯示設(shè)備106上顯示RST實(shí)例化器對(duì)話框2300時(shí),當(dāng)前表格仍然保持有效,以便用戶可以看見(jiàn)出現(xiàn)在上面的數(shù)據(jù)。RST實(shí)例化器對(duì)話框2300包含與實(shí)例化操作有關(guān)的一些信息段。
第一,將服從要?jiǎng)?chuàng)建的RSTI的RST的名稱顯示在標(biāo)記框2302中。
第二,在文本框2311中示出在RSTI創(chuàng)建時(shí)要出現(xiàn)的RE個(gè)數(shù)。這個(gè)數(shù)字采取等于如在服從要?jiǎng)?chuàng)建的RSTI的RST的定義中指定的那樣的最小RE個(gè)數(shù)的默認(rèn)值。如果電子表格用戶想要用另一個(gè)RE個(gè)數(shù)創(chuàng)建RSTI,那么,他/她不得不用定位設(shè)備105點(diǎn)擊旋鈕2303的上側(cè)或下側(cè),以增加或減小RE的個(gè)數(shù)。這個(gè)RE個(gè)數(shù)在由如在RST的定義內(nèi)指定的那樣的最小RE個(gè)數(shù)和最大RE個(gè)數(shù)(“Name”字段2222與顯示在標(biāo)記框2302中的名稱匹配的RSTT表2220的記錄2221內(nèi)的字段“Min Element#”2225和“Max Element#”2226)界定的范圍內(nèi)變化,并且,在可能的更新之后,顯示在文本框2311中。第三,按鈕“Cancel”2308或關(guān)閉窗口按鈕2301允許電子表格用戶關(guān)閉RST實(shí)例化器對(duì)話框2300而不采取進(jìn)一步行動(dòng)。通過(guò)用定位設(shè)備105點(diǎn)擊這兩個(gè)按鈕2301和2308之一,RST實(shí)例化器對(duì)話框2300被關(guān)閉和RST實(shí)例化操作被中止。
第四,當(dāng)首先被使能,其次被電子表格用戶用定位設(shè)備105點(diǎn)擊時(shí),按鈕“Create Instance”2310成為啟動(dòng)RST實(shí)例化操作的觸發(fā)器。當(dāng)可以進(jìn)行實(shí)例化操作時(shí),使能這個(gè)按鈕“Create Instance”2310(意味著該方法認(rèn)可定位設(shè)備105在這個(gè)按鈕“Create Instance”2310上的點(diǎn)擊事件)。這個(gè)RST實(shí)例化是否可以取決于不同因素電子表格的當(dāng)前表格內(nèi)當(dāng)前所選單元格的位置、要?jiǎng)?chuàng)建的RSTI的大小、屬于與當(dāng)前所選單元格相同的表格的任何現(xiàn)有STI的存在。是否可以創(chuàng)建具有在文本框2303中指定的大小、服從其名稱由標(biāo)記框2302指定的RST、左上角位于當(dāng)前所選單元格上的新RSTI通過(guò)作為RST實(shí)例化器對(duì)話框2300的一部分、取值“YES”或“NO”的幾個(gè)標(biāo)記框反映出來(lái)反映新RSTI是否太寬的標(biāo)記框2304、反映新RSTI是否太高的標(biāo)記框2305、反映在包括當(dāng)前所選單元格的表格上是否已經(jīng)定義了任何現(xiàn)有STI的標(biāo)記框2306、和反映新RSTI的創(chuàng)建是否可能導(dǎo)致出現(xiàn)在一個(gè)或幾個(gè)電子表格單元格中的任何現(xiàn)有數(shù)據(jù)喪失的標(biāo)記框2307。一旦標(biāo)記框2304、標(biāo)記框2305、或標(biāo)記框2306取值“YES”,那么,就認(rèn)為不可以創(chuàng)建RSTI,從而禁止“Create Instance”按鈕2310。如果在這三個(gè)標(biāo)記框中顯示值“NO”,那么,可以進(jìn)行實(shí)例化操作,從而使能“Create Instance”按鈕2310。當(dāng)電子表格用戶用定位設(shè)備105點(diǎn)擊時(shí),進(jìn)行實(shí)例化操作,然后,關(guān)閉RST實(shí)例化器對(duì)話框2300。第五,當(dāng)首先被使能,其次被電子表格用戶用定位設(shè)備105點(diǎn)擊時(shí),按鈕”Create Instance in a new sheet”2390成為啟動(dòng)RST實(shí)例化操作的可替代觸發(fā)器,但是,在作為這個(gè)實(shí)例化操作的一部分創(chuàng)建的表格中。在本發(fā)明的優(yōu)選實(shí)施例中,在包括當(dāng)前所選單元格的表格之后創(chuàng)建新表格??梢愿挠萌魏纹渌砀裎恢?,這不偏離本發(fā)明的精神。當(dāng)可以在新表格中進(jìn)行實(shí)例化操作時(shí),使能這個(gè)按鈕“CreateInstance in a new sheet”2309(意味著該方法認(rèn)可定位設(shè)備105在這個(gè)按鈕“Create Instance in a new sheet”2309上的點(diǎn)擊事件)。這個(gè)RST實(shí)例化是否可以取決于不同因素要?jiǎng)?chuàng)建的RSTI的大小。是否可以在新表格中創(chuàng)建具有在文本框2303中指定的大小、服從其名稱由標(biāo)記框2302指定的新RSTI通過(guò)作為RST實(shí)例化器對(duì)話框2300的一部分、取值“YES”或“NO”的幾個(gè)標(biāo)記框反映出來(lái)反映新RSTI是否太寬的標(biāo)記框2304、和反映新RSTI是否太高的標(biāo)記框2305。一旦標(biāo)記框2304、或標(biāo)記框2305取值“YES”,那么,就認(rèn)為不可以在新表格中創(chuàng)建RSTI,從而禁止“Create Instance in a new sheet”按鈕2309。如果在這兩個(gè)標(biāo)記框中顯示值“NO”,那么,可以在新表格中進(jìn)行實(shí)例化操作,從而使能“Create Instance in a new sheet”按鈕2310。當(dāng)電子表格用戶用定位設(shè)備105點(diǎn)擊時(shí),進(jìn)行實(shí)例化操作,然后,關(guān)閉RST實(shí)例化器對(duì)話框2300。
●2.第二操作將新元素引入定義的STI中第二操作發(fā)生在電子表格用戶根據(jù)這里未詳述的他或她自己的準(zhǔn)則,將新元素引入定義的STI中的時(shí)候。Aureglia等人在發(fā)明名稱為“在電子表格中從一個(gè)可縮放模式實(shí)例到另一個(gè)可縮放模式實(shí)例輸出-輸入輸入單元格的內(nèi)容的系統(tǒng)和方法(System and method in an electronicspreadsheet for exporting-importing the content of input cells from ascalable template instance to another)”的國(guó)際專利申請(qǐng)PCT/EP 02/09483(IBM參考文獻(xiàn)FR9 2001 0029)中描述了相應(yīng)方案。
●3.第3操作將新元素引入定義的RSTI中第3操作發(fā)生在電子表格用戶根據(jù)這里未詳述的他或她自己的準(zhǔn)則,將新元素引入定義的RSTI中的時(shí)候。在本發(fā)明的優(yōu)選實(shí)施例中,這個(gè)操作包括如下步驟●a.電子表格用戶首先利用傳統(tǒng)手段,譬如,定位設(shè)備105或鍵盤104(但不限于這些),選出他/她選擇的單元格范圍。
●b.RSTI插入管理器然后,電子表格用戶借助于適合用在電子表格環(huán)境中的傳統(tǒng)手段,譬如,專用按鈕、鍵盤輸入快捷鍵、菜單或子菜單項(xiàng)(但不限于這些),調(diào)用稱為“RSTI插入管理器”的原始專用命令,“RSTI插入管理器”豐富了在電子表格內(nèi)插入單元格或行的傳統(tǒng)手段。在本發(fā)明的優(yōu)選實(shí)施例中,利用與適合用在傳統(tǒng)電子表格中、將單元格范圍插入表格內(nèi)的那些相同的一系列手段,譬如,用定位設(shè)備105點(diǎn)擊“Range”菜單項(xiàng)的“Insert”子菜單項(xiàng),或擊打鍵盤104上的“Ctri+”鍵(但不限于這些),調(diào)用“RSTI插入管理器”命令。當(dāng)調(diào)用該命令時(shí),首先進(jìn)行測(cè)試,以確定當(dāng)前所選單元格是否屬于包括現(xiàn)有RSTI的表格。
如果情況不是這樣,那么,該命令將控制傳遞給“STI插入管理器”命令,以便關(guān)心可能受插入操作影響的任何STI的存在。
如果情況是這樣,那么,進(jìn)行第2次測(cè)試,以確定在出現(xiàn)在當(dāng)前表格上的RSTI內(nèi)是否包括當(dāng)前所選單元格。
如果情況不是這樣,那么,在禁止破壞出現(xiàn)在當(dāng)前表格上的RSTI的任何插入模式之后,調(diào)用適合用在電子表格環(huán)境中的傳統(tǒng)插入過(guò)程。如果當(dāng)前所選單元格屬于出現(xiàn)在當(dāng)前表格上的RSTI占據(jù)的行(相應(yīng)地,列),那么,禁止行(相應(yīng)地,列)插入模式。
如果情況是這樣,那么,不同狀況將導(dǎo)致“RSTI插入管理器”命令的不同行為。在下文中,出現(xiàn)在當(dāng)前表格上的RSTI被稱為當(dāng)前RSTI或簡(jiǎn)稱為cRSTI。并且,如果當(dāng)前所選單元格還屬于STI,那么,這個(gè)STI被稱為當(dāng)前STI或簡(jiǎn)稱為cSTI。
第一,如果當(dāng)前所選單元格不包括在cRSTI的主體部分內(nèi),或者,如果cRSTI已經(jīng)達(dá)到最大RE個(gè)數(shù),并且,如果當(dāng)前所選單元格不屬于STI的主體部分,那么,如果進(jìn)行插入操作,它將破壞cRSTI。其結(jié)果是,通過(guò)指定電子表格用戶想要中止插入操作還是繼續(xù)進(jìn)行的傳統(tǒng)手段提醒他/她。在第一種情況中,隨著插入操作被中止,什么也沒(méi)有發(fā)生。在第二種情況中,不再將cRSTI聲明成RSTI,然后,該命令將控制傳遞給“STI插入管理器”命令,以便關(guān)心可能受插入操作影響的任何STI的存在。
第二,如果當(dāng)前所選單元格不包括在cRSTI的主體部分內(nèi),或者,如果cRSTI已經(jīng)達(dá)到最大RE個(gè)數(shù),并且,如果當(dāng)前所選單元格屬于STI的主體部分,那么,插入操作在于在保護(hù)cRSTI服從的RST的結(jié)構(gòu)的同時(shí),將與當(dāng)前所選單元格范圍的行數(shù)一樣多的新元素插入cSTI中。如果包含cSTI的容器范圍包括比要引入cSTI中的新元素的個(gè)數(shù)多的自由行,那么,不接觸包含cSTI的容器范圍地進(jìn)行cSTI內(nèi)的元素插入。如果包含cSTI的容器范圍包括比要引入cSTI中的新元素的個(gè)數(shù)少的自由行,那么,首先通過(guò)引入新行擴(kuò)展這個(gè)容器范圍,以及占據(jù)相同容器行的其它容器范圍,以便cSTI中的所得自由行數(shù)允許以后將新元素引入cRST中,而不會(huì)破壞cRSTI服從的RST的結(jié)構(gòu)。在這兩種情況中,cRSTI接受新元素,而cRSTI內(nèi)的RE個(gè)數(shù)保持不變。
第三,如果當(dāng)前所選單元格包括在cRSTI的主體部分內(nèi),和如果cRSTI還沒(méi)有達(dá)到最大RE個(gè)數(shù),并且,如果當(dāng)前所選單元格不屬于STI的主體部分,那么,插入操作在于將新RE引入cRSTI內(nèi)。根據(jù)cRSTI服從的RST的結(jié)構(gòu),這種新RE的引入導(dǎo)致每個(gè)屬于RE定義的ST引入一個(gè)STI。這些STI的每一個(gè)包括在屬于首先作為cRSTI的一部分創(chuàng)建的容器行的容器范圍內(nèi)。
第四,如果當(dāng)前所選單元格包括在cRSTI的主體部分內(nèi),和如果cRSTI還沒(méi)有達(dá)到最大RE個(gè)數(shù),并且,如果當(dāng)前所選單元格屬于STI的主體部分,那么,插入操作可以遵從兩種不同模式。第一種可能相當(dāng)于上文所述的第二種情況,在保護(hù)cRSTI服從的RST的結(jié)構(gòu)的同時(shí),將與當(dāng)前所選單元格范圍的行數(shù)一樣多的新元素插入cSTI中。第二種可能相當(dāng)于上文所述的第三種情況,將新RE插入cRSTI內(nèi)。為了區(qū)分這兩種情況,通過(guò)指定電子表格用戶想要遵從的插入模式的傳統(tǒng)手段提醒他/她。于是,一旦電子表格用戶已經(jīng)指定了他/她的選擇,就像上述那樣,通過(guò)將與當(dāng)前所選單元格范圍的行數(shù)一樣多的新元素插入cSTI中,或通過(guò)將新RE插入cRSTI內(nèi),進(jìn)行插入操作。
現(xiàn)在參照?qǐng)D18A,可以根據(jù)cRSTI2001內(nèi)當(dāng)前所選單元格的位置例示上文所述的四種情況。如果當(dāng)前所選單元格對(duì)應(yīng)于單元格范圍2018或2023,那么,提醒電子表格用戶,以便指定他/她想要將新元素插入STI2034或2033內(nèi)還是將新RE插在容器行2010或20008的下面。如果當(dāng)前所選單元格對(duì)應(yīng)于單元格范圍2022或2020,那么,插入操作將導(dǎo)致在容器行2010或20008的下面創(chuàng)建新RE。如果當(dāng)前所選單元格對(duì)應(yīng)于單元格范圍2021、2025或2019,那么,插入操作將導(dǎo)致在STI2031、2013或2032內(nèi)創(chuàng)建新元素。如果當(dāng)前所選單元格對(duì)應(yīng)于單元格范圍2024,那么,提醒電子表格用戶,以便指定他/她想要將中止插入操作,還是以破壞cRSTI的遞歸性質(zhì)為代價(jià)繼續(xù)進(jìn)行插入操作。
E.方法E1.RST管理器方法用在本發(fā)明優(yōu)選實(shí)施例中的管理EF、MEF、EP、MEP、ST、RE和RST的方法總結(jié)在圖8的流程圖800中??梢詫⑦@種方法看作RST管理器命令的處理。
●在步驟801中,該方法處在它的默認(rèn)狀態(tài)下,等待啟動(dòng)該進(jìn)程的事件。
●在步驟802中,作為用戶動(dòng)作的結(jié)果,檢測(cè)RST管理器命令。這個(gè)動(dòng)作可以是,例如●鍵盤104上的特定鍵組合;●定位設(shè)備105在特定按鈕上的點(diǎn)擊;或●本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟803中,初始化一些局部變量●局部變量RSTM_select被設(shè)置成值0(零);●局部變量RSTM_new被設(shè)置成值“NONE”;●局部變量RSTM_range被設(shè)置成值“NO”;●局部變量RSTM_index被設(shè)置成值1(一);和●局部變量RSTM_child被設(shè)置成值“NO”。
●在步驟804中,分析五個(gè)表EFT700、EPT710、STT720、RET2210和RSTT2220,以導(dǎo)出表RSTMT2230。對(duì)于在這五個(gè)表之一中找到的每個(gè)相應(yīng)記錄701、711、721、2211、或2221,在RSTMT表2230內(nèi)創(chuàng)建新記錄2231。
現(xiàn)在參照?qǐng)D7A、7B、7C、20A、20B和20C,這個(gè)構(gòu)造通過(guò)如下步驟來(lái)完成將定義在記錄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)中的所有字段依次復(fù)制到記錄2231(“Name”字段2232、“Last Change Date”字段2233、“Description Ptr”字段2234、“InfoField 1”字段2235、“Info Field 2”字段2236和“Type”字段2237)的相應(yīng)字段,然后,如果已經(jīng)從記錄701、711、721、2211、或2221分別復(fù)制到記錄2231,在Type”字段2237中將“SELECTED”屬性2242初始化成“NO”,和將“NATURE”字段2241初始化成值“FORMAT”、“PROFILE”、“TEMPLATE”、“RECELEMENT”、或“RECTEMPLATE”,然后,用對(duì)于每個(gè)新記錄都遞增的和從值1(一)開(kāi)始的計(jì)數(shù)值初始化最后字段“Index”2238。
●在步驟805中,在顯示設(shè)備106上顯示RST管理器對(duì)話框200。
●出現(xiàn)在列表框213頂部的“Name”信息對(duì)應(yīng)于RSTMT表2230中“Index”字段2238等于局部變量RSTM_index的記錄2231的“Name”字段2232。這個(gè)列表框213內(nèi)的下面“Name”信息對(duì)應(yīng)于RSTMT表2230的后繼記錄2231的“Name”字段2232。
●出現(xiàn)在列表框214頂部的“Type”信息是從RSTMT表2230中“Index”字段2238等于局部變量RSTM_index的記錄2231的“Type”字段2237(屬性“NATURE”2241和“META”2239)中導(dǎo)出的。這個(gè)列表框214內(nèi)的下面“Type”信息對(duì)應(yīng)于RSTMT表2230的后繼記錄2231的“Type”字段2237(屬性“NATURE”2241和“META”2239)。
●出現(xiàn)在列表框202頂部的“Modified”信息對(duì)應(yīng)于RSTMT表2230中“Index”字段2238等于局部變量RSTM_index的記錄2231的“Last Change Date”字段2233。這個(gè)列表框202內(nèi)的下面“Modified”信息對(duì)應(yīng)于RSTMT表2230的后繼記錄2231的“Last Change Date”字段2233。
●如果RSTMT表2230中“Index”字段2238等于局部變量RSTM_index的記錄2231的“Type”字段2237具有等于“YES”的“SELECTED”屬性2242,在復(fù)選框212上打上復(fù)選標(biāo)記。列表框213左側(cè)的下面復(fù)選框也是從RSTMT表2230的后繼記錄2231的“Type”字段2237(“SELECTED”屬性2242)中導(dǎo)出的。
●當(dāng)且僅當(dāng)RSTM_new等于“FORMAT”,選項(xiàng)按鈕“Format”217顯示黑點(diǎn)。當(dāng)且僅當(dāng)RSTM_new等于“PROFILE”,選項(xiàng)按鈕“Profile”209顯示黑點(diǎn)。當(dāng)且僅當(dāng)RSTM_new等于“TEMPLATE”,選項(xiàng)按鈕“Template”216顯示黑點(diǎn)。當(dāng)且僅當(dāng)RSTM_new等于“RECELEMENT”,選項(xiàng)按鈕“RE”218顯示黑點(diǎn)。當(dāng)且僅當(dāng)RSTM_new等于“RECTEMPLATE”,選項(xiàng)按鈕“RecursiveTemplate”219顯示黑點(diǎn)。
●當(dāng)且僅當(dāng)RSTM_range等于“YES”,復(fù)選框“From currentselection”208顯示復(fù)選標(biāo)記。
●當(dāng)且僅當(dāng)RSTM_child等于“YES”,復(fù)選框“Including child objects(for Export)”220顯示復(fù)選標(biāo)記。
●在步驟806中,該方法等待RST管理器對(duì)話框200上的任何用戶動(dòng)作。這樣的用戶動(dòng)作通常來(lái)自用定位設(shè)備105的點(diǎn)擊,但也可以采取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限于此),或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟807中,檢測(cè)RST管理器對(duì)話框200上的用戶動(dòng)作。
●如果用戶動(dòng)作是點(diǎn)擊按鈕“Delete”207,那么,將控制交給步驟808;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Import”205,那么,將控制交給步驟810;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Done”201或關(guān)閉窗口按鈕201,那么,將控制交給步驟834;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Export”206,那么,將控制交給步驟811;●如果用戶動(dòng)作是點(diǎn)擊滾動(dòng)條203,向上方向或向下方向,那么,將控制交給步驟814;●如果用戶動(dòng)作是點(diǎn)擊選項(xiàng)按鈕“Format”217、“Profile”209、“Template”216、“RE”218、或“Recursive Template”219,那么,將控制交給步驟815;●如果用戶動(dòng)作是點(diǎn)擊復(fù)選框“From current selection”209,那么,將控制交給步驟816;●如果用戶動(dòng)作是點(diǎn)擊復(fù)選框“Including child objects(forExport)”220,那么,將控制交給步驟841;●如果用戶動(dòng)作是點(diǎn)擊像復(fù)選框212那樣的頂部復(fù)選框,那么,將控制交給步驟817;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Instanciate”204,那么,將控制交給步驟830;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Edit”211,那么,將控制交給步驟824;和●如果用戶動(dòng)作是點(diǎn)擊按鈕“Create New”210,那么,將控制交給步驟818。
●在步驟808中,對(duì)“Type”字段2237具有子字段“REFERENCEDOBJECT”(RO)2240d等于“YES”或子字段“INSTANCE REFERENCE”(IR)2240c大于1(一)的“SELECTED”屬性2242的RSTMT表2230的記錄2231的每一個(gè)進(jìn)行測(cè)試(這個(gè)測(cè)試確定是否存在一些對(duì)象引用所選對(duì)象之一,或是否存在一些對(duì)象服從所選對(duì)象之一)。
●如果情況是這樣,那么,將控制交給步驟835(意味著以前選擇的RSTMT表2230的至少一個(gè)記錄被ST、STI、RE、RST或RSTI引用);●否則,將控制交給步驟809。
●在步驟809中,如果相應(yīng)各自“Name”字段702、712、722、2212、和2222與“Type”字段2237具有等于像來(lái)自步驟817那樣的“YES”的“SELECTED”屬性2242的RSTMT表2230的記錄2231的“Name”字段匹配,從EFT表700、EPT表710、STT表720、RET表2210、和RSTT表2220中除去每個(gè)各自記錄701、711、721、2211、和2221。然后,將局部變量RSTM_select重置成值0(零)。然后,將控制交給步驟804,以便重建RSTMT表2230。
●在步驟810中,發(fā)出RST Import管理器命令,然后,將控制交給步驟834。
●在步驟811中,進(jìn)行測(cè)試以確定局部變量RSTM_select是否等于0(零)。
●如果情況是這樣,那么,將控制交給步驟813;●否則,將控制交給步驟812。
●在步驟812中,發(fā)出RST Export管理器命令,然后,將控制交給步驟834。
●在步驟813中,發(fā)出警告消息通知,以便通知用戶在點(diǎn)擊“Export”按鈕206之前,必須選擇至少一個(gè)對(duì)象。這通常可以通過(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在警告消息彈出窗口內(nèi)的“OK”按鈕,或不偏離本發(fā)明精神的任何其它類似手段確認(rèn)了這個(gè)通知消息,將控制交給步驟805。
●在步驟814中,根據(jù)定位設(shè)備105在滾動(dòng)條203上指定的方向(向上或向下),和只要其值保持正的和小于等于在RSTMT表2230內(nèi)定義的記錄2231的個(gè)數(shù),將局部變量RSTM_index加1(一)或減1(一)。然后,將控制交給步驟805。
●在步驟815中,更新局部變量RSTM_new,以反映用戶用定位設(shè)備105擊中選項(xiàng)按鈕。
●如果用戶點(diǎn)擊了“Format”選項(xiàng)按鈕217,那么,局部變量RSTM_new取值“FORMAT”。
●如果用戶點(diǎn)擊了“Profile”選項(xiàng)按鈕209,那么,局部變量RSTM_new取值“PROFILE”。
●如果用戶點(diǎn)擊了“Template”選項(xiàng)按鈕216,那么,局部變量RSTM_new取值“TEMPLATE”。
●如果用戶點(diǎn)擊了“RE”選項(xiàng)按鈕218,那么,局部變量RSTM_new取值“RECELEMENT”。
●如果用戶點(diǎn)擊了“Recursive Template”選項(xiàng)按鈕219,那么,局部變量RSTM_new取值“RECTEMPLATE”。
然后,將控制交給步驟805。
●在步驟816中,更新局部變量RSTM_range,以便它的值在“YES”和“NO”之間切換。另外,如果在復(fù)選框206中以前不存在或存在復(fù)選標(biāo)記,那么,分別將復(fù)選標(biāo)記加入這同一個(gè)復(fù)選框206中或從這同一個(gè)復(fù)選框206中除去復(fù)選標(biāo)記。然后。將控制交給步驟805。
●在步驟817中,該方法更新RSTMT表2230內(nèi),發(fā)現(xiàn)“Name”字段2232等于位于正好在用戶剛剛點(diǎn)擊的復(fù)選框右側(cè)的列表框213內(nèi)的字符串的記錄2231的“Type”字段2237的值。
如果這個(gè)“Type”字段2237的舊值具有等于“YES”的“SELECTED”屬性2242,那么,值更新在于使這個(gè)“SELECTED”屬性2242轉(zhuǎn)變成“NO”;相反,如果“SELECTED”屬性2242的舊值等于“NO”,那么,值更新在于使這個(gè)“SELECTED”屬性2242轉(zhuǎn)變成“YES”。
在第一種情況中,將局部變量RSTM_select減1,和在第二種情況中,將局部變量RSTM_select加1。
并且,在第一種情況中,從用戶剛剛點(diǎn)擊過(guò)的復(fù)選框中除去以前存在于這個(gè)復(fù)選框中的復(fù)選標(biāo)記,和在第二種情況中,在用戶剛剛點(diǎn)擊過(guò)的復(fù)選框上顯示復(fù)選標(biāo)記。然后,將控制交給步驟805。
●在步驟818中,進(jìn)行測(cè)試以確定局部變量RSTM_new是否等于“NONE”。如果情況是這樣,那么,將控制交給步驟819;否則,將控制交給步驟820。
●在步驟819中,發(fā)出警告消息通知,以便通知用戶在點(diǎn)擊“Create_New”按鈕210之前,必須選擇至少一個(gè)對(duì)象(“Format”選項(xiàng)按鈕217、“Profile”選項(xiàng)按鈕209、“Template”選項(xiàng)按鈕216、“RE”選項(xiàng)按鈕218、或“Recursive Template”選項(xiàng)按鈕219)。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在警告消息彈出窗口內(nèi)的“OK”按鈕,或不偏離本發(fā)明精神的任何其它類似手段確認(rèn)了這個(gè)通知消息,將控制交給步驟805。
●在步驟820中,進(jìn)行測(cè)試以確定局部變量RSTM_new所取的值。
●如果發(fā)現(xiàn)等于“FORMAT”那么,將控制交給步驟821;●如果發(fā)現(xiàn)等于“PROFILE”,那么,將控制交給步驟822;●如果發(fā)現(xiàn)等于“TEMPLATE”,那么,將控制交給步驟823。
●如果發(fā)現(xiàn)等于“RECELEMENT”,那么,將控制交給步驟836。
●如果發(fā)現(xiàn)等于“RECTEMPLATE”,那么,將控制交給步驟837。
●在步驟821中,發(fā)出EF編輯器命令,以及傳遞兩個(gè)參數(shù)(“NEW”;RSTM_range),然后,將控制交給步驟834。
●在步驟822中,發(fā)出EP編輯器命令,以及傳遞兩個(gè)參數(shù)(“NEW”;RSTM_range),然后,將控制交給步驟834。
●在步驟823中,發(fā)出ST編輯器命令,以及傳遞一個(gè)參數(shù)(“NEW”),然后,將控制交給步驟834。
●在步驟824中,進(jìn)行測(cè)試以確定局部變量RSTM_select是否等于1(一)。如果情況是這樣,那么,將控制交給步驟825;否則,將控制交給步驟829。
●在步驟825中,進(jìn)行測(cè)試以確定如“Type”字段2237指定的那樣的所選對(duì)象的性質(zhì),即,RSTMT表2230的相應(yīng)記錄2231的“NATURE”屬性2241。
●如果發(fā)現(xiàn)等于“FORMAT”那么,將控制交給步驟826;●如果發(fā)現(xiàn)等于“PROFILE”,那么,將控制交給步驟827;●如果發(fā)現(xiàn)等于“TEMPLATE”,那么,將控制交給步驟828。
●如果發(fā)現(xiàn)等于“RECELEMENT”,那么,將控制交給步驟838。
●如果發(fā)現(xiàn)等于“RECTEMPLATE”,那么,將控制交給步驟839。
●在步驟826中,發(fā)出EP編輯器命令,以及傳遞一個(gè)參數(shù),這個(gè)參數(shù)等于其“Type”字段2237具有等于“YES”的“SELECTED”屬性2242的RSTMT表2230的唯一記錄2231的“Name”字段2232,然后,將控制交給步驟834。
●在步驟827中,發(fā)出EF編輯器命令,以及傳遞一個(gè)參數(shù),這個(gè)參數(shù)等于其“Type”字段2237具有等于“YES”的“SELECTED”屬性2242的RSTMT表2230的唯一記錄2231的“Name”字段2232,然后,將控制交給步驟834。
●在步驟828中,發(fā)出ST編輯器命令,以及傳遞一個(gè)參數(shù),這個(gè)參數(shù)等于其“Type”字段2237具有等于“YES”的“SELECTED”屬性2242的RSTMT表2230的唯一記錄2231的“Name”字段2232,然后,將控制交給步驟834。
●在步驟829中,發(fā)出警告消息通知,以便通知用戶在點(diǎn)擊“Edit”按鈕211或“Instanciate”按鈕204之前,必須在ST管理器對(duì)話框內(nèi)選擇單個(gè)對(duì)象(借助于像212那樣的復(fù)選框)。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在警告消息彈出窗口內(nèi)的“OK”按鈕,或不偏離本發(fā)明精神的任何其它類似手段確認(rèn)了這個(gè)通知消息,將控制交給步驟805。
●在步驟830中,進(jìn)行測(cè)試以確定局部變量RSTM_select是否等于1(一)。如果情況是這樣,那么,將控制交給步驟831;否則,將控制交給步驟829。
●在步驟831中,進(jìn)行測(cè)試以確定如“Type”字段2237指定的那樣的所選對(duì)象的性質(zhì),即,RSTMT表2230的相應(yīng)記錄2231的“NATURE”屬性2241。
●如果發(fā)現(xiàn)等于“TEMPLATE”,那么,將控制交給步驟832;●如果發(fā)現(xiàn)等于“RECTEMPLATE”,那么,將控制交給步驟840;●否則使得控制到步驟833。
●在步驟832中,發(fā)出ST實(shí)例化器命令,以及傳遞一個(gè)參數(shù),這個(gè)參數(shù)等于其“Type”字段2237具有等于“YES”的“SELECTED”屬性2242的RSTMT表2230的唯一記錄2231的“Name”字段2232,然后,將控制交給步驟834。
●在步驟833中,發(fā)出警告消息通知,以便通知用戶在點(diǎn)擊“Instanciate”按鈕204之前,必須在RST管理器對(duì)話框內(nèi)選擇單個(gè)ST對(duì)象或單個(gè)RST對(duì)象(借助于像212那樣的復(fù)選框)。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在警告消息彈出窗口內(nèi)的“OK”按鈕,或不偏離本發(fā)明精神的任何其它類似手段確認(rèn)了這個(gè)通知消息,將控制交給步驟805。
●在步驟834中,關(guān)閉RST管理器對(duì)話框200,以便它從顯示設(shè)備106上消失,將控制交還給最初步驟801,以便處理任何進(jìn)一步的RST管理器命令。
●在步驟835中,發(fā)出警告消息通知,以便通知用戶要?jiǎng)h除的至少一個(gè)對(duì)象被另一個(gè)對(duì)象引用。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。然后,提醒用戶取消當(dāng)前“Delete”操作,或繼續(xù)進(jìn)行“Delete”操作。這通常可以通過(guò)在顯示設(shè)備106上將提醒消息顯示在彈出窗口中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在提醒消息彈出窗口內(nèi)的“Cancel”或“Continue”按鈕,或不偏離本發(fā)明精神的任何其它類似手段作出他的選擇,如果電子表格用戶的決定是取消“Delete”操作,將控制交給步驟805,或者,如果電子表格用戶的決定是繼續(xù)進(jìn)行“Delete”操作,將控制交給步驟809。
●在步驟836中,發(fā)出RE編輯器命令,以及傳遞一個(gè)參數(shù)(“NEW”),然后,將控制交給步驟834。
●在步驟837中,發(fā)出RST編輯器命令,以及傳遞一個(gè)參數(shù)(“NEW”),然后,將控制交給步驟834。
●在步驟838中,發(fā)出RE編輯器命令,以及傳遞一個(gè)參數(shù),這個(gè)參數(shù)等于其“Type”字段2237具有等于“YES”的“SELECTED”屬性2242的RSTMT表2230的唯一記錄2231的“Name”字段2232,然后,將控制交給步驟834。
●在步驟839中,發(fā)出RST編輯器命令,以及傳遞一個(gè)參數(shù),這個(gè)參數(shù)等于其“Type”字段2237具有等于“YES”的“SELECTED”屬性2242的RSTMT表2230的唯一記錄2231的“Name”字段2232,然后,將控制交給步驟834。
●在步驟840中,發(fā)出RST實(shí)例化器命令,以及傳遞一個(gè)參數(shù),這個(gè)參數(shù)等于其“Type”字段2237具有等于“YES”的“SELECTED”屬性2242的RSTMT表2230的唯一記錄2231的“Name”字段2232,然后,將控制交給步驟834。
●在步驟841中,通過(guò)切換值“YES”和“NO”更新局部變量RSTM_child的值。然后,將控制交給步驟805。
E2.EF編輯器方法用在本發(fā)明優(yōu)選實(shí)施例中的創(chuàng)建或更新EF或MEF的方法總結(jié)在圖9的流程圖900中。可以將這種方法看作EF編輯器命令的處理。
●在步驟901中,該方法處在它的默認(rèn)狀態(tài)下,等待啟動(dòng)該進(jìn)程的事件。
●在步驟902中,作為用戶動(dòng)作的結(jié)果,檢測(cè)EF編輯器命令。這個(gè)動(dòng)作可以是,例如●鍵盤104上的特定鍵組合;●定位設(shè)備105在特定按鈕上的點(diǎn)擊;或●本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟903中,檢索命令的參數(shù)。它們對(duì)應(yīng)于●第一必有參數(shù)EFE_name,可以取保留值“NEW”,或與如在RSTMT表2230內(nèi)的記錄2231的“Name”字段2232中找到那樣的字符串名稱相對(duì)應(yīng)的另一個(gè)值;和●第二可選參數(shù)EFE_range,只能取兩個(gè)預(yù)定值“YES”和“NO”。當(dāng)?shù)谝槐赜袇?shù)的值與“NEW”不同時(shí),這個(gè)第二可選參數(shù)必須存在。將這兩個(gè)參數(shù)記錄成局部變量。
●在步驟904中,初始化一些局部變量將局部變量EFE_meta設(shè)置成值“NO”,將局部變量EFE_size設(shè)置成值8(八)。
●在步驟905中,進(jìn)行測(cè)試以確定局部變量EFE_name所取的值。如果發(fā)現(xiàn)等于“NEW”,那么,將控制交給步驟909;否則,將控制交給步驟906。
●在步驟906中,查找EFT表700,以定位發(fā)現(xiàn)其“Name”字段702等于局部變量EFE_name所取的值的記錄701。如果找到這樣的記錄,那么,將控制交給步驟908;否則,將控制交給步驟907。
●在步驟907中,調(diào)用異常管理器,以處理這種“不該發(fā)生”狀況。這樣的操作是實(shí)現(xiàn)相關(guān)的,可以采取不同的形式,譬如,在顯示設(shè)備106上顯示錯(cuò)誤消息彈出窗口。然后,將控制交給步驟925。
●在步驟908中,●根據(jù)在步驟906中找到的記錄701的“Type”字段707內(nèi)“META”屬性708的值,將局部變量EFE_meta設(shè)置成值“YES”或“NO”;●將局部變量EFE_size設(shè)置成在在步驟906中找到的記錄701的“Column#”706中找到的值;和●將在步驟906中找到的記錄701的“Description Ptr”字段704所指的存儲(chǔ)單元復(fù)制到剪貼板上。
然后,將控制交給步驟912。
●在步驟909中,根據(jù)在本發(fā)明的優(yōu)選實(shí)施例中采取“New XX”形式的名稱字符串,確定新創(chuàng)建EF或MEF的新名稱,其中,XX對(duì)應(yīng)于對(duì)于以前定義和記錄在在各自表格EFT700、EPT710、STT720、RET2210和RSST2220的各自記錄701、711、721、2211和2221中找到的“Name”字段702、712、722、2212和2222中的所有名稱,保證名稱唯一性的計(jì)數(shù)。只要保證新創(chuàng)建名稱的唯一性,可以改用任何其它類似傳統(tǒng)手段而不偏移本發(fā)明的精神。
然后,將新名稱記錄在局部變量EFE_name中。然后,在主存儲(chǔ)器102內(nèi)分配存儲(chǔ)空間,以便以后記錄EF或MEF的例示單元格范圍。這個(gè)分配的存儲(chǔ)空間是與當(dāng)前打開(kāi)的電子表格文件相對(duì)應(yīng)的存儲(chǔ)空間的一部分。
然后,在EFT表700中創(chuàng)建新記錄701,和按如下初始化這個(gè)新記錄701●將“Name”字段702設(shè)置成局部變量EFE_name的值;●將“Last Change Date”字段703設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Description Ptr”字段704設(shè)置成剛剛分配的存儲(chǔ)單元;●將“Row#”字段705設(shè)置成值1(因?yàn)樵诒景l(fā)明的優(yōu)選實(shí)施例中,在2D環(huán)境下管理ST;在3D環(huán)境下,這個(gè)字段將攜帶為創(chuàng)建的EF或MEF定義的行數(shù));●將“Column#”字段706設(shè)置成局部變量EFE_size的值;和●按如下設(shè)置“Type”字段707將屬性“META”708設(shè)置成等于局部變量EFE_meta的值,和按如下初始化屬性“REFERENCED”709●用還沒(méi)有指定給任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的質(zhì)數(shù)初始化OR子字段709a。各種各樣的傳統(tǒng)技術(shù)可以用于識(shí)別質(zhì)數(shù),這里不作進(jìn)一步詳述。
●用值1(一)初始化“FILIATION REFERENCE”(FR)子字段709b。
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段709c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段709d。其中,P集合對(duì)應(yīng)于ST的集合如果LCM({FRi})i∈PMod OR=0,RO=“YES”;否則,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段709e。其中,S集合對(duì)應(yīng)于所選對(duì)象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR#EFE_name∈S,則SC=“YES”;否則,SC=“NO”。
然后,將控制交給步驟910。
●在步驟910中,進(jìn)行測(cè)試以確定局部變量EFE_range所取的值。如果發(fā)現(xiàn)等于“YES”,那么,將控制交給步驟911;否則,將控制交給步驟912。
●在步驟911中,將當(dāng)前所選的單元格范圍復(fù)制到剪貼板和將局部變量EFE_size設(shè)置成等于所選范圍的列數(shù)。
●在步驟912中,使“Editor Space”表格315成為當(dāng)前表格,和在這個(gè)空白表格上,在固定單元格地址314(如圖3所示,在本發(fā)明的優(yōu)選實(shí)施例中,地址B2)上粘貼剪貼板的內(nèi)容,以便用戶可以在顯示設(shè)備106上看見(jiàn)EF或MEF的示例。
●在步驟913中,在顯示設(shè)備106上顯示EF編輯器對(duì)話框301。
●用局部變量EFE_name的值初始化標(biāo)記框304。
●如果發(fā)現(xiàn)局部變量EFE_mata等于“NO”(相應(yīng)地,“YES”),將黑點(diǎn)填入頂部(相應(yīng)地,底部)選項(xiàng)按鈕310中。
●將局部變量EFE_size的值填入文本框306。
●如果發(fā)現(xiàn)局部變量EFE_size等于當(dāng)前記錄701的“Column#”字段706,或如果發(fā)現(xiàn)這個(gè)記錄701的“Type”字段707內(nèi)的屬性“REFERENCED”709擁有等于“NO”的子字段“REFERENCEDOBJECT”709d(RO),使能按鈕“Save”312和“Save&Refresh”308,以便將來(lái)用定位設(shè)備105對(duì)這兩個(gè)按鈕“Save”312和“Save&Refresh”308的任何點(diǎn)擊都被識(shí)別為一個(gè)有效事件。
●否則(未發(fā)現(xiàn)局部變量EFE_size等于當(dāng)前記錄701的“Column#”字段706,或發(fā)現(xiàn)這同一個(gè)記錄701的“Type”字段707內(nèi)的屬性“REFERENCED”709擁有等于“YES”的子字段“REFERENCEDOBJECT”709d(RO),禁止按鈕“Save”312和“Save&Refresh”308,以便將來(lái)用定位設(shè)備105對(duì)這兩個(gè)按鈕“Save”312和“Save&Refresh”308的任何點(diǎn)擊都不被識(shí)別為一個(gè)有效事件。
●在步驟914中,該方法等待EF編輯器對(duì)話框301上的任何用戶動(dòng)作。這樣的用戶動(dòng)作通常來(lái)自用定位設(shè)備105的點(diǎn)擊,但也可以采取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限于此),或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟915中,檢測(cè)EF編輯器對(duì)話框301上的用戶動(dòng)作。
●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save&Refresh”308,那么,將控制交給步驟916;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save”312,那么,將控制交給步驟917;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save as”311,那么,將控制交給步驟918;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Clear”309,那么,將控制交給步驟919;●如果用戶動(dòng)作是點(diǎn)擊旋鈕307,那么,將控制交給步驟920;●如果用戶動(dòng)作是點(diǎn)擊兩個(gè)選項(xiàng)按鈕310之一,那么,將控制交給步驟921;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Done”303或關(guān)閉窗口按鈕302,那么,將控制交給步驟925。
●在步驟916中,通過(guò)刷新“Name”字段702等于局部變量EFE_name的記錄701,更新EFT表700和將它保存成電子表格文件的一部分。為了這個(gè)目的,●將“Last Change Date”字段703設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Column#”字段706設(shè)置成局部變量EFE_size的值;和●按如下設(shè)置“Type”字段707將屬性“META”708設(shè)置成等于局部變量EFE_meta的值。
另外,將在“Editor Space”表格315上例示EF或MEF的當(dāng)前定義的單元格范圍314復(fù)制到“Description Ptr”字段704所指的存儲(chǔ)單元。然后,將控制交給步驟922。
●在步驟917中,通過(guò)刷新“Name”字段702等于局部變量EFE_name的記錄701,更新EFT表700和將它保存成電子表格文件的一部分。為了這個(gè)目的,●將“Last Change Date”字段703設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Column#”字段706設(shè)置成局部變量EFE_size的值;和●按如下設(shè)置“Type”字段707將屬性“META”708設(shè)置成等于局部變量EFE_meta的值。
另外,將在“Editor Space”表格315上例示EF或MEF的當(dāng)前定義的單元格范圍314復(fù)制到“Description Ptr”字段704所指的存儲(chǔ)單元。然后,將控制交給步驟913。
●在步驟918中,對(duì)在文本框305中找到的值進(jìn)行測(cè)試,以確定它是否對(duì)應(yīng)于有效新名稱。相應(yīng)準(zhǔn)則是實(shí)現(xiàn)相關(guān)的,只要新推薦名稱相對(duì)于記錄在“Name”字段702、712、722、2212和2222中的所有已定義名稱是唯一字符串,可以采取不同形式而不偏離本發(fā)明的精神。如果有效性和唯一性都得到證明,那么,將控制交給步驟923;否則,將控制交給步驟924。
●在步驟919中,將當(dāng)前在電子表格環(huán)境下定義的默認(rèn)屬性應(yīng)用于“EditorSpace”表格315,以便顯示的EF或MEF示例接受這些相同的默認(rèn)屬性。然后,將控制交給步驟913。
●在步驟920中,根據(jù)定位設(shè)備105在旋鈕307上指定的方向(向上或向下),和只要其值保持正的和小于等于在本發(fā)明的優(yōu)選實(shí)施例中設(shè)置成等于254的上限,將局部變量EFE_size加1(一)或減1(一)。然后,將控制交給步驟913。
●在步驟921中,更新局部變量EFE_meta,以便如果已經(jīng)點(diǎn)擊了底部(相應(yīng)地,頂部)選項(xiàng)按鈕310,使它的值變成“YES”(相應(yīng)地,“NO”)。然后,將控制交給步驟913。
●在步驟922中,發(fā)出ST Refresh管理器命令,以及如下參數(shù)EFE_name、“FORMAT”,然后,將控制交給步驟913。
●在步驟923中,在主存儲(chǔ)器102內(nèi)分配存儲(chǔ)空間,以便以后記錄EF或MEF的例示單元格范圍。這個(gè)分配的存儲(chǔ)空間是與當(dāng)前打開(kāi)的電子表格文件相對(duì)應(yīng)的存儲(chǔ)空間的一部分。然后,在保存為電子表格文件的一部分的EFT表700中創(chuàng)建新記錄701,和按如下初始化這個(gè)新記錄701●將“Name”字段702設(shè)置成在文本框305中找到和在步驟918中得到核實(shí)的值;然后,這個(gè)字段702變成EFE_name局部變量的新值;●將“Last Change Date”字段703設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Description Ptr”字段704設(shè)置成剛剛分配的存儲(chǔ)單元;●將“Row#”字段705設(shè)置成值1(因?yàn)樵诒景l(fā)明的優(yōu)選實(shí)施例中,在2D環(huán)境下管理ST;在3D環(huán)境下,這個(gè)字段將攜帶為創(chuàng)建的EF或MEF定義的行數(shù));●將“Column#”字段706設(shè)置成局部變量EFE_size的值;和●按如下設(shè)置“Type”字段707將屬性“META”708設(shè)置成等于局部變量EFE_meta的值,和按如下初始化屬性“REFERENCED”709●用還沒(méi)有指定給任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的質(zhì)數(shù)初始化OR子字段709a。各種各樣的傳統(tǒng)技術(shù)可以用于識(shí)別質(zhì)數(shù),這里不作進(jìn)一步詳述。
●用值1(一)初始化“FILIATION REFERENCE”(FR)子字段709b。
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段709c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段709d。其中,P集合對(duì)應(yīng)于ST的集合如果LCM({FRi})i∈PMod OR=0,RO=“YES”;否則,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段709e。其中,S集合對(duì)應(yīng)于所選對(duì)象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR#EFE_name∈S,SC=“YES”;否則,SC=“NO”。
然后,將控制交給步驟913。
●在步驟924中,發(fā)出警告消息通知,以便通知用戶在點(diǎn)擊“Save as”按鈕311之前,必須在文本框305中指定有效唯一的名稱。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在警告消息彈出窗口內(nèi)的“OK”按鈕,或不偏離本發(fā)明精神的任何其它類似手段確認(rèn)了這個(gè)通知消息,將控制交給步驟913。
●在步驟925中,關(guān)閉EF編輯器對(duì)話框301,以便它從顯示設(shè)備106上消失,然后,從顯示的窗口中除去“Editor Space”表格315,以便用在EF編輯器調(diào)用時(shí)出現(xiàn)的原始表格取代它。最后,將控制交還給最初步驟901,以便處理任何進(jìn)一步的EF編輯器命令。
E3.EP編輯器方法用在本發(fā)明優(yōu)選實(shí)施例中的創(chuàng)建或更新EP或MEP的方法總結(jié)在圖10的流程圖1000中。可以將這種方法看作EP編輯器命令的處理。
●在步驟1001中,該方法處在它的默認(rèn)狀態(tài)下,等待啟動(dòng)該進(jìn)程的事件。
●在步驟1002中,作為用戶動(dòng)作的結(jié)果,檢測(cè)EP編輯器命令。這個(gè)動(dòng)作可以是,例如
●鍵盤104上的特定鍵組合;●定位設(shè)備105在特定按鈕上的點(diǎn)擊;或●本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟1003中,檢索命令的參數(shù)。它們對(duì)應(yīng)于●第一必有參數(shù)EPE_name,可以取保留值“NEW”,或與如在RSTMT表2230內(nèi)的記錄2231的“Name”字段2232中找到那樣的字符串名稱相對(duì)應(yīng)的另一個(gè)值;和●第二可選參數(shù)EPE_range,只能取兩個(gè)預(yù)定值“YES”和“NO”。當(dāng)?shù)谝槐赜袇?shù)的值與“NEW”不同時(shí),這個(gè)第二可選參數(shù)必須存在。將這兩個(gè)參數(shù)記錄成局部變量。
●在步驟1004中,初始化一些局部變量將局部變量EFE_meta設(shè)置成值“NO”,將局部變量EFE_size設(shè)置成值8(八)。
●在步驟1005中,進(jìn)行測(cè)試以確定局部變量EFE_name所取的值。如果發(fā)現(xiàn)等于“NEW”,那么,將控制交給步驟1009;否則,將控制交給步驟1006。
●在步驟1006中,查找EPT表710,以定位發(fā)現(xiàn)其“Name”字段712等于局部變量EPE_name所取的值的記錄711。如果找到這樣的記錄,那么,將控制交給步驟1008;否則,將控制交給步驟1007。
●在步驟1007中,調(diào)用異常管理器,以處理這種“不該發(fā)生”狀況。這樣的操作是實(shí)現(xiàn)相關(guān)的,可以采取不同的形式,譬如,在顯示設(shè)備106上顯示錯(cuò)誤消息彈出窗口。然后,將控制交給步驟1025。
●在步驟1008中,●根據(jù)在步驟1006中找到的記錄711的“Type”字段717內(nèi)“META”屬性718的值,將局部變量EFE_meta設(shè)置成值“YES”或“NO”;●將局部變量EPE_size設(shè)置成在在步驟1006中找到的記錄711的“Column#”716中找到的值;和●將在步驟1006中找到的記錄711的“Description Ptr”字段714所指的存儲(chǔ)單元復(fù)制到剪貼板上和局部變量EPE_Desc內(nèi)。
然后,將控制交給步驟1012。
●在步驟1009中,根據(jù)在本發(fā)明的優(yōu)選實(shí)施例中采取“New XX”形式的名稱字符串,確定新創(chuàng)建EP或MPF的新名稱,其中,XX對(duì)應(yīng)于對(duì)于以前定義和記錄在在各自表格EFT700、EPT710、STT720、RET2210和RSST2220的各自記錄701、711、721、2211和2221中找到的“Name”字段702、712、722、2212和2222中的所有名稱,保證名稱唯一性的計(jì)數(shù)。只要保證新創(chuàng)建名稱的唯一性,可以改用任何其它類似傳統(tǒng)手段而不偏移本發(fā)明的精神。然后,將新名稱記錄在局部變量EFE_name中。然后,在主存儲(chǔ)器102內(nèi)分配存儲(chǔ)空間,以便以后記錄EP或MEP的例示單元格范圍。這個(gè)分配的存儲(chǔ)空間是與當(dāng)前打開(kāi)的電子表格文件相對(duì)應(yīng)的存儲(chǔ)空間的一部分。然后,在EPT表710中創(chuàng)建新記錄711,和按如下初始化這個(gè)新記錄711●將“Name”字段712設(shè)置成局部變量EPE_name的值;●將“Last Change Date”字段713設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Description Ptr”字段714設(shè)置成剛剛分配的存儲(chǔ)單元;●將“Row#”字段715設(shè)置成值1(因?yàn)樵诒景l(fā)明的優(yōu)選實(shí)施例中,在2D環(huán)境下管理ST;在3D環(huán)境下,這個(gè)字段將攜帶為創(chuàng)建的EP或MEP定義的行數(shù));●將“Column#”字段716設(shè)置成局部變量EPE_size的值;和●按如下設(shè)置“Type”字段717將屬性“META”718設(shè)置成等于局部變量EPE_meta的值,和按如下初始化屬性“REFERENCED”719●用還沒(méi)有指定給任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的質(zhì)數(shù)初始化OR子字段719a。各種各樣的傳統(tǒng)技術(shù)可以用于識(shí)別質(zhì)數(shù),這里不作進(jìn)一步詳述。
●用值1(一)初始化“FILIATION REFERENCE”(FR)子字段719b。
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段719c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段719d。其中,P集合對(duì)應(yīng)于ST的集合如果LCM({FRi})i∈PMod OR=0,RO=“YES”;
否則,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段719e。其中,S集合對(duì)應(yīng)于所選對(duì)象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR#EPE_name∈S,SC=“YES”;否則,SC=“NO”。
然后,將控制交給步驟1010。
●在步驟1010中,進(jìn)行測(cè)試以確定局部變量EPE_range所取的值。如果發(fā)現(xiàn)等于“YES”,那么,將控制交給步驟1011;否則,將控制交給步驟1012。
●在步驟1011中,將當(dāng)前所選的單元格范圍復(fù)制到剪貼板和將局部變量EPE_size設(shè)置成等于所選范圍的列數(shù)。
●在步驟1012中,使“Editor Space”表格315成為當(dāng)前表格,和在這個(gè)空白表格上,在固定單元格地址314(如圖3所示,在本發(fā)明的優(yōu)選實(shí)施例中,地址B2)上粘貼剪貼板的內(nèi)容,以便用戶可以在顯示設(shè)備106上看見(jiàn)EF或MEF的示例。
●在步驟1013中,在顯示設(shè)備106上顯示EP編輯器對(duì)話框401。
●用局部變量EPE_name的值初始化標(biāo)記框404。如果發(fā)現(xiàn)局部變量EPE_mata等于“NO”(相應(yīng)地,“YES”),將黑點(diǎn)填入頂部(相應(yīng)地,底部)選項(xiàng)按鈕410中。
●將局部變量EPE_size的值填入文本框406。
●如果發(fā)現(xiàn)局部變量EPE_size等于當(dāng)前記錄711的“Column#”字段716,或如果發(fā)現(xiàn)這個(gè)記錄711的“Type”字段717內(nèi)的屬性“REFERENCED”719擁有等于“NO”的子字段“REFERENCEDOBJECT”719d(RO),使能按鈕“Save”412和“Save&Refresh”408,以便將來(lái)用定位設(shè)備105對(duì)這兩個(gè)按鈕“Save”412和“Save&Refresh”408的任何點(diǎn)擊都被識(shí)別為一個(gè)有效事件。
●否則(未發(fā)現(xiàn)局部變量EPE_size等于當(dāng)前記錄711的“Column#”字段716,或發(fā)現(xiàn)這同一個(gè)記錄711的“Type”字段717內(nèi)的屬性“REFERENCED”719擁有等于“YES”的子字段“REFERENCEDOBJECT”719d(RO)),禁用按鈕“Save”412和“Save&Refresh”408,以便將來(lái)用定位設(shè)備105對(duì)這兩個(gè)按鈕“Save”412和“Save&Refresh”408的任何點(diǎn)擊都不被識(shí)別為一個(gè)事件。
●在步驟1014中,該方法等待EP編輯器對(duì)話框401上的任何用戶動(dòng)作。這樣的用戶動(dòng)作通常來(lái)自用定位設(shè)備105的點(diǎn)擊,但也可以采取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限于此),或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟1015中,檢測(cè)EP編輯器對(duì)話框301上的用戶動(dòng)作。
●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save&Refresh”408,那么,將控制交給步驟1016;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save”412,那么,將控制交給步驟1017;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save as”411,那么,將控制交給步驟1018;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Clear”409,那么,將控制交給步驟1019;●如果用戶動(dòng)作是點(diǎn)擊旋鈕407,那么,將控制交給步驟1020;●如果用戶動(dòng)作是點(diǎn)擊兩個(gè)選項(xiàng)按鈕410之一,那么,將控制交給步驟1021;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Done”403或關(guān)閉窗口按鈕402,那么,將控制交給步驟1025。
●在步驟1016中,通過(guò)刷新“Name”字段712等于局部變量EPE_name的記錄711,更新EPT表710和將它保存成電子表格文件的一部分。為了這個(gè)目的,●將“Last Change Date”字段713設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Column#”字段716設(shè)置成局部變量EPE_size的值;和●按如下設(shè)置“Type”字段717將屬性“META”718設(shè)置成等于局部變量EPE_meta的值。
另外,將在“Editor Space”表格415上例示EP或MEP的當(dāng)前定義的單元格范圍414復(fù)制到“Description Ptr”字段714所指的存儲(chǔ)單元。然后,將控制交給步驟1022。
●在步驟1017中,通過(guò)刷新“Name”字段712等于局部變量EPE_name的記錄711,更新EPT表710和將它保存成電子表格文件的一部分。為了這個(gè)目的,●將“Last Change Date”字段713設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Column#”字段716設(shè)置成局部變量EPE_size的值;和●按如下設(shè)置“Type”字段717將屬性“META”718設(shè)置成等于局部變量EPE_meta的值。
另外,將在“Editor Space”表格415上例示EP或MEP的當(dāng)前定義的單元格范圍414復(fù)制到“Description Ptr”字段714所指的存儲(chǔ)單元。然后,用如記錄在“Description Ptr”字段714所指的存儲(chǔ)單元中那樣的當(dāng)前EP或MEP描述更新局部變量EPE_desc,和將控制交給步驟1013。
●在步驟1018中,對(duì)在文本框405中找到的值進(jìn)行測(cè)試,以確定這個(gè)值是否對(duì)應(yīng)于有效新名稱。相應(yīng)準(zhǔn)則是實(shí)現(xiàn)相關(guān)的,只要新推薦名稱相對(duì)于記錄在“Name”字段702、712、722、2212和2222中的所有已定義名稱是唯一字符串,可以采取不同形式而不偏離本發(fā)明的精神。如果有效性和唯一性都得到證明,那么,將控制交給步驟1023;否則,將控制交給步驟1024。
●在步驟1019中,將當(dāng)前在電子表格環(huán)境下定義的默認(rèn)屬性應(yīng)用于“Editor Space”表格415,以便顯示的EP或MEP示例接受這些相同的默認(rèn)屬性。然后,將控制交給步驟1013。
●在步驟1020中,根據(jù)定位設(shè)備105在旋鈕407上指定的方向(向上或向下),和只要其值保持正的和小于等于在本發(fā)明的優(yōu)選實(shí)施例中設(shè)置成等于254的上限,將局部變量EPE_size加1(一)或減1(一)。然后,將控制交給步驟1013。
●在步驟1021中,更新局部變量EPE_meta,以便如果已經(jīng)點(diǎn)擊了底部(相應(yīng)地,頂部)選項(xiàng)按鈕410,使它的值變成“YES”(相應(yīng)地,“NO”)。然后,將控制交給步驟1013。
●在步驟1022中,發(fā)出ST Refresh管理器命令,以及如下參數(shù)EPE_name,“PROFILE”和EPE_desc。然后,用如記錄在“Description Ptr”字段714所指的存儲(chǔ)單元中那樣的當(dāng)前EP或MEP描述更新局部變量EPE_desc,然后,將控制交給步驟1013。
●在步驟1023中,在主存儲(chǔ)器102內(nèi)分配存儲(chǔ)空間,以便以后記錄EP或MEP的例示單元格范圍。這個(gè)分配的存儲(chǔ)空間是與當(dāng)前打開(kāi)的電子表格文件相對(duì)應(yīng)的存儲(chǔ)空間的一部分。然后,在保存為電子表格文件的一部分的EPT表710中創(chuàng)建新記錄711,和按如下初始化這個(gè)新記錄711●將“Name”字段712設(shè)置成在文本框405中找到和在步驟1018中得到核實(shí)的值;然后,這個(gè)字段712變成EPE_name局部變量的新值;●將“Last Change Date”字段713設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Description Ptr”字段714設(shè)置成剛剛分配的存儲(chǔ)單元;●將“Row#”字段715設(shè)置成值1(因?yàn)樵诒景l(fā)明的優(yōu)選實(shí)施例中,在2D環(huán)境下管理ST;在3D環(huán)境下,這個(gè)字段將攜帶為創(chuàng)建的EP或MEP定義的行數(shù));●將“Column#”字段716設(shè)置成局部變量EPE_size的值;和●按如下設(shè)置“Type”字段717將屬性“META”718設(shè)置成等于局部變量EPE_meta的值,和按如下初始化屬性“REFERENCED”719●用還沒(méi)有指定給任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的質(zhì)數(shù)初始化OR子字段719a。各種各樣的傳統(tǒng)技術(shù)可以用于識(shí)別質(zhì)數(shù),這里不作進(jìn)一步詳述。
●用值1(一)初始化“FILIATION REFERENCE”(FR)子字段719b。
●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段719c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段719d。其中,P集合對(duì)應(yīng)于ST的集合如果LCM({FRi})i∈PMod OR=0,RO=“YES”;否則,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段719e。其中,S集合對(duì)應(yīng)于所選對(duì)象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR#EPE name∈S,SC=“YES”;否則,SC=“NO”。
然后,將控制交給步驟1013。
●在步驟1024中,發(fā)出警告消息通知,以便通知用戶在點(diǎn)擊“Save as”按鈕411之前,必須在文本框405中指定有效唯一的名稱。這通常可以通過(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在警告消息彈出窗口內(nèi)的“OK”按鈕,或不偏離本發(fā)明精神的任何其它類似手段確認(rèn)了這個(gè)通知消息,將控制交給步驟1013。
●在步驟1025中,關(guān)閉EP編輯器對(duì)話框401,以便它從顯示設(shè)備106上消失,然后,從顯示窗口中除去“Editor Space”表格415,以便用在EP編輯器調(diào)用時(shí)出現(xiàn)的原始表格取代它。最后,將控制交還給最初步驟1001,以便處理任何進(jìn)一步的EP編輯器命令。
E4.ST編輯器方法用在本發(fā)明優(yōu)選實(shí)施例中的創(chuàng)建或更新ST的方法總結(jié)在圖11的流程圖1100中??梢詫⑦@種方法看作ST編輯器命令的處理。
●在步驟1101中,該方法處在它的默認(rèn)狀態(tài)下,等待啟動(dòng)該進(jìn)程的事件。
●在步驟1102中,作為用戶動(dòng)作的結(jié)果,檢測(cè)ST編輯器命令。這個(gè)動(dòng)作可以是,例如●鍵盤104上的特定鍵組合;●定位設(shè)備105在特定按鈕上的點(diǎn)擊;或●本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟1103中,檢索命令的參數(shù)。它對(duì)應(yīng)于必有參數(shù)STE_name,該參數(shù)可以取保留值“NEW”,或與如在RSTMT表2230內(nèi)的記錄2231的“Name”字段2232中找到那樣的字符串名稱相對(duì)應(yīng)的另一個(gè)值。將這個(gè)參數(shù)記錄成局部變量。
●在步驟1104中,初始化一些局部變量將局部變量STE_min設(shè)置成默認(rèn)值1(一),將局部變量STE_max設(shè)置成值255。
●在步驟1105中,進(jìn)行測(cè)試以確定局部變量STE_name所取的值。如果發(fā)現(xiàn)等于“NEW”,那么,將控制交給步驟1109;否則,將控制交給步驟1106。
●在步驟1106中,查找STT表720,以定位發(fā)現(xiàn)其“Name”字段722等于局部變量STE_name所取的值的記錄721。如果找到這樣的記錄,那么,將控制交給步驟1108;否則,將控制交給步驟1107。
●在步驟1107中,調(diào)用異常管理器,以處理這種“不該發(fā)生”狀況。這樣的操作是實(shí)現(xiàn)相關(guān)的,可以采取不同的形式,譬如,在顯示設(shè)備106上顯示錯(cuò)誤消息彈出窗口。然后,將控制交給步驟1128。
●在步驟1108中,●將局部變量STE_min設(shè)置成在在步驟1106中找到的記錄721的“Min Element#”字段725中找到的值;●將局部變量STE_max設(shè)置成在在步驟1106中找到的記錄721的“Max Element#”字段726中找到的值。
然后,將在步驟1106中找到的記錄721的“Description Ptr”字段724所指的存儲(chǔ)單元(其中,記錄著按照如圖7D所示的STDT表760的ST的描述)復(fù)制在也遵從相同STDT表760的工作緩沖區(qū)中。
然后,將這種結(jié)構(gòu)用于在主存儲(chǔ)器102內(nèi)的剪貼板上構(gòu)建例示復(fù)制在工作緩沖區(qū)中的ST定義的電子表格單元格范圍。這種構(gòu)造是通過(guò)將一系列有序單元格范圍裝入主存儲(chǔ)器102內(nèi)的剪貼板中實(shí)現(xiàn)的,這些單元格范圍的每一個(gè)依次服從與從第一對(duì)761開(kāi)始直到最后一對(duì)763的每對(duì)EF和EP名稱相對(duì)應(yīng)的EF(列765)和EP(列764)定義。然后,將控制交給步驟1110。
●在步驟1109中,根據(jù)在本發(fā)明的優(yōu)選實(shí)施例中采取“New XX”形式的名稱字符串,確定新創(chuàng)建ST的新名稱,其中,XX對(duì)應(yīng)于對(duì)于以前定義和記錄在在各自表格EFT 700、EPT 710、STT 720、RET 2210和RSST2220的各自記錄701、711、721、2211和2221中找到的“Name”字段702、712、722、2212和2222中的所有名稱,保證名稱唯一性的計(jì)數(shù)。只要保證新創(chuàng)建名稱的唯一性,可以改用任何其它類似傳統(tǒng)手段而不偏移本發(fā)明的精神。然后,將新名稱記錄在局部變量STE_name中。然后,在主存儲(chǔ)器102內(nèi)分配存儲(chǔ)空間,以便以后記錄新ST的例示單元格范圍。這個(gè)分配的存儲(chǔ)空間是與當(dāng)前打開(kāi)的電子表格文件相對(duì)應(yīng)的存儲(chǔ)空間的一部分和遵從如圖7D所示的STDT表760。然后,在STT表720中創(chuàng)建新記錄721,和按如下初始化這個(gè)新記錄721●將“Name”字段722設(shè)置成局部變量STE_name的值;●將“Last Change Date”字段723設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Description Ptr”字段724設(shè)置成剛剛分配的存儲(chǔ)單元;●將“Min Element#”字段725設(shè)置成局部變量STE_min的值;●將“Max Element#”字段726設(shè)置成局部變量STE_max的值;●按如下設(shè)置“Type”字段727將屬性“META”728設(shè)置成等于“NO”,和按如下初始化屬性“REFERENCED”729●用還沒(méi)有指定給任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的質(zhì)數(shù)初始化OR子字段729a。各種各樣的傳統(tǒng)技術(shù)可以用于識(shí)別質(zhì)數(shù),這里不作進(jìn)一步詳述。
●根據(jù)如下公式初始化“FILIATION REFERENCE”(FR)子字段729b,其中,根據(jù)記錄在“Description Ptr”字段724中的結(jié)構(gòu),F(xiàn)集合對(duì)應(yīng)于構(gòu)成新ST的EF、MEF、EP、和MEP的集合FR=∏i∈FORi×LCM({FRi})i∈F●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段729c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段729d。其中,P集合對(duì)應(yīng)于RE和RME的集合如果LCM({FRi})i∈PMod OR=0,RO=“YES”;否則,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段729e。其中,S集合對(duì)應(yīng)于所選對(duì)象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR#STE_name∈S,則SC=“YES”;
否則,SC=“NO”。
然后,在主存儲(chǔ)器102中分配工作緩沖區(qū)和用與默認(rèn)EF和默認(rèn)EP的一對(duì)762相對(duì)應(yīng)的默認(rèn)ST描述初始化工作緩沖區(qū)。然后,將這個(gè)默認(rèn)ST描述用于在主存儲(chǔ)器102內(nèi)的剪貼板上構(gòu)建例示新ST的電子表格單元格范圍。這種構(gòu)造是像在步驟1108的末端說(shuō)明的那樣實(shí)現(xiàn)的。然后,將控制交給步驟1110。
●在步驟1110中,使“Editor Space”表格515成為當(dāng)前表格,和在禁止常規(guī)行插入和刪除的同時(shí),將這個(gè)表格轉(zhuǎn)成寫保護(hù)模式。然后,選擇單元格范圍514的左上單元格。然后,將與單元格范圍514內(nèi)的當(dāng)前所選單元格所在的行相對(duì)應(yīng)的EF或MEF的名稱填入局部變量STE_format中。最后,將與單元格范圍514內(nèi)的當(dāng)前所選單元格所在的行相對(duì)應(yīng)的EP或MEP的名稱填入局部變量STE_profile中。
●在步驟1111中,在顯示設(shè)備106上顯示ST編輯器對(duì)話框501。
●用局部變量STE_name的值初始化標(biāo)記框504。
●將局部變量STE_min的值填入文本框506。
●將局部變量STE_max的值填入文本框507。
●將局部變量STE_format的值填入組合框511。
●將局部變量STE_profile的值填入組合框510。
然后,根據(jù)記錄在存儲(chǔ)器剪貼板中的描述更新單元格范圍514在這個(gè)空白表格上,在固定單元格地址514(如圖5所示,在本發(fā)明的優(yōu)選實(shí)施例中,地址B2)上粘貼剪貼板的內(nèi)容,以便用戶可以在顯示設(shè)備106上,在窗口500內(nèi)看見(jiàn)ST的示例。然后,進(jìn)行測(cè)試以檢驗(yàn)對(duì)單元格范圍514所例示的ST定義有貢獻(xiàn)的所有EF、EP、MEF和MEP是否擁有個(gè)數(shù)相同的字段。如果情況是這樣,那么,使能兩個(gè)按鈕“Save”513和“Save as”512,以便將用定位設(shè)備105對(duì)這兩個(gè)按鈕“Save”513和“Save as”512之一的點(diǎn)擊識(shí)別成一個(gè)有效事件。否則,禁止兩個(gè)按鈕“Save”513和“Save as”512,以便不將用定位設(shè)備105對(duì)這兩個(gè)按鈕“Save”513和“Save as”512之一的點(diǎn)擊識(shí)別成一個(gè)有效事件。
●在步驟1112中,該方法等待ST編輯器對(duì)話框501上的任何用戶動(dòng)作。這樣的用戶動(dòng)作通常來(lái)自用定位設(shè)備105的點(diǎn)擊,但也可以采取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限于此),或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟1113中,檢測(cè)ST編輯器對(duì)話框501上的用戶動(dòng)作。
●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save”513,那么,將控制交給步驟1116;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save as”512,那么,將控制交給步驟1119;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Add”517,那么,將控制交給步驟1124;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Delete”518,那么,將控制交給步驟1125;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Up”519或按鈕“Down”520,那么,將控制交給步驟1126;●如果用戶動(dòng)作是更新組合框511,那么,將控制交給步驟1114;●如果用戶動(dòng)作是更新組合框510,那么,將控制交給步驟1115;●如果用戶動(dòng)作是點(diǎn)擊旋鈕507,那么,將控制交給步驟1122;●如果用戶動(dòng)作是點(diǎn)擊旋鈕508,那么,將控制交給步驟1123;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Done”503或關(guān)閉窗口按鈕502,那么,將控制交給步驟1128。
●在步驟1114中,通過(guò)用在文本框511中找到的EF或MEF取代與單元格范圍514內(nèi)的當(dāng)前所選單元格所例示的元素或元元素相對(duì)應(yīng)的前EF或MEF規(guī)定,在工作緩沖區(qū)中更新ST描述。然后,還將局部變量STE_format設(shè)置成等于在文本框511中找到的名稱。然后,將控制交給步驟1111。
●在步驟1115中,通過(guò)用在文本框511中找到的EP或MEP取代與單元格范圍514內(nèi)的當(dāng)前所選單元格所例示的元素或元元素相對(duì)應(yīng)的前EP或MEP規(guī)定,在工作緩沖區(qū)中更新ST描述。然后,還將局部變量STE_profile設(shè)置成等于在文本框511中找到的名稱。然后,將控制交給步驟1111。
●在步驟1116中,進(jìn)行測(cè)試以檢驗(yàn)當(dāng)前編輯的ST是否已被現(xiàn)有RE或RME引用,是否已被實(shí)例化成STI。為了這個(gè)目的,考慮STT表720中“Name”字段722等于局部變量STE_name的記錄721的“Type”字段727內(nèi)的“REFERENCED”屬性729。如果“REFERENCED OBJECT”(RO)子字段729d的值等于“NO”和如果“INSTANCE REFERENCE”(IR)子字段729c的值等于1(一),那么,將控制交給步驟1117;否則,將控制交給步驟1118。
●在步驟1117中,通過(guò)刷新“Name”字段722等于局部變量STE_name的記錄721,更新STT表720。為了這個(gè)目的,●將“Last Change Date”字段723設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Min Element#”字段725設(shè)置成局部變量STE_min的值;和●將“Max Element#”字段726設(shè)置成局部變量STE_max的值。
●將如單元格范圍514所示、如記錄在工作緩沖區(qū)中那樣、和遵從STDT表760的ST的當(dāng)前描述復(fù)制到“Description Ptr”字段724所指的存儲(chǔ)單元上。
●借助于其依賴于屬于“Description Ptr”字段724所指的STDT表760的EF、MEF、EP和MEP的集合的定義公式,自動(dòng)更新被更新成“REFERENCED”屬性729的“FILIATION REFERENCE”(FR)子字段729b的“Type”字段727。
●對(duì)于在這個(gè)STDT表760的列765中找到的每個(gè)EF名稱或MEF名稱,由于根據(jù)其定義公式重新計(jì)算了子字段“REFERENCEDOBJECT”(RO)709d(在“REFERENCED”屬性709內(nèi)),在“Name”字段702與這個(gè)元素或MEF名稱匹配的相應(yīng)記錄701內(nèi)自動(dòng)更新EFT表700。
●對(duì)于在這個(gè)STDT表760的列764中找到的每個(gè)EP名稱或MEP名稱,由于根據(jù)其定義公式重新計(jì)算了子字段“REFERENCEDOBJECT”(RO)719d(在“REFERENCED”屬性719內(nèi)),在“Name”字段712與這個(gè)元素或MEP名稱匹配的相應(yīng)記錄711內(nèi)自動(dòng)更新EPT表710。然后,將控制交給步驟1111。
●在步驟1118中,發(fā)出警告消息通知,以便通知用戶編輯的ST已被RE或RME引用或已被實(shí)例化成現(xiàn)有STI。這通常可以通過(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。然后,提醒用戶取消當(dāng)前“Save”操作或繼續(xù)進(jìn)行“Save”操作。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將提醒消息顯示在彈出窗口中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在提醒消息彈出窗口內(nèi)的“Cancel”或“Continue”按鈕,或不偏離本發(fā)明精神的任何其它類似手段作出了他的選擇,如果電子表格用戶的決定是取消操作,那么,將控制交給步驟1111,或者,如果電子表格用戶的決定是繼續(xù)進(jìn)行操作,那么,將控制交給步驟1117。
●在步驟1119中,對(duì)在文本框505中找到的值進(jìn)行測(cè)試,以確定它是否對(duì)應(yīng)于有效新名稱。相應(yīng)準(zhǔn)則是實(shí)現(xiàn)相關(guān)的,只要新推薦名稱相對(duì)于記錄在“Name”字段702、712、722、2212和2222中的所有已定義名稱是唯一字符串,可以采取不同形式而不偏離本發(fā)明的精神。如果有效性和唯一性都得到證明,那么,將控制交給步驟1120;否則,將控制交給步驟1121。
●在步驟1120中,在主存儲(chǔ)器102內(nèi)分配存儲(chǔ)空間,以便以后記錄ST的描述符。這個(gè)分配的存儲(chǔ)空間是與當(dāng)前打開(kāi)的電子表格文件相對(duì)應(yīng)的存儲(chǔ)空間的一部分。然后,在STT表720中創(chuàng)建新記錄721,和按如下初始化這個(gè)新記錄721●將“Name”字段722設(shè)置成在文本框505中找到和在步驟1119中得到核實(shí)的值;然后,這個(gè)字段722變成STE_name局部變量的新值;●將“Last Change Date”字段723設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Description Ptr”字段724設(shè)置成剛剛分配的存儲(chǔ)單元;●將“Min Element#”字段725設(shè)置成局部變量STE_min的值;●將“Max Element#”字段726設(shè)置成局部變量STE_max的值;●將如單元格范圍514所示、如記錄在工作緩沖區(qū)中那樣、和遵從STDT表760的ST的當(dāng)前描述復(fù)制到“Description Ptr”字段724所指的存儲(chǔ)單元上。
●按如下設(shè)置“Type”字段727將屬性“META”728設(shè)置成等于“NO”,和按如下初始化屬性“REFERENCED”729●用還沒(méi)有指定給任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的質(zhì)數(shù)初始化OR子字段729a。各種各樣的傳統(tǒng)技術(shù)可以用于識(shí)別質(zhì)數(shù),這里不作進(jìn)一步詳述。
●根據(jù)如下公式初始化“FILIATION REFERENCE”(FR)子字段729b,其中,根據(jù)記錄在“Description Ptr”字段724中的結(jié)構(gòu),F(xiàn)集合對(duì)應(yīng)于構(gòu)成新ST的EF、MEF、EP、和MEP的集合FR=∏i∈FORi×LCM({FRi})i∈F●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段729c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段729d。其中,P集合對(duì)應(yīng)于RE和RME的集合如果LCM({FRi})i∈PMod OR=0,RO=“YES”;否則,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段729e。其中,S集合對(duì)應(yīng)于所選對(duì)象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR#STE_name∈S,SC=“YES”;否則,SC=“NO”。
●對(duì)于在這個(gè)STDT表760的列765中找到的每個(gè)EF名稱或MEF名稱,由于根據(jù)其定義公式重新計(jì)算了子字段“REFERENCEDOBJECT”(RO)709d(在“REFERENCED”屬性709內(nèi)),在“Name”字段702與這個(gè)元素或MEF名稱匹配的相應(yīng)記錄701內(nèi)自動(dòng)更新EFT表700。
●對(duì)于在這個(gè)STDT表760的列764中找到的每個(gè)EP名稱或MEP名稱,由于根據(jù)其定義公式重新計(jì)算了子字段“REFERENCEDOBJECT”(RO)719d(在“REFERENCED”屬性719內(nèi)),在“Name”字段712與這個(gè)元素或MEP名稱匹配的相應(yīng)記錄711內(nèi)自動(dòng)更新EPT表710。
然后,將控制交給步驟1111。
●在步驟1121中,發(fā)出警告消息通知,以便通知用戶在點(diǎn)擊“Save as”按鈕512之前,必須在文本框505中指定有效唯一的名稱。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在警告消息彈出窗口內(nèi)的“OK”按鈕,或不偏離本發(fā)明精神的任何其它類似手段確認(rèn)了這個(gè)通知消息,將控制交給步驟1111。
●在步驟1122中,根據(jù)定位設(shè)備105在旋鈕507上指定的方向(向上或向下),和只要其值保持正的和小于等于在本發(fā)明的優(yōu)選實(shí)施例中設(shè)置成等于254的上限和如文本框509所示的值兩者,將局部變量STE_min加1(一)或減1(一)。然后,將控制交給步驟1111。
●在步驟1123中,根據(jù)定位設(shè)備105在旋鈕508上指定的方向(向上或向下),和只要其值保持正的,大于如文本框506所示的值,和小于等于在本發(fā)明的優(yōu)選實(shí)施例中設(shè)置成等于254的上限,將局部變量STE_max加1(一)或減1(一)。然后,將控制交給步驟1111。
●在步驟1124中,在例示編輯的ST的單元格范圍514中,在最后所選單元格以前所處的行上面插入新行。
然后,選擇單元格范圍514內(nèi)位于新行上的最左單元格。
然后,在工作緩沖區(qū)中,通過(guò)引入像其它元元素那樣,通過(guò)也分別指定給局部變量STE_format和STE_profile、默許給一對(duì)默認(rèn)MEF和默認(rèn)MEP的一對(duì)(MEF765,MEP764)描述的新元元素,更新ST定義。另外,將如單元格范圍514所示、如記錄在工作緩沖區(qū)中那樣、和遵從STDT表760的ST的當(dāng)前描述復(fù)制到“Description Ptr”字段724所指的存儲(chǔ)單元上。然后,將控制交給步驟1111。
●在步驟1125中,從單元格范圍514中除去包含所選單元格的行。然后,選擇位于單元格范圍514內(nèi)代表定義在編輯的ST內(nèi)的元素的行上的最左單元格。然后,通過(guò)除去由一對(duì)(MEF,MEP)描述的刪除元元素,更新ST定義。另外,將如單元格范圍514所示、如記錄在工作緩沖區(qū)中那樣、和遵從STDT表760的ST的當(dāng)前描述復(fù)制到“Description Ptr”字段724所指的存儲(chǔ)單元上。然后,將控制交給步驟1127。
●在步驟1126中,如果電子表格用戶用定位設(shè)備105點(diǎn)擊了“Up”按鈕519或“Down”按鈕520,并且,如果這種移動(dòng)不移動(dòng)遠(yuǎn)離例示ST的單元格范圍514的當(dāng)前單元格,分別向上或向下移動(dòng)“Editor Space”表格515內(nèi)的當(dāng)前單元格。
●在步驟1127中,將局部變量STE format和STE_profile分別設(shè)置成等于與單元格范圍514內(nèi)的當(dāng)前所選單元格所示的元素或元元素相對(duì)應(yīng)的EF或MEF的名稱和EP或MEP的名稱。然后,將控制交給步驟1111。
●在步驟1128中,關(guān)閉ST編輯器對(duì)話框501,以便它從顯示設(shè)備106上消失,然后,從顯示窗口中除去“Editor Space”表格515,以便用在EP編輯器調(diào)用時(shí)出現(xiàn)的原始表格取代它?,F(xiàn)在再次使能在顯示“EditorSpace”表格515的同時(shí)禁止的所有裝置。最后,將控制交還給最初步驟1101,以便處理任何進(jìn)一步的ST編輯器命令。
E5.RST編輯器方法用在本發(fā)明優(yōu)選實(shí)施例中的創(chuàng)建或更新RST的方法總結(jié)在圖12的流程圖1230中??梢詫⑦@種方法看作RST編輯器命令的處理。
●在步驟1231中,該方法處在它的默認(rèn)狀態(tài)下,等待啟動(dòng)該進(jìn)程的事件。
●在步驟1232中,作為用戶動(dòng)作的結(jié)果,檢測(cè)RST編輯器命令。這個(gè)動(dòng)作可以是,例如●鍵盤104上的特定鍵組合;●定位設(shè)備105在特定按鈕上的點(diǎn)擊;或●本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟1233中,檢索命令的參數(shù)。它對(duì)應(yīng)于必有參數(shù)RSTE_name,該參數(shù)可以取保留值“NEW”,或與如在RSTMT表2230內(nèi)的記錄2231的“Name”字段2232中找到那樣的字符串名稱相對(duì)應(yīng)的另一個(gè)值。將這個(gè)參數(shù)記錄成局部變量。
●在步驟1234中,初始化一些局部變量將局部變量RSTE_min設(shè)置成值默認(rèn)值1(一),將局部變量RSTE_max設(shè)置成值16。
●在步驟1235中,進(jìn)行測(cè)試以確定局部變量RSTE_name所取的值。如果發(fā)現(xiàn)等于“NEW”,那么,將控制交給步驟1239;否則,將控制交給步驟1236。
●在步驟1236中,查找RSTT表2220,以定位發(fā)現(xiàn)其“Name”字段2222等于局部變量RSTE_name所取的值的記錄2221。如果找到這樣的記錄,那么,將控制交給步驟1238;否則,將控制交給步驟1237。
●在步驟1237中,調(diào)用異常管理器,以處理這種“不該發(fā)生”狀況。這樣的操作是實(shí)現(xiàn)相關(guān)的,可以采取不同的形式,譬如,在顯示設(shè)備106上顯示錯(cuò)誤消息彈出窗口。然后,將控制交給最初步驟1231,以便處理任何進(jìn)一步的RST編輯器命令。
●在步驟1238中,●將局部變量RSTE_min設(shè)置成在在步驟1236中找到的記錄2221的“Min Element#”字段2225中找到的值;●將局部變量RSTE_max設(shè)置成在在步驟1236中找到的記錄2221的“Max Element#”字段2226中找到的值。
然后,將在步驟1236中找到的記錄2221的“Description Ptr”字段2224所指的存儲(chǔ)單元(其中,記錄著按照如圖20D所示的RSTDT表2250的RST的描述)復(fù)制在也遵從相同RSTDT表2250的工作緩沖區(qū)中。然后,將這種結(jié)構(gòu)用于在主存儲(chǔ)器102內(nèi)的剪貼板上構(gòu)建例示復(fù)制在工作緩沖區(qū)中的RST定義的電子表格單元格范圍,每個(gè)單元格依次與從第一個(gè)名稱2251開(kāi)始直到最后一個(gè)2253的RE或RME名稱相對(duì)應(yīng)。
然后,將控制交給步驟1240。
●在步驟1239中,根據(jù)在本發(fā)明的優(yōu)選實(shí)施例中采取“New XX”形式的名稱字符串,確定新創(chuàng)建RST的新名稱,其中,XX對(duì)應(yīng)于對(duì)于以前定義和記錄在在各自表格EFT700、EPT710、STT720、RET2210和RSST2220的各自記錄701、711、721、2211和2221中找到的“Name”字段702、712、722、2212和2222中的所有名稱,保證名稱唯一性的計(jì)數(shù)。只要保證新創(chuàng)建名稱的唯一性,可以改用任何其它類似傳統(tǒng)手段而不偏移本發(fā)明的精神。然后,將新名稱記錄在局部變量RSTE_name中。然后,在主存儲(chǔ)器102內(nèi)分配存儲(chǔ)空間,以便以后記錄新RST的例示單元格范圍。這個(gè)分配的存儲(chǔ)空間是與當(dāng)前打開(kāi)的電子表格文件相對(duì)應(yīng)的存儲(chǔ)空間的一部分和遵從如圖20D所示的RSTDT表2250。然后,在RSTT表2220中創(chuàng)建新記錄2221,和按如下初始化這個(gè)新記錄2221●將“Name”字段2222設(shè)置成局部變量RSTE_name的值;●將“Last Change Date”字段2223設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;
●將“Description Ptr”字段2224設(shè)置成剛剛分配的存儲(chǔ)單元;●將“Min Element#”字段2225設(shè)置成局部變量RSTE_min的值;●將“Max Element#”字段2226設(shè)置成局部變量RSTE_max的值;●按如下設(shè)置“Type”字段2227將屬性“META”2228設(shè)置成等于“NO”,和按如下初始化屬性“REFERENCED”2229●用還沒(méi)有指定給任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的質(zhì)數(shù)初始化OR子字段2229a。各種各樣的傳統(tǒng)技術(shù)可以用于識(shí)別質(zhì)數(shù),這里不作進(jìn)一步詳述。
●根據(jù)如下公式初始化“FILIATION REFERENCE”(FR)子字段2229b,其中,根據(jù)記錄在“Description Ptr”字段2224中的結(jié)構(gòu),F(xiàn)集合對(duì)應(yīng)于構(gòu)成新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集合對(duì)應(yīng)于所選對(duì)象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR#RSTE_name∈S,SC=“YES”;否則,SC=“NO”。
然后,在主存儲(chǔ)器102中分配工作緩沖區(qū)和用與默認(rèn)RE2252相對(duì)應(yīng)的默認(rèn)RST描述初始化工作緩沖區(qū)。然后,將這個(gè)默認(rèn)RST描述用于在主存儲(chǔ)器102內(nèi)的剪貼板上構(gòu)建例示新RST的電子表格單元格范圍。這種構(gòu)造是像在步驟1238的末端說(shuō)明的那樣實(shí)現(xiàn)的。然后,將控制交給步驟1240。
●在步驟1240中,使“Editor Space”表格615成為當(dāng)前表格,和在禁止常規(guī)行插入和刪除的同時(shí),將這個(gè)表格轉(zhuǎn)成寫保護(hù)模式。然后,選擇單元格范圍614的左上單元格。然后,將與單元格范圍614內(nèi)的當(dāng)前所選單元格所在的行相對(duì)應(yīng)的RE的名稱填入局部變量RE_name中。
●在步驟1241中,在顯示設(shè)備106上顯示RST編輯器對(duì)話框601。
●用局部變量RSTE_name的值初始化標(biāo)記框604。
●將局部變量RSTE_min的值填入文本框606。
●將局部變量RSTE_max的值填入文本框609。
●將局部變量RE_name的值填入組合框610。
然后,根據(jù)記錄在存儲(chǔ)器剪貼板中的描述更新單元格范圍614在這個(gè)空白表格上,在固定單元格地址614(如圖6所示,在本發(fā)明的優(yōu)選實(shí)施例中,地址B2)上粘貼剪貼板的內(nèi)容,以便用戶可以在顯示設(shè)備106上,在窗口611內(nèi)看見(jiàn)RST的示例。
然后,進(jìn)行測(cè)試以檢驗(yàn)對(duì)單元格范圍614所例示的RST定義有貢獻(xiàn)的所有RE和RME是否擁有個(gè)數(shù)相同的字段。如果情況是這樣,那么,使能兩個(gè)按鈕“Save”613和“Save as”612,以便將用定位設(shè)備105對(duì)這兩個(gè)按鈕之一的點(diǎn)擊識(shí)別成一個(gè)有效事件。否則,禁止兩個(gè)按鈕“Save”613和“Save as”612,以便不將用定位設(shè)備105對(duì)這兩個(gè)按鈕之一的點(diǎn)擊識(shí)別成一個(gè)有效事件。
●在步驟1242中,該方法等待RST編輯器對(duì)話框601上的任何用戶動(dòng)作。這樣的用戶動(dòng)作通常來(lái)自用定位設(shè)備105的點(diǎn)擊,但也可以采取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限于此),或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟1243中,檢測(cè)RST編輯器對(duì)話框601上的用戶動(dòng)作。
●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save”613,那么,將控制交給步驟1246;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save as”612,那么,將控制交給步驟1249;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Add”617,那么,將控制交給步驟1254;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Delete”618,那么,將控制交給步驟1255;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Up”619或按鈕“Down”616,那么,將控制交給步驟1256;●如果用戶動(dòng)作是更新組合框610,那么,將控制交給步驟1244;●如果用戶動(dòng)作是點(diǎn)擊旋鈕607,那么,將控制交給步驟1252;
●如果用戶動(dòng)作是點(diǎn)擊旋鈕608,那么,將控制交給步驟1253;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Done”603或關(guān)閉窗口按鈕602,那么,將控制交給步驟1258。
●在步驟1244中,通過(guò)用在組合框610中找到的RE或RME取代與單元格范圍614內(nèi)的當(dāng)前所選單元格所例示的RE或RME相對(duì)應(yīng)的前RE或RME名稱,在工作緩沖區(qū)中更新RST描述。然后,還將局部變量RE_name設(shè)置成等于在組合框610中找到的名稱。然后,將控制交給步驟1241。
●在步驟1246中,進(jìn)行測(cè)試以檢驗(yàn)當(dāng)前編輯的RST是否已被現(xiàn)有RSTI引用。為了這個(gè)目的,考慮RSTT表2220中“Name”字段2222等于局部變量RSTE_name的記錄2221的“Type”字段2227內(nèi)的“REFERENCED”屬性2229的值。如果“INSTANCE REFERENCE”(IR)子字段2229c的值等于1(一),那么,將控制交給步驟1247;否則,將控制交給步驟1248。
●在步驟1247中,通過(guò)刷新“Name”字段2222等于局部變量RSTE_name的記錄2221,更新RSTT表2220。為了這個(gè)目的,●將“Last Change Date”字段2223設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Min Element#”字段2225設(shè)置成局部變量RSTE_min的值;●將“Max Element#”字段2226設(shè)置成局部變量RSTE_max的值。
●將如單元格范圍614所示、如記錄在工作緩沖區(qū)中那樣、和遵從RSTDT表2250的RST的當(dāng)前描述復(fù)制到“Description Ptr”字段2224所指的存儲(chǔ)單元上。
●借助于其依賴于屬于“Description Ptr”字段2224所指的RSTDT表2250的RE和RME的集合的定義公式,自動(dòng)更新被更新成“REFERENCED”屬性2229的“FILIATION REFERENCE”(FR)子字段2229b的“Type”字段2227。
●對(duì)于在這個(gè)RSTDT表2250的列2254中找到的每個(gè)RE名稱或RME名稱,由于根據(jù)其定義公式重新計(jì)算了子字段“REFERENCED OBJECT”(RO)2219d(在“REFERENCED”屬性2219內(nèi)),在“Name”字段2212與這個(gè)RE或RME名稱匹配的相應(yīng)記錄2211內(nèi)自動(dòng)更新RET表2210。
●在步驟1248中,發(fā)出警告消息通知,以便通知用戶編輯的RST已被實(shí)例化成RSTI。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。然后,提醒用戶取消當(dāng)前“Save”操作或繼續(xù)進(jìn)行“Save”操作。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將提醒消息顯示在彈出窗口中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在提醒消息彈出窗口內(nèi)的“Cancel”或“Continue”按鈕,或不偏離本發(fā)明精神的任何其它類似手段作出了他的選擇,如果電子表格用戶的決定是取消操作,那么,將控制交給步驟1241,或者,如果電子表格用戶的決定是繼續(xù)進(jìn)行操作,那么,將控制交給步驟1247。
●在步驟1249中,對(duì)在文本框605中找到的值進(jìn)行測(cè)試,以確定它是否對(duì)應(yīng)于有效新名稱。相應(yīng)準(zhǔn)則是實(shí)現(xiàn)相關(guān)的,只要新推薦名稱相對(duì)于記錄在“Name”字段702、712、722、2212和2222中的所有已定義名稱是唯一字符串,可以采取不同形式而不偏離本發(fā)明的精神。如果有效性和唯一性都得到證明,那么,將控制交給步驟1250;否則,將控制交給步驟1251。
●在步驟1250中,在主存儲(chǔ)器102內(nèi)分配存儲(chǔ)空間,以便以后記錄RST的描述符。這個(gè)分配的存儲(chǔ)空間是與當(dāng)前打開(kāi)的電子表格文件相對(duì)應(yīng)的存儲(chǔ)空間的一部分。然后,在RSTT表2220中創(chuàng)建新記錄2221,和按如下初始化這個(gè)新記錄2221●將“Name”字段2222設(shè)置成在文本框605中找到和在步驟1249中得到核實(shí)的值;然后,這個(gè)字段2222變成RSTE_name局部變量的新值;●將“Last Change Date”字段2223設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Description Ptr”字段2224設(shè)置成剛剛分配的存儲(chǔ)單元;●將“Min Element#”字段2225設(shè)置成局部變量RSTE_min的值;●將“Max Element#”字段2226設(shè)置成局部變量RSTE_max的值;●按如下設(shè)置“Type”字段2227將屬性“META”2228設(shè)置成等于“NO”,和按如下初始化屬性“REFERENCED”2229●用還沒(méi)有指定給任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的質(zhì)數(shù)初始化OR子字段2229a。各種各樣的傳統(tǒng)技術(shù)可以用于識(shí)別質(zhì)數(shù),這里不作進(jìn)一步詳述。
●根據(jù)如下公式初始化“FILIATION REFERENCE”(FR)子字段2229b,其中,根據(jù)記錄在“Description Ptr”字段2224中的結(jié)構(gòu),F(xiàn)集合對(duì)應(yīng)于構(gòu)成新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集合對(duì)應(yīng)于所選對(duì)象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR#RSTE_name∈S,SC=“YES”;否則,SC=“NO”。
●將如單元格范圍614所示、如記錄在工作緩沖區(qū)中那樣、和遵從RSTDT表2250的RST的當(dāng)前描述復(fù)制到“Description Ptr”字段2224所指的存儲(chǔ)單元上。
●對(duì)于在這個(gè)RSTDT表2250的列2254中找到的每個(gè)RE名稱或RME名稱,由于根據(jù)其定義公式重新計(jì)算了子字段“REFERENCEDOBJECT”(RO)2219d(在“REFERENCED”屬性2219內(nèi)),在“Name”字段2212與這個(gè)RE或RME名稱匹配的相應(yīng)記錄2211內(nèi)自動(dòng)更新RET表2210。
●在步驟1251中,發(fā)出警告消息通知,以便通知用戶在點(diǎn)擊“Save as”按鈕612之前,必須在文本框605中指定有效唯一的名稱。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在警告消息彈出窗口內(nèi)的“OK”按鈕,或不偏離本發(fā)明精神的任何其它類似手段確認(rèn)了這個(gè)通知消息,將控制交給步驟1241。
●在步驟1252中,根據(jù)定位設(shè)備105在旋鈕607上指定的方向(向上或向下),和只要其值保持正的和小于等于在本發(fā)明的優(yōu)選實(shí)施例中設(shè)置成等于254的上限和如文本框609所示的值兩者,將局部變量RSTE_min加1(一)或減1(一)。然后,將控制交給步驟1241。
●在步驟1253中,根據(jù)定位設(shè)備105在旋鈕608上指定的方向(向上或向下),和只要其值保持正的,大于如文本框606所示的值,和小于等于在本發(fā)明的優(yōu)選實(shí)施例中設(shè)置成等于254的上限,將局部變量RSTE_max加1(一)或減1(一)。然后,將控制交給步驟1241。
●在步驟1254中,在例示編輯的RST的單元格范圍614中,在最后所選單元格以前所處的行上面插入新行。
然后,選擇單元格范圍614內(nèi)位于新行上的最左單元格。
然后,在工作緩沖區(qū)中,通過(guò)引入像其它元元素那樣,通過(guò)也指定給局部變量RE_name的名稱描述的新RME,更新RST定義。另外,將如單元格范圍614所示、如記錄在工作緩沖區(qū)中那樣、和遵從RSTDT表2250的RST的當(dāng)前描述復(fù)制到“Description Ptr”字段2224所指的存儲(chǔ)單元上。然后,將控制交給步驟1241。
●在步驟1255中,從單元格范圍614中除去包含所選單元格的行,以便選擇下一個(gè)RE或元元素。然后,通過(guò)除去通過(guò)其名稱識(shí)別的刪除元元素,更新RST定義。另外,將如單元格范圍614所示、如記錄在工作緩沖區(qū)中那樣、和遵從RSTDT表2250的RST的當(dāng)前描述復(fù)制到“Description Ptr”字段2224所指的存儲(chǔ)單元上。然后,將控制交給步驟1257。
●在步驟1256中,如果電子表格用戶用定位設(shè)備105點(diǎn)擊了“Up”按鈕619或“Down”按鈕616,并且,如果這種移動(dòng)不移動(dòng)遠(yuǎn)離例示RST的單元格范圍614的當(dāng)前單元格,分別向上或向下移動(dòng)“Editor Space”表格615內(nèi)的當(dāng)前單元格。
●在步驟1257中,將局部變量RE_name設(shè)置成等于與單元格范圍614內(nèi)的當(dāng)前所選單元格所標(biāo)識(shí)的RE或RME相對(duì)應(yīng)的RE或RME的名稱。然后,將控制交給步驟1241。
●在步驟1258中,關(guān)閉RST編輯器對(duì)話框601,以便它從顯示設(shè)備106上消失,然后,從顯示窗口中除去“Editor Space”表格615,以便用在RST編輯器調(diào)用時(shí)出現(xiàn)的原始表格取代它?,F(xiàn)在再次使能在顯示“Editor Space”表格615的同時(shí)禁止的所有裝置。最后,將控制交還給最初步驟1231,以便處理任何進(jìn)一步的RST編輯器命令。
E6.ST實(shí)例化器方法用在本發(fā)明優(yōu)選實(shí)施例中的創(chuàng)建遵從定義的ST的STI的方法總結(jié)在圖14A和14B的流程圖1400中,其中,后者對(duì)應(yīng)于CreateSTI例程??梢詫⑦@種方法看作ST實(shí)例化器命令的處理。
●在步驟1401中,該方法處在它的默認(rèn)狀態(tài)下,等待啟動(dòng)該進(jìn)程的事件。
●在步驟1402中,作為用戶動(dòng)作的結(jié)果,檢測(cè)ST實(shí)例化器命令。這個(gè)動(dòng)作可以是,例如,鍵盤104上的特定鍵組合,定位設(shè)備105在特定按鈕上的點(diǎn)擊,或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟1403中,進(jìn)行測(cè)試以檢驗(yàn)當(dāng)前所選的單元格是否包含在存在RSTI的表格內(nèi)。這個(gè)測(cè)試可能通過(guò)分析RSTIT表2260,以識(shí)別其Address字段2262對(duì)應(yīng)于與當(dāng)前所選單元格相同的表格的任何記錄2261來(lái)完成。如果情況是這樣,那么,將控制交給步驟1404;否則,將控制交給步驟1405。
●在步驟1404中,發(fā)出警告消息通知,以便通知用戶在已經(jīng)存在RSTI的表格上不能單獨(dú)創(chuàng)建STI。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在警告消息彈出窗口內(nèi)的“OK”按鈕,或不偏離本發(fā)明精神的任何其它類似手段確認(rèn)了這個(gè)通知消息,將控制交給步驟1401。
●在步驟1405中,首先檢索命令參數(shù)ST_name它對(duì)應(yīng)于要?jiǎng)?chuàng)建的STI服從的ST的名稱。這個(gè)參數(shù)ST_name用于分析STT表720,以便找出其“Name”字段722與參數(shù)ST_name匹配的記錄721。一旦找到這個(gè)記錄721,將它的字段“Min Element#”725和“Max Element#”726分別存儲(chǔ)成局部變量STI_min和STI_max。然后,將它的字段“DescriptionPtr”724用于根據(jù)引用的STDT表760,確定定義在ST內(nèi)的元元素的個(gè)數(shù)、和定義在ST的每個(gè)元素或元元素成員內(nèi)的單元格的個(gè)數(shù)。將第一個(gè)數(shù)存儲(chǔ)成局部變量STI_meta,和將第二個(gè)數(shù)存儲(chǔ)成局部變量STI_width 1325(代表未來(lái)STI的列數(shù))。
然后,用STI_min所取的值初始化另一個(gè)局部變量STI_element。
然后,用默認(rèn)值“YES”初始化另一個(gè)局部變量STI_critical。
然后,用當(dāng)前表格1320中的總列數(shù)初始化另一個(gè)局部變量STI_sheetwidth 1321。
然后,用當(dāng)前表格1320中的總行數(shù)初始化另一個(gè)局部變量STI_sheetheight 1321。
然后,用值OVERLAY初始化另一個(gè)局部變量STI_mode。
●在步驟1406中,首先構(gòu)建或更新一些其它局部變量。首先用局部變量STI_offset_width 1323和STI_offset_height 1324表示當(dāng)前所選單元格1327的位置,局部變量STI_offset_width 1323和STI_offset_height 1324分別對(duì)應(yīng)于當(dāng)前表格1320的左上單元格與當(dāng)前所選單元格1327之間的列數(shù)和行數(shù)。
然后,用作為局部變量STI_meta和STI_element之和計(jì)算的局部變量STI_height 1326表示未來(lái)STI的行數(shù)。
其次,通過(guò)評(píng)估它們的地址確定一些工作單元格范圍。
首先將與未來(lái)STI相對(duì)應(yīng)的單元格范圍STI_range 1328確定為當(dāng)前所選單元格1327作為左上單元格、和行數(shù)和列數(shù)分別等于STI_height1326和STI_width 1325的單元格范圍。
然后,將單元格范圍STI_horizontal_flushed_range 1330確定為與STI_range 1328共享相同的行、和占據(jù)當(dāng)前表格1320的STI_width 1325個(gè)最右列的單元格范圍。
然后,將單元格范圍STI_horizontal_kept_range 1329確定為與STI_range 1328共享相同的行、和占據(jù)位于那兩個(gè)STI_range 1328和STI_hori-zontal_flushed_range 1330之間的列的單元格范圍。
然后,將單元格范圍STI_vertical_flushed_range 1332確定為與STIrange 1328共享相同的列、和占據(jù)當(dāng)前表格1320的STI_height 1326個(gè)底行的單元格范圍。
然后,將單元格范圍STI_vertical_kept_range 1331確定為與STI1328共享相同的列、和占據(jù)位于那兩個(gè)STI_range 328STI_ver-tical_flushed_range 1332之間的行的單元格范圍。
●在步驟1407中,進(jìn)行兩種求和以檢驗(yàn)未來(lái)STI是否恰好在當(dāng)前表格1320的范圍之內(nèi)。
●如果發(fā)現(xiàn)局部變量STI_offset_width 1323與STI_width 1325之和大于局部變量STI_sheet_width 1321,那么,將局部變量STI_too_wide設(shè)置成“YES”;否則,將它設(shè)置成“NO”。
●如果發(fā)現(xiàn)局部變量STI_offset_height 1324與STI_height 1326之和大于局部變量STI_sheet_height 1322,那么,將局部變量STI_too_high設(shè)置成“YES”;否則,將它設(shè)置成“NO”。
●在步驟1408中,根據(jù)五種可能實(shí)例化模式,進(jìn)行幾種測(cè)試以評(píng)估未來(lái)STI的創(chuàng)建對(duì)任何已經(jīng)存在STI或數(shù)據(jù)的潛在影響。這些測(cè)試要求分析STIT表750,和訪問(wèn)每個(gè)記錄751以掌握每個(gè)已定義STI的地址(“Address”字段752)和重要性(“Critical”字段755)。這些測(cè)試評(píng)估兩個(gè)給定單元格范圍是否部分重疊(意味著在第一單元格范圍內(nèi)存在至少一個(gè)屬于第二單元格范圍的單元格,和至少一個(gè)不屬于第二單元格范圍的單元格)或第一給定單元格范圍是否包括在第二給定單元格范圍內(nèi)(意味著屬于第一單元格范圍的每個(gè)單元格也屬于第二單元格范圍)。不同的傳統(tǒng)范圍比較技術(shù)可以用于評(píng)估范圍部分重疊或范圍包括,這不偏離本發(fā)明的精神;在本發(fā)明的優(yōu)選實(shí)施例中將不描述它們。首先,研究OVERLAY實(shí)例化模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與單元格范圍STI_range 1328部分重疊的現(xiàn)有STI,那么,局部測(cè)試變量STI_overlay_critical取值“YES”;否則,局部測(cè)試變量STI_overlay_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與單元格范圍STI_range 1328部分重疊的現(xiàn)有STI,那么,局部測(cè)試變量STI_overlay_other取值“YES”;否則,局部測(cè)試變量STI_overlay_other取值“NO”。
●如果單元格范圍STI_range 1328內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STI_overlay_data取值“NO”;否則,局部測(cè)試變量STI_overlay_data取值“YES”。其次,研究HORIZONTAL_INSERT實(shí)例化模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與由當(dāng)前所選單元格1327所在的整個(gè)行組成的單元格范圍部分重疊、或與由最底部STI_height 1326個(gè)行構(gòu)成的單元格范圍部分重疊、或包括在由最底部STI_height 1326個(gè)行構(gòu)成的單元格范圍內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STI_horizontal_critical取值“YES”;否則,局部測(cè)試變量STI_horizontal_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與由當(dāng)前所選單元格1327所在的整個(gè)行組成的單元格范圍部分重疊、或與由最底部STI_height 1326個(gè)行構(gòu)成的單元格范圍部分重疊、或包括在由最底部STI_height 1326個(gè)行構(gòu)成的單元格范圍內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STI_horizontal_other取值“YES”;否則,局部測(cè)試變量STI_horizontal_other取值“NO”。
●如果由最底部STI_height 1326個(gè)行構(gòu)成的單元格范圍內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STI_horizontal_data取值“NO”;否則,局部測(cè)試變量STI_horizontal_data取值“YES”。
第三,研究HORIZONTAL_INSERT_BY_RANGE實(shí)例化模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與并置兩個(gè)單元格范圍STI_range 1328和STI_vertical_kept_range 1331構(gòu)成的單元格范圍部分重疊、或與單元格范圍STI_vertical_flushed_range1332部分重疊、或包括在單元格范圍STI_vertical_flushed_range1332內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STI_horizontal_range_critical取值“YES”;否則,局部測(cè)試變量STI_horizontal_range_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與并置兩個(gè)單元格范圍STI_range 1328和STI_vertical_kept_range 1331構(gòu)成的單元格范圍部分重疊、或與單元格范圍STI_vertical_flushed_range 1332部分重疊、或包括在單元格范圍STI_vertical_flushed_range 1332內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STI_horizontal_range_other取值“YES”;否則,局部測(cè)試變量STI_horizontal_range_other取值“NO”。
●如果單元格范圍STI_vertical_flushed_range 1332內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STI_horizontal_range_data取值“NO”;否則,局部測(cè)試變量STI_horizontal_range_data取值“YES”。
第四,研究VERTICAL_INSERT實(shí)例化模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與由當(dāng)前所選單元格1327所在的整個(gè)列組成的單元格范圍部分重疊、或與由最右側(cè)STI_width 1325個(gè)列構(gòu)成的單元格范圍部分重疊、或包括在由最右側(cè)STI_width 1325個(gè)列構(gòu)成的單元格范圍內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STI_vertical_critical取值“YES”;否則,局部測(cè)試變量STI_vertical_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與由當(dāng)前所選單元格1327所在的所有列組成的單元格范圍部分重疊、或與由最右側(cè)STI_width 1325個(gè)列構(gòu)成的單元格范圍部分重疊、或包括在由最右側(cè)STI_width 1325個(gè)列構(gòu)成的單元格范圍內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STI_vertical_other取值“YES”;否則,局部測(cè)試變量STI_vertical_other取值“NO”。
●如果由最右側(cè)STI_width 1325個(gè)列構(gòu)成的單元格范圍內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STI_vertical_data取值“NO”;否則,局部測(cè)試變量STI_vertical_data取值“YES”。
第五,研究VERTICAL_INSERT_BY_RANGE實(shí)例化模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與并置兩個(gè)單元格范圍STI_range 1328和STI_horizontal_kept_range 1329構(gòu)成的單元格范圍部分重疊、或與單元格范圍STI_horizontal_flushed_range 1330部分重疊、或包括在單元格范圍STI_horizontal_flushed_range 1330內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STI_vertical_range_critical取值“YES”;否則,局部測(cè)試變量STI_vertical_range_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與并置兩個(gè)單元格范圍STI_range 1328和STI_horizontal_kept_range 1329構(gòu)成的單元格范圍部分重疊、或與單元格范圍STI_horizontal_flushed_range 1330部分重疊、或包括在單元格范圍STI_horizontal_flushed_range 1330內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STI_vertical_range_other取值“YES”;否則,局部測(cè)試變量STI_vertical_range_other取值“NO”。
●如果單元格范圍STI_horizontal_flushed_range 1330內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STI_vertical_range_data取值“NO”;否則,局部測(cè)試變量STI_vertical_range_data取值“YES”。
●在步驟1409中,在顯示設(shè)備106上顯示ST實(shí)例化器對(duì)話框1300。如果局部變量STI_critical取值“YES”,“Critical”復(fù)選框1314顯示復(fù)選標(biāo)記;否則(值“NO”),Critical”復(fù)選框1314保持空白顯示。用局部變量ST_name初始化標(biāo)記框1315。將局部變量STI_element的值填入文本框1312。按如下順序?qū)⑷缦戮植孔兞康闹祻淖蟮接?、從頂行開(kāi)始逐行填入15個(gè)標(biāo)記框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取相應(yīng)值OVERLAY、HORIZONTAL_INSERT、HORIZONTAL_INSERT_BY_RANGE、VERTICAL_INSERT、或VERTICAL_INSERT_BY_RANGE,那么,選項(xiàng)按鈕“Overlay”1309、“Horizontal Insert”1308、“Horizontal Insert byRange”1307、“Vertical Insert”1306、或“Vertical Insert by Range”1305獨(dú)自顯示黑點(diǎn)。最后,一旦如下局部變量之一取值“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實(shí)例化器對(duì)話框1300上、或有關(guān)當(dāng)前所選單元格的任何改變的任何用戶動(dòng)作。這樣的用戶動(dòng)作通常來(lái)自用定位設(shè)備105的點(diǎn)擊,但也可以采取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限于此),或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟1411中,檢測(cè)ST實(shí)例化器對(duì)話框1300上、或有關(guān)當(dāng)前所選單元格的改變的用戶動(dòng)作。
●如果用戶動(dòng)作是點(diǎn)擊“Create”按鈕1303,那么,將控制交給步驟1416;●如果用戶動(dòng)作是點(diǎn)擊旋鈕1313的上部,那么,將控制交給步驟1415;●如果用戶動(dòng)作是點(diǎn)擊旋鈕1313的下部,那么,將控制交給步驟1414;●如果用戶動(dòng)作是點(diǎn)擊“Critical”按鈕1314,那么,將控制交給步驟1413;●如果用戶動(dòng)作是點(diǎn)擊選項(xiàng)按鈕1309、1308、1307、1306、和1305之一,那么,將控制交給步驟1412;●如果用戶動(dòng)作是點(diǎn)擊“Cancel”按鈕1302或關(guān)閉窗口按鈕1301,那么,將控制交給步驟1418;●最后,如果用戶動(dòng)作是改變當(dāng)前所選單元格的位置,那么,將控制交給步驟1406。
●在步驟1412中,如果電子表格用戶用定位設(shè)備105分別點(diǎn)擊選項(xiàng)按鈕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中,訪問(wèn)STIT表750,以便從中除去與如在步驟1408期間對(duì)局部變量STI_mode所代表的插入模式識(shí)別的那樣,新實(shí)例的引入破壞的STI相對(duì)應(yīng)的每個(gè)記錄751。然后,更新STT表720,以反映每個(gè)STI的除去。對(duì)于每個(gè)除去的STI,將其“Name”字段722等于與除去STI相對(duì)應(yīng)的STIT表750的記錄751的“ST”字段753的記錄721的“REFERENCED”屬性729的“INSTANCE REFERENCE”(IR)字段729c除以2(二)。
●在步驟1417中,調(diào)用例程CreateSTI。
●在步驟1418中,關(guān)閉ST實(shí)例化器對(duì)話框1300,以便它從顯示設(shè)備106上消失。最后,將控制交還給最初步驟1401,以便處理任何進(jìn)一步的ST實(shí)例化器命令。
如下步驟,即,圖14B的所有部分對(duì)應(yīng)于像用在本發(fā)明優(yōu)選實(shí)施例中那樣的CreateSTI例程的執(zhí)行。
●在步驟1419中,在STIT表750中引入新記錄751。在這個(gè)記錄751內(nèi),用單元格范圍STI_range 1328的地址初始化“Address”字段752,用局部變量ST_name的值初始化“ST”字段753,用局部變量STI_element的值初始化“Element#”字段754,用局部變量STI_critical的值初始化“Critical”字段755,用構(gòu)成新STI的頁(yè)眉部分的元元素的個(gè)數(shù)(這個(gè)數(shù)字等于與新STI服從的ST相關(guān)聯(lián)的STDT表760的頁(yè)眉部分767中的對(duì)數(shù))初始化“Header Size”字段756,和用構(gòu)成新STI的頁(yè)腳部分的元元素的個(gè)數(shù)(這個(gè)數(shù)字等于與新STI服從的ST相關(guān)聯(lián)的STDT表760的頁(yè)腳部分766中的對(duì)數(shù))初始化“Footer Size”字段757。然后,掃描STT表720,以便識(shí)別發(fā)現(xiàn)“Name”字段等于局部變量ST_name的記錄721。一旦找到,通過(guò)將“INSTANCE REFERENCE”子字段729c乘以2(二),更新這個(gè)記錄721的“Type”字段727內(nèi)的“REFERENCED”屬性729。
●在步驟1420中,進(jìn)行測(cè)試以檢驗(yàn)局部變量STI_mode的值。
●如果發(fā)現(xiàn)這個(gè)值等于OVERLAY,那么,將控制交給步驟1425;●如果發(fā)現(xiàn)這個(gè)值等于HORIZONTAL_INSERT,那么,將控制交給步驟1424;●如果發(fā)現(xiàn)這個(gè)值等于HORIZONTAL_INSERT_BY_RANGE,那么,將控制交給步驟14244;●如果發(fā)現(xiàn)這個(gè)值等于VERTICAL_INSERT,那么,將控制交給步驟1423;●如果發(fā)現(xiàn)這個(gè)值等于VERTICAL_INSERT_BY_RANGE。然后,將控制交給步驟1421。
●在步驟1421中,選擇單元格范圍STI_range 1328以便成為當(dāng)前所選單元格范圍,該當(dāng)前所選單元格范圍保持在其前者的位置1327上,然后,進(jìn)行“將列插入所選范圍內(nèi)”的常規(guī)操作。
●在步驟1422中,選擇單元格范圍STI_range 1328以便成為當(dāng)前所選單元格范圍,該當(dāng)前所選單元格范圍保持在其前者的位置1327上,然后,進(jìn)行“將行插入所選范圍內(nèi)”的常規(guī)操作。
●在步驟1423中,選擇單元格范圍STI_range 1328以便成為當(dāng)前所選單元格范圍,該當(dāng)前所選單元格范圍保持在其前者的位置1327上,然后,進(jìn)行“列插入”的常規(guī)操作。然后,將控制交給步驟1425。
●在步驟1424中,選擇單元格范圍STI_range 1328以成為當(dāng)前所選單元格范圍,該當(dāng)前所選單元格范圍保持在其前者的位置1327上,然后,進(jìn)行“行插入”的常規(guī)操作。然后,將控制交給步驟1425。
●在步驟1425中,將局部變量STI_index初始化成局部變量STI_element所取的值。然后,分析STT表720,以便識(shí)別其“Name”字段722與局部變量ST_name的值匹配的記錄721。在這個(gè)記錄721內(nèi)檢索允許在存儲(chǔ)器中定位與要?jiǎng)?chuàng)建的新STI服從的ST相關(guān)聯(lián)的STDT表760的“Description Ptr”字段724。然后,將在這個(gè)STDT表760內(nèi)找到的元素或MEF名稱和元素或MEP名稱的第一對(duì)761設(shè)置成當(dāng)前名稱對(duì)(EF或MEF名稱,EP或MEP名稱)。
●在步驟1426中,分析EPT表710,以便找出發(fā)現(xiàn)其“Name”字段712等于當(dāng)前對(duì)內(nèi)的EP或MEP名稱的記錄711。一旦找到這個(gè)記錄711,檢索它的“Description Ptr”字段714,以便在存儲(chǔ)器中定位例示EP或MEP的單元格范圍。只通過(guò)值將這個(gè)EP或MEP的描述復(fù)制-粘貼到當(dāng)前所選單元格上,以便STI_range內(nèi)的相應(yīng)行接受EP或MEP初始值。然后,分析EFT表700,以便找出發(fā)現(xiàn)其“Name”字段702等于當(dāng)前對(duì)內(nèi)的EF或MEF名稱的記錄701。一旦找到這個(gè)記錄701,檢索它的“Description Ptr”字段704,以便在存儲(chǔ)器中定位例示EF或MEF的單元格范圍。只通過(guò)屬性將這個(gè)EF或MEF的描述復(fù)制-粘貼到當(dāng)前所選單元格上,以便STI_range內(nèi)的相應(yīng)行接受EF或MEF屬性。
●在步驟1427中,進(jìn)行測(cè)試以檢驗(yàn)當(dāng)前對(duì)(EF或MEF名稱,EP或MEP名稱)對(duì)應(yīng)于元素還是元元素。在第一種情況下,將控制交給步驟1428,和在第二種情況下,將控制交給步驟1429。
●在步驟1428中,將局部變量STI_index減1(一)。然后,將控制交給步驟1430。
●在步驟1429中,進(jìn)行測(cè)試以檢驗(yàn)當(dāng)前對(duì)(EF或MEF名稱,EP或MEP名稱)是否是STDT表760內(nèi)的最后一個(gè)763。如果情況是這樣,通過(guò)使控制返回到例程調(diào)用程序完成CreateSTI的執(zhí)行;否則,將控制交給步驟1431。
●在步驟1430中,進(jìn)行測(cè)試以檢驗(yàn)局部變量STI_index是否等于0(零)。如果情況是這樣,將控制交給步驟1429;否則,將控制交給步驟1432。
●在步驟1431中,使STDT表760中接在當(dāng)前一對(duì)之后的名稱對(duì)(EF或MEF名稱,EP或MEP名稱)成為當(dāng)前名稱對(duì)。
●在步驟1432中,將當(dāng)前所選單元格向下移動(dòng)一行。然后,將控制交給步驟1426。
E7.STI插入管理器方法用在本發(fā)明優(yōu)選實(shí)施例中的通過(guò)引入新元素改變現(xiàn)有STI的方法總結(jié)在圖15A的流程圖1500中??梢詫⑦@種方法看作STI插入管理器命令的處理。
●在步驟1501中,該方法處在它的默認(rèn)狀態(tài)下,等待啟動(dòng)該進(jìn)程的事件。
●在步驟1502中,作為用戶動(dòng)作的結(jié)果,檢測(cè)STI插入管理器命令。這個(gè)動(dòng)作可以是,例如●鍵盤104上的特定鍵組合;●定位設(shè)備105在特定按鈕上的點(diǎn)擊;或●本文未作進(jìn)一步規(guī)定的任何其它類似手段。
當(dāng)檢測(cè)到STI插入管理器命令時(shí),當(dāng)前電子選擇對(duì)應(yīng)于可能縮減成單個(gè)單元格、稱為當(dāng)前所選單元格范圍和包括當(dāng)前所選單元格的單元格范圍。如果這個(gè)當(dāng)前所選單元格不是當(dāng)前所選單元格范圍內(nèi)的左上單元格,那么,當(dāng)前所選單元格范圍的左上單元格成為當(dāng)前所選單元格。
●在步驟1503中,進(jìn)行測(cè)試以檢驗(yàn)當(dāng)前所選單元格是否位于現(xiàn)有STI內(nèi)。這個(gè)測(cè)試通過(guò)分析STIT表750,和在每個(gè)記錄751中訪問(wèn)“Address”字段752,以便確定在這個(gè)字段中指定的單元格范圍地址是否的確包括各個(gè)當(dāng)前所選單元格1707的地址來(lái)完成。如果情況是這樣,那么,當(dāng)前所選單元格1707包含在名為STIM_instance_range 1713的中,并且,將控制交給步驟1504;否則,將控制交給步驟1513。
●在步驟1504中,首先檢索在步驟1503中找到的記錄751,以便初始化來(lái)自其描述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與參數(shù)ST_name匹配的記錄721。一旦找到這個(gè)記錄721,將它的字段“Max Element#”726存儲(chǔ)成局部變量STIM_max。然后,用當(dāng)前表格1700中的總列數(shù)初始化另一個(gè)局部變量STIM_sheet_width1701。然后,用當(dāng)前表格1700中的總行數(shù)初始化另一個(gè)局部變量STIM_sheet_height 1701。然后,用值HORIZONTAL_INSERT初始化另一個(gè)局部變量STIM_mode。然后,將當(dāng)前所選單元格1707的位置用于初始化與當(dāng)前表格1700的左上單元格與當(dāng)前所選單元格1707之間的行數(shù)相對(duì)應(yīng)的局部變量STIM_range_offset_height 1709。然后,用局部變量STIM_height 1706表示當(dāng)前所選單元格范圍STIM_range1708的行數(shù)。然后,首先用局部變量STIM_offset_width 1703和STIM_offset_height 1704表示單元格范圍STIM_instance_range 1713的左上單元格的位置,局部變量STIM_offset_width 1703和STIM_offsetheight 1704分別對(duì)應(yīng)于當(dāng)前表格1320的左上單元格與單元格范圍STIM_instance_range 1713的左上單元格之間的列數(shù)和行數(shù)。然后,將單元格范圍STIM_vertical_flushed_range 1712確定成與STIM_instance_range 1713共享相同的列、和占據(jù)當(dāng)前表格1700的STIM_height 1706個(gè)底行的單元格范圍。然后,將單元格范圍STIM_vertical_kept_range 1711確定成與STIM_instance_range 1713共享相同的列、和占據(jù)位于那兩個(gè)STIM_instance_range 1713和STIM_vertical_flushed_range 1712之間的行的單元格范圍。
●在步驟1505中,進(jìn)行測(cè)試以確定當(dāng)前所選單元格1707位于當(dāng)前STI的頁(yè)眉部分或頁(yè)腳部分內(nèi),還是位于當(dāng)前STI的元素內(nèi)。如果局部變量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之和,那么,當(dāng)前所選單元格1707在當(dāng)前STI的頁(yè)眉部分和頁(yè)腳部分之外,并且,將控制交給步驟1508;否則,將控制交給步驟1506。
●在步驟1506中,發(fā)出警告消息通知,以便通知用戶如果繼續(xù)進(jìn)行插入操作,可能會(huì)破壞當(dāng)前STI。這通常可以通過(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。然后,提醒用戶取消當(dāng)前“Insertion”操作,或繼續(xù)進(jìn)行“Insertion”操作。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將提醒消息顯示在彈出窗口中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在提醒消息彈出窗口內(nèi)的“Cancel”或“Contihue”按鈕,或不偏離本發(fā)明精神的任何其它類似手段作出他的選擇,如果電子表格用戶的決定是取消操作,將控制交給步驟1505,或者,如果電子表格用戶的決定是繼續(xù)進(jìn)行操作,將控制交給步驟1507。
●在步驟1507中,訪問(wèn)STIT表750,以便從中除去與在步驟1503中識(shí)別的當(dāng)前STI相對(duì)應(yīng)的和包含當(dāng)前所選單元格1707的記錄751。然后,更新STT表720,以反映STI的除去。將其“Name”字段722等于與除去STI相對(duì)應(yīng)的STIT表750的記錄751的“ST”字段753的記錄721的“REFERENCED”屬性729的“INSTANCE REFERENCE”(IR)字段729c除以2(二)。
●在步驟1508中,進(jìn)行兩種求和以檢驗(yàn)當(dāng)前STI內(nèi)的插入是否落在當(dāng)前表格1320的邊界之內(nèi)和落在STI的最大尺寸之內(nèi)。
●如果發(fā)現(xiàn)局部變量STIM_height 1706與STIM_element之和大于局部變量STIM_max,那么,將局部變量STI_too_high設(shè)置成“YES”;否則,將它設(shè)置成“NO”。
●如果發(fā)現(xiàn)局部變量STIM_offset_height 1704、STIM_header_size、STIM_element、STIM_footer_size與STIM_height 1706之和大于局部變量STIM_sheet_height 1702,那么,將局部變量STI_too_high設(shè)置成“YES”;否則,將它設(shè)置成“NO”。
●在步驟1509中,根據(jù)兩種可能插入模式,進(jìn)行幾種測(cè)試以評(píng)估插入對(duì)任何已經(jīng)存在STI或數(shù)據(jù)的潛在影響。這些測(cè)試要求分析STIT表750,和訪問(wèn)每個(gè)記錄751以掌握每個(gè)已定義STI的地址(“Address”字段752)和重要性(“Critical”字段755)。這些測(cè)試評(píng)估兩個(gè)給定單元格范圍是否部分重疊(意味著在第一單元格范圍內(nèi)存在至少一個(gè)屬于第二單元格范圍的單元格,和至少一個(gè)不屬于第二單元格范圍的單元格)或第一給定單元格范圍是否包括在第二給定單元格范圍內(nèi)(意味著屬于第一單元格范圍的每個(gè)單元格也屬于第二單元格范圍)。不同的傳統(tǒng)范圍比較技術(shù)可以用于評(píng)估范圍部分重疊或范圍包括,這不偏離本發(fā)明的精神;在本發(fā)明的優(yōu)選實(shí)施例中將不描述它們。
首先,研究HORIZONTAL_INSERT實(shí)例化模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與由當(dāng)前所選單元格1707所在的整個(gè)行組成的單元格范圍部分重疊、或與由最底部STIM_height 1706個(gè)行構(gòu)成的單元格范圍部分重疊、或包括在由最底部STIM_height 1706個(gè)行構(gòu)成的單元格范圍內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_horizontal_critical取值“YES”;否則,局部測(cè)試變量STIM_horizontal_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與由當(dāng)前所選單元格1707所在的整個(gè)行組成的單元格范圍部分重疊、或與由最底部STIM_height 1076個(gè)行構(gòu)成的單元格范圍部分重疊、或包括在由最底部STIM_height 1706個(gè)行構(gòu)成的單元格范圍內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_horizontal_other取值“YES”;否則,局部測(cè)試變量STIM_horizontal_other取值“NO”。
●如果由最底部STIM_height 1706個(gè)行構(gòu)成的單元格范圍內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STIM_horizontal_data取值“NO”;否則,局部測(cè)試變量STIM_horizontal_data取值“YES”。
其次,研究HORIZONTAL_INSERT_BY_RANGE實(shí)例化模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與并置單元格范圍STIM_vertical_kept_range 1711和通過(guò)除去當(dāng)前所選單元格1712上面的行從單元格范圍STIM_instance_range 1713中導(dǎo)出的單元格范圍構(gòu)成的單元格范圍部分重疊、或與單元格范圍STIM_vertical_flushed_range 1712部分重疊、或包括在單元格范圍STIM_vertical_flushed_range 1712內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_horizontal_range_critical取值“YES”;否則,局部測(cè)試變量STIM_horizontal_range_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與并置單元格范圍STIM_vertical_kept_range 1711和通過(guò)除去當(dāng)前所選單元格1712上面的行從單元格范圍STIM_instance_range 1713中導(dǎo)出的單元格范圍構(gòu)成的單元格范圍部分重疊、或與單元格范圍STIM_vertical_flushed_range 1712部分重疊、或包括在單元格范圍STIM_vertical_flushed_range 1712內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_horizontal_range_other取值“YES”;否則,局部測(cè)試變量STIM_horizontal_range_other取值“NO”。
●如果單元格范圍STIM_vertical_flushed_range 1712內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STIM_horizontal_range_dara取值“NO”;否則,局部測(cè)試變量STIM_horizontal_range_data取值“YES”。
●在步驟1510中,在顯示設(shè)備106上顯示ST插入管理器對(duì)話框1600。如果局部變量STIM_critical取值“YES”,“Critical”復(fù)選框1610顯示復(fù)選標(biāo)記;否則(值“NO”),Critical”復(fù)選框1610保持空白顯示。用局部變量ST_name初始化標(biāo)記框1611。將局部變量STIM_height 1706的值填入文本框1608。將局部變量STIM_too_high的值填入標(biāo)記框1604。按如下順序?qū)⑷缦戮植孔兞康闹祻淖蟮接摇捻斝虚_(kāi)始逐行填入6個(gè)標(biāo)記框1304●STIM_horizontal_critical;●STIM_horizontal_other;●STIM_horizontal_data;●STIM_horizontal_range_citical;●STIM_borizontal_range_other;●STIM_horizontal_range_data。
然后,如果局部變量STIM_mode取相應(yīng)值HORIZONTAL_INSERT、或HORIZONTAL_INSERT_BY_RANGE,那么,選項(xiàng)按鈕1606或1605獨(dú)自顯示黑點(diǎn)。最后,一旦如下局部變量之一取值“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插入管理器對(duì)話框1600上的任何用戶動(dòng)作。這樣的用戶動(dòng)作通常來(lái)自用定位設(shè)備105的點(diǎn)擊,但也可以采取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限于此),或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟1512中,檢測(cè)ST插入管理器對(duì)話框1600上的用戶動(dòng)作。
●如果用戶動(dòng)作是點(diǎn)擊“Insert”按鈕1603,那么,將控制交給步驟1525;●如果用戶動(dòng)作是點(diǎn)擊旋鈕1609的上部,那么,將控制交給步驟1522;●如果用戶動(dòng)作是點(diǎn)擊旋鈕1609的下部,那么,將控制交給步驟1541;●如果用戶動(dòng)作是點(diǎn)擊“Critical”按鈕1610,那么,將控制交給步驟1523;●如果用戶動(dòng)作是點(diǎn)擊選項(xiàng)按鈕1606和1605之一,那么,將控制交給步驟1524;和●如果用戶動(dòng)作是點(diǎn)擊“Cancel”按鈕1602或關(guān)閉窗口按鈕1601,那么,將控制交給步驟1521。
●在步驟1513中,用當(dāng)前表格1740中的總列數(shù)初始化局部變量STIMsheet_width 1741(參照?qǐng)D17B)。然后,用當(dāng)前表格1740中的總行數(shù)初始化另一個(gè)局部變量STIM_sheet_height 1742。然后,用值HORIZONTAL_INSERT初始化另一個(gè)局部變量STIM_mode。然后,分別用局部變量STIM_height 1746和STIM_width 1745表示當(dāng)前所選單元格范圍STIM_rnage 1748的列數(shù)和行數(shù)。然后,首先用局部變量STIM_offset_width 1743和STIM_offset_height 1744表示當(dāng)前所選單元格1747的位置,局部變量STIM_offset_width 1743和STIM_offset_height 1744分別對(duì)應(yīng)于當(dāng)前表格1740的左上單元格與當(dāng)前所選單元格1747之間的列數(shù)和行數(shù)。然后,將單元格范圍STIM_vertical_flushed_range 1752確定成與STIM_range 1748共享相同的列、和占據(jù)當(dāng)前表格1740的STIM_height 1746個(gè)底行的單元格范圍。然后,將單元格范圍STIM_vertical_kept_range 1751確定成與STIM_range 1748共享相同的列、和占據(jù)位于那兩個(gè)STIM_range 1743和STIM_vertical_flushed_range 1752之間的行的單元格范圍。然后,將單元格范圍STIM_horizontal_flushed_range 1750確定成與STIM_range 1748共享相同的行、和占據(jù)當(dāng)前表格1740的STIM_width1745個(gè)最右列的單元格范圍。然后,將單元格范圍STIMhorizontal_kept_range 1749確定成與STIM_range 1748共享相同的行、和占據(jù)位于那兩個(gè)STIM_range 1748和STIM_horizontal_flushed_range1750之間的列的單元格范圍。
●在步驟1514中,根據(jù)四種可能插入模式,進(jìn)行幾種測(cè)試以評(píng)估插入對(duì)任何已存在STI或數(shù)據(jù)的潛在影響。這些測(cè)試要求分析STIT表750,和訪問(wèn)每個(gè)記錄751以掌握每個(gè)已定義STI的地址(“Address”字段752)和重要性(“Critical”字段755)。這些測(cè)試評(píng)估兩個(gè)給定單元格范圍是否部分重疊(意味著在第一單元格范圍內(nèi)存在至少一個(gè)屬于第二單元格范圍的單元格,和至少一個(gè)不屬于第二單元格范圍的單元格)或第一給定單元格范圍是否包括在第二給定單元格范圍內(nèi)(意味著屬于第一單元格范圍的每個(gè)單元格也屬于第二單元格范圍)。不同的傳統(tǒng)范圍比較技術(shù)可以用于評(píng)估范圍部分重疊或范圍包括,這不偏離本發(fā)明的精神;在本發(fā)明的優(yōu)選實(shí)施例中將不描述它們。
首先,研究HORIZONTAL_INSERT插入模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與由當(dāng)前所選單元格1747所在的整個(gè)行組成的單元格范圍部分重疊、或與由最底部STIM_height 1746個(gè)行構(gòu)成的單元格范圍部分重疊、或包括在由最底部STIM_height 1746個(gè)行構(gòu)成的單元格范圍內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_horizontal_critical取值“YES”;否則,局部測(cè)試變量STIM_horizontal_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與由當(dāng)前所選單元格1747所在的整個(gè)行組成的單元格范圍部分重疊、或與由最底部STIM_height 1746個(gè)行構(gòu)成的單元格范圍部分重疊、或包括在由最底部STIM_height 1746個(gè)行構(gòu)成的單元格范圍內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_horizontal_other取值“YES”;否則,局部測(cè)試變量STIM_horizontal_other取值“NO”。
●如果由最底部STIM_height 1746個(gè)行構(gòu)成的單元格范圍內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STIM_horizontal_data取值“NO”;否則,局部測(cè)試變量STIM_horizontal_data取值“YES”。
其次,研究HORIZONTAL_INSERT_BY_RANGE插入模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與并置兩個(gè)單元格范圍STIM_range 1748和STIM_vertical_kept_range 1751構(gòu)成的單元格范圍部分重疊、或與單元格范圍STIM_vertical_flushed_range 1752部分重疊、或包括在單元格范圍STIM_vertical_flushed_range 1752內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_horizontal_range_critical取值“YES”;否則,局部測(cè)試變量STIM_horizontal_range_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與并置兩個(gè)單元格范圍STIM_range 1748和STIM_vertical_kept_range 1751構(gòu)成的單元格范圍部分重疊、或與單元格范圍STIM_vertical_flushed_range 1752部分重疊、或包括在單元格范圍STIM_vertical_flushed_range 1752內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_horizontal_range_other取值“YES”;否則,局部測(cè)試變量STIM_horizontal_range_other取值“NO”。
●如果單元格范圍STIM_vertical_flushed_range 1752內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STIM_horizontal_range_data取值“NO”;否則,局部測(cè)試變量STIM_horizontalrange_data取值“YES”。
第三,研究VERTICAL_INSERT插入模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與由當(dāng)前所選單元格1747所在的整個(gè)列組成的單元格范圍部分重疊、或與由最右側(cè)STIM_width 1745個(gè)列構(gòu)成的單元格范圍部分重疊、或包括在由最右側(cè)STIM_width 1745個(gè)列構(gòu)成的單元格范圍內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_vertical_critical取值“YES”;否則,局部測(cè)試變量STIM_vertical_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與由當(dāng)前所選單元格1747所在的整個(gè)列組成的單元格范圍部分重疊、或與由最右側(cè)STIM_width 1745個(gè)列構(gòu)成的單元格范圍部分重疊、或包括在由最右側(cè)STIM_width 1745個(gè)列構(gòu)成的單元格范圍內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_vertical_other取值“YES”;否則,局部測(cè)試變量STIM_vertical_other取值“NO”。
●如果由最右側(cè)STIM_width 1745個(gè)列構(gòu)成的單元格范圍內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STIM_vertical_data取值“NO”;否則,局部測(cè)試變量STIM_vertical_data取值“YES”。
第四,研究VERTICAL_INSERT_BY_RANGE插入模式。
●如果存在至少一個(gè)“Critical”字段755取值“YES”和與并置兩個(gè)單元格范圍STIM_range 1748和STIM_horizontal_kept_range 1749構(gòu)成的單元格范圍部分重疊、或與單元格范圍STIM_horizontal_flushed_range 1750部分重疊、或包括在單元格范圍STIM_horizontal_flushed_range 1750內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_vertical_range_critical取值“YES”;否則,局部測(cè)試變量STIM_vertical_range_critical取值“NO”。
●如果存在至少一個(gè)“Critical”字段755取值“NO”和與并置兩個(gè)單元格范圍STIM_range 1748和STIM_horizontal_kept_range 1749構(gòu)成的單元格范圍部分重疊、或與單元格范圍STIM_horizontal_flushed_range 1750部分重疊、或包括在單元格范圍STIM_horizontal_flushed_range 1750內(nèi)的現(xiàn)有STI,那么,局部測(cè)試變量STIM_vertical_range_other取值“YES”;否則,局部測(cè)試變量STIM_vertical_range_other取值“NO”。
●如果單元格范圍STIM_horizontal_flushed_range 1750內(nèi)的所有單元格都是空的(不包含數(shù)據(jù)),那么,局部測(cè)試變量STIM_vertical_range_data取值“NO”;否則,局部測(cè)試變量STI_vertical_range_data取值“YES”。
●在步驟1515中,根據(jù)在步驟1514期間指定給如下局部變量的值,進(jìn)行測(cè)試以檢驗(yàn)插入對(duì)任何現(xiàn)有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。
如果這些局部變量沒(méi)有一個(gè)取值“YES”,那么,將控制交給步驟1516;否則,如果這些局部變量的至少一個(gè)取值“YES”,那么,將控制交給步驟1517。
●在步驟1516中,觸發(fā)像在傳統(tǒng)電子表格環(huán)境下使用和定義的傳統(tǒng)插入方法,然后,將控制交還給最初步驟1501,以便處理任何未來(lái)的STI插入管理器命令。
●在步驟1517中,在顯示設(shè)備106上顯示ST插入管理器對(duì)話框1600。用保留值“None”初始化標(biāo)記框1629。按如下順序?qū)⑷缦戮植孔兞康闹祻淖蟮接?、從頂行開(kāi)始逐行填入12個(gè)標(biāo)記框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取相應(yīng)值HORIZONTAL_INSERT、HORIZONTAL_INSERT_BY_RANGE、VERTICAL_INSERT、或VERTICAL_INSERT_BY_RANGE,那么,選項(xiàng)按鈕1628、1627、1626、或1625獨(dú)自顯示黑點(diǎn)。
最后,一旦如下局部變量之一取值“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插入管理器對(duì)話框1620上的任何用戶動(dòng)作。這樣的用戶動(dòng)作通常來(lái)自用定位設(shè)備105的點(diǎn)擊,但也可以采取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限于此),或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟1519中,檢測(cè)ST插入管理器對(duì)話框1620上的用戶動(dòng)作。
●如果用戶動(dòng)作是點(diǎn)擊“Insert”按鈕13623,那么,將控制交給步驟1526;●如果用戶動(dòng)作是點(diǎn)擊選項(xiàng)按鈕1628、1627、1626、和1625之一,那么,將控制交給步驟1520;●如果用戶動(dòng)作是點(diǎn)擊“Cancel”按鈕1622或關(guān)閉窗口按鈕1621,那么,將控制交給步驟1521。
●在步驟1520中,如果電子表格用戶用定位設(shè)備105分別點(diǎn)擊選項(xiàng)按鈕1628、1627、1626、或1625,局部變量STIM_mode取值HORIZONTAL_INSERT、HORIZONTAL_INSERT_BY_RANGE、VERTICAL_INSERT、或VERTICAL_INSERT_BY_RANGE。然后,將控制交給步驟1517。
●在步驟1521中,關(guān)閉ST插入管理器對(duì)話框1600或1620,以便它從顯示設(shè)備106上消失。最后,將控制交還給最初步驟1501,以便處理任何未來(lái)的ST插入管理器命令。
●在步驟1522中,只要其值與局部變量STIM_element的值之和保持小于等于局部變量STIM_max的值,將局部變量STIM_height 1706加1(一)。如果增加已經(jīng)完成,通過(guò)在最后一行下面將新行加入當(dāng)前選擇中,擴(kuò)大當(dāng)前所選單元格范圍STIM_mage 1708。然后,將控制交給步驟1508。
●在步驟1523中,更新局部變量STIM_critical,以便在值“YES”和“NO”之間切換。然后,用局部變量STIM_critical的值更新如在步驟1503中找到那樣的、STIT表750的記錄751內(nèi)的字段“Critical”755。然后,將控制交給步驟1508。
●在步驟1524中,如果電子表格用戶用定位設(shè)備105分別點(diǎn)擊選項(xiàng)按鈕1606、或1605,局部變量STIM_mode取值HORIZONTAL_INSERT、HORIZONTAL_INSERT_BY_RANGE。然后,將控制交給步驟1508。
●在步驟1525中,訪問(wèn)STIT表750,以便從中除去與如在步驟1509期間對(duì)局部變量STI_mode所代表的插入模式識(shí)別的那樣,新行的插入破壞的STI相對(duì)應(yīng)的每個(gè)記錄751。然后,更新STT表720,以反映每個(gè)STI的除去。對(duì)于每個(gè)除去的STI,將其“Name”字段722等于與除去STI相對(duì)應(yīng)的STIT表750的記錄751的“ST”字段753的記錄721的“REFERENCED”屬性729的“INSTANCE REFERENCE”(IR)字段729c除以2(二)。然后,將控制交給步驟1527。
●在步驟1526中,訪問(wèn)STIT表750,以便從中除去與如在步驟1514期間對(duì)局部變量STI_mode所代表的插入模式識(shí)別的那樣,新行的插入破壞的STI相對(duì)應(yīng)的每個(gè)記錄751。然后,更新STT表720,以反映每個(gè)STI的除去。對(duì)于每個(gè)除去的STI,將其“Name”字段722等于與除去STI相對(duì)應(yīng)的STIT表750的記錄751的“ST”字段753的記錄721的“REFERENCED”屬性729的“INSTANCE REFERENCE”(IR)字段729c除以2(二)。然后,將控制交給步驟1528。
●在步驟1527中,進(jìn)行測(cè)試以檢驗(yàn)局部變量STIM_mode的值。如果發(fā)現(xiàn)這個(gè)值等于HORIZONTAL_INSERT,那么,將控制交給步驟1529。如果發(fā)現(xiàn)這個(gè)值等于HORIZONTAL_INSERT_BY_RANGE,那么,將控制交給步驟1530。
●在步驟1528中,進(jìn)行測(cè)試以檢驗(yàn)局部變量STIM_mode的值。
●如果發(fā)現(xiàn)這個(gè)值等于HORIZONTAL_INSERT,那么,將控制交給步驟1531。
●如果發(fā)現(xiàn)這個(gè)值等于HORIZONTAL_INSERT_BY_RANGE,那么,將控制交給步驟1533。
●如果發(fā)現(xiàn)這個(gè)值等于VERTICAL_INSERT,那么,將控制交給步驟1532。
●如果發(fā)現(xiàn)這個(gè)值等于VERTICAL_INSERT_BY_RANGE,那么,將控制交給步驟1534。
●在步驟1529中,選擇單元格范圍STIM_range 1708以便成為當(dāng)前所選單元格范圍,該當(dāng)前所選單元格范圍保持在其前者的位置1747上,然后,進(jìn)行“行插入”的常規(guī)操作。然后,將控制交給步驟1535。
●在步驟1530中,選擇單元格范圍STIM_range_col_fit 1721以便成為當(dāng)前所選單元格范圍,將該當(dāng)前所選單元格范圍移動(dòng)到與單元格范圍STIM_instance_range 1713的最左列與當(dāng)前所選單元格1707以前所在的行的交點(diǎn)相對(duì)應(yīng)的位置1736,然后,進(jìn)行“將行插入所選范圍內(nèi)”的常規(guī)操作。然后,將控制交給步驟1535。
●在步驟1531中,選擇單元格范圍STIM_range 1748以便成為當(dāng)前所選單元格范圍,該當(dāng)前所選單元格范圍保持在其前者的位置1747上,然后,進(jìn)行“行插入”的常規(guī)操作。然后,將控制交給步驟1521。
●在步驟1532中,選擇單元格范圍STIM_range 1748以便成為當(dāng)前所選單元格范圍,該當(dāng)前所選單元格范圍保持在其前者的位置1747上,然后,進(jìn)行“列插入”的常規(guī)操作。然后,將控制交給步驟1521。
●在步驟1533中,選擇單元格范圍STIM_range 1748以便成為當(dāng)前所選單元格范圍,該當(dāng)前所選單元格范圍保持在其前者的位置1747上,然后,進(jìn)行“將行插入所選范圍內(nèi)”的常規(guī)操作。然后,將控制交給步驟1521。
●在步驟1534中,選擇單元格范圍STIM_range 1748以便成為當(dāng)前所選單元格范圍,該當(dāng)前所選單元格范圍保持在其前者的位置1747上,然后,進(jìn)行“將列插入所選范圍內(nèi)”的常規(guī)操作。然后,將控制交給步驟1521。
●在步驟1535中,調(diào)用創(chuàng)建實(shí)例元素命令,以及設(shè)置成局部變量ST_name、STIM_instance_range和STIM_height的參數(shù)。然后,將控制交給步驟1521。
●在步驟1541中,只要其值嚴(yán)格保持正的,將局部變量STIM_height 1706減1(一)。如果增加已經(jīng)完成,那么,通過(guò)從當(dāng)前選擇中除去最后一行,縮小當(dāng)前所選單元格范圍STIM_mage 1708。然后,將控制交給步驟1508。
E8.實(shí)例元素創(chuàng)建方法用在本發(fā)明優(yōu)選實(shí)施例中的在現(xiàn)有STI內(nèi)創(chuàng)建新元素的方法總結(jié)在圖15B的流程圖1550中??梢詫⑦@種方法看作創(chuàng)建實(shí)例元素命令的處理。
●在步驟1551中,該方法處在它的默認(rèn)狀態(tài)下,等待對(duì)創(chuàng)建實(shí)例元素命令的調(diào)用。
●在步驟1552中,檢測(cè)創(chuàng)建實(shí)例元素命令,以及記錄在局部變量ST_name、STI_range和Nbr內(nèi)的參數(shù)。
●在步驟1553中,分析STT表720,以便識(shí)別其“Name”字段722與局部變量ST_name的值匹配的記錄721。在這個(gè)記錄721內(nèi),檢索允許在存儲(chǔ)器中分配與當(dāng)前STI服從的ST相關(guān)聯(lián)的STDT表760的“Description Ptr”字段724。然后,將在這個(gè)STDT表760內(nèi)找到的EF名稱和EP名稱的元素對(duì)762設(shè)置成當(dāng)前名稱對(duì)(EF名稱,EP名稱)。然后,將局部變量Nbr存儲(chǔ)在第二局部變量Nbr2中。
●在步驟1554中,分析EPT表710,以便找出發(fā)現(xiàn)其“Name”字段712等于當(dāng)前對(duì)內(nèi)的EP名稱的記錄711。一旦找到這個(gè)記錄711,檢索它的“Descrip-tion Ptr”字段714,以便在存儲(chǔ)器中定位例示EP的單元格范圍。只通過(guò)值將這個(gè)EP的描述復(fù)制-粘貼到當(dāng)前所選單元格上,以便相應(yīng)行接受EP的初始值。然后,分析EFT表700,以便找出發(fā)現(xiàn)其“Name”字段702等于當(dāng)前對(duì)內(nèi)的EF名稱的記錄701。一旦找到這個(gè)記錄701,檢索它的“Description Ptr”字段704,以便在存儲(chǔ)器中定位例示EF的單元格范圍。只通過(guò)屬性將這個(gè)EF的描述復(fù)制-粘貼到當(dāng)前所選單元格上,以便相應(yīng)行接受EF屬性。
●在步驟1555中,將局部變量Nbr減1(一)。
●在步驟1556中,進(jìn)行測(cè)試以檢驗(yàn)局部變量Nbr是否等于0(零)。如果情況是這樣,那么,將控制交給步驟1558,否則,將控制交給步驟1557。
●在步驟1557中,將當(dāng)前所選單元格向下移動(dòng)一行。然后,將控制交給步驟1554。
●在步驟1558中,通過(guò)在所有元素中恢復(fù)“OUT”單元格更新當(dāng)前STI的STI_range,以防止因插入造成的任何破壞。為了這個(gè)目的,將對(duì)762內(nèi)在步驟1553中找到EP名稱用于識(shí)別EPT表710內(nèi)“Name”字段712與這個(gè)EP名稱匹配的記錄711。然后,將這同一個(gè)記錄711的“Description Ptr”字段714用于在存儲(chǔ)器中檢索指示規(guī)定成“OUT”單元格(在本發(fā)明的優(yōu)選實(shí)施例中,通過(guò)將單元格保護(hù)模式屬性設(shè)置成“防改變的單元格”)的EF單元格的EP例示單元格范圍。為了這個(gè)目的,臨時(shí)局部變量STIM_out_fields將規(guī)定成“IN”或“OUT”單元格的所有單元格的相對(duì)位置存儲(chǔ)成一組有序IN或OUT值。例如,在由只有第3和第5單元格是“OUT”單元格的5個(gè)單元格組成的EP中,這個(gè)局部變量STIM_out_fields取值(IN,IN,OUT,IN,OUT)。然后,選擇插入單元格范圍的頂行,作為當(dāng)前所選單元格范圍。然后,如果對(duì)應(yīng)于局部變量STIM_out_fields中取值“IN”的位置,撤選這個(gè)選擇內(nèi)的每個(gè)單元格。在這個(gè)選擇內(nèi),將最左單元格設(shè)置成當(dāng)前所選單元格。在這個(gè)階段,當(dāng)前選擇對(duì)應(yīng)于所有“OUT”單元格的集合。然后,通過(guò)加入與在當(dāng)前選擇上面需要的行一樣多的行,擴(kuò)展當(dāng)前選擇,以便它覆蓋位于STI的頂元素和插入新元素的頂元素之間的所有元素。然后,完成傳統(tǒng)的“向上復(fù)制”操作,以便將當(dāng)前選擇的最后一行的“OUT”單元格復(fù)制到上面的“OUT”單元格上。然后,通過(guò)加入與在最后選擇下面需要的行一樣多的行,擴(kuò)展當(dāng)前選擇,以便它覆蓋位于STI內(nèi)的所有元素。然后,完成傳統(tǒng)的“向下復(fù)制”操作,以便將當(dāng)前選擇的最后一行的“OUT”單元格復(fù)制到下面的“OUT”單元格上,以便當(dāng)前STI的所有“OUT”單元格最終接受正確的內(nèi)容。最后,將其“Address”字段752等于局部變量STI_ranger的STIT表750的記錄751內(nèi)的字段“Element#”754增加局部變量Nbr2。然后,將控制交給步驟1521。
●在步驟1559中,將控制交還給已經(jīng)調(diào)用了創(chuàng)建實(shí)例元素命令的方法。
E9.RSTI插入管理器方法用在本發(fā)明優(yōu)選實(shí)施例中的通過(guò)引入新元素改變現(xiàn)有RSTI的方法總結(jié)在圖15C的流程圖1560中??梢詫⑦@種方法看作RSTI插入管理器命令的處理。
●在步驟1561中,該方法處在它的默認(rèn)狀態(tài)下,等待啟動(dòng)該進(jìn)程的事件。
●在步驟1562中,作為用戶動(dòng)作的結(jié)果,檢測(cè)RSTI插入管理器命令。
這個(gè)動(dòng)作可以是,例如●鍵盤104上的特定鍵組合;●定位設(shè)備105在特定按鈕、菜單項(xiàng)或子菜單項(xiàng)上的點(diǎn)擊;或●在此未作進(jìn)一步規(guī)定的任何其它類似手段。
當(dāng)檢測(cè)到RSTI插入管理器命令時(shí),當(dāng)前電子選擇對(duì)應(yīng)于可能縮減成單個(gè)單元格、稱為當(dāng)前所選單元格范圍和包括當(dāng)前所選單元格的單元格范圍。如果這個(gè)當(dāng)前所選單元格不是當(dāng)前所選單元格范圍內(nèi)的左上單元格,那么,當(dāng)前所選單元格范圍的左上單元格成為當(dāng)前所選單元格。
●在步驟1563中,初始化一些局部變量●局部變量csr(“當(dāng)前所選范圍”)是與當(dāng)前所選單元格范圍相對(duì)應(yīng)的單元格范圍。
●局部變量csrr(“當(dāng)前所選范圍行”)是包括在局部變量csr內(nèi)的行數(shù)。
●局部變量csc(“當(dāng)前所選單元格”)是與當(dāng)前所選單元格相對(duì)應(yīng)的單個(gè)單元格。
●局部變量cRSTITr(“當(dāng)前RSTIT記錄”),如果存在的話,對(duì)應(yīng)于其“Address”字段2262與局部變量csc屬于同一個(gè)表格的RSTIT表2260的記錄2261。如果RSTIT表2260不包含“Address”字段2262與局部變量csc占據(jù)同一個(gè)表格的任何記錄2261,那么,局部變量cRSTITr默認(rèn)為值“void(空)”。
●局部變量rihs(“遞歸實(shí)例頁(yè)眉尺寸”),如果局部變量cRSTITr不等于值“void”,對(duì)應(yīng)于RSTIT表2260的cRSTITr記錄2261的“Header Size”字段2266的值。如果局部變量cRSTITr等于值“void”,那么,局部變量rihs也默認(rèn)為值“Void”。
●局部變量rifs(“遞歸實(shí)例頁(yè)腳尺寸”),如果局部變量cRSTITr不等于值“Void”,對(duì)應(yīng)于RSTIT表2260的cRSTITr記錄2261的“Footer Size”字段2267的值。如果局部變量cRSTITr等于值“void”,那么,局部變量rifs也默認(rèn)為值“void”。
●局部變量rir(“遞歸實(shí)例范圍”),如果不等于“void”,是通過(guò)cRSTITr記錄2261的“Address”字段2262給出地址的單元格范圍2001。如果局部變量cRSTITr取值“void”,那么,局部變量rir也默認(rèn)為值“Void”。
●局部變量cRSTIDT(“當(dāng)前RSTIDT”),如果不是空的,是cRSTITr記錄2261的“RSTIDT Ptr”字段2265所指的RSTIDT表2270。如果局部變量cRSTITr取值“Void”,那么,局部變量cRSTIDT也默認(rèn)為值“void”。
●如果局部變量cRSTITr不等于“void”,用RSTI rir服從的RST的名稱初始化局部變量RST_name。這個(gè)名稱是通過(guò)RSTIT表2260的cRSTITr記錄2261的“RST”字段2263給出的。如果局部變量cRSTITr等于“void”,那么,局部變量RST_name也默認(rèn)為值“void”。
●如果局部變量cRSTITr不等于“void”,那么,如果cRSTITr記錄2261的“Element#”字段2264等于其“Name”字段2222等于局部變量RST_name的記錄2221的“Max Element#”字段2226,局部變量mrer(“達(dá)到的最大RE”)取值TRUE。如果局部變量cRSTITr不等于“void”,那么,如果cRSTITr記錄2261的“Element#”字段2264小于其“Name”字段2222等于局部變量RST_name的記錄2221的“Max Element#”字段2226,局部變量mrer取值FALSE。
●局部變量ir(“實(shí)例范圍”)是,如果存在的話,對(duì)應(yīng)于包含當(dāng)前所選單元格csc的STI的單元格范圍。如果當(dāng)前所選單元格csc不屬于STI,那么,局部變量ir取設(shè)置成“void”的默認(rèn)值。這個(gè)局部變量ir的初始化通過(guò)比較局部變量csc的地址和STIT表750的每個(gè)記錄751的“Address”字段752來(lái)確定。例如,參照?qǐng)D18A,如果局部變量csc對(duì)應(yīng)于單元格范圍2024或2022之一,局部變量ir取值“void”,和如果局部變量csc對(duì)應(yīng)于單元格范圍2018、2019、2020、2021、2023、或2025之一,局部變量ir對(duì)應(yīng)于相應(yīng)單元格范圍2034、2032、2030、2031、2033、或2013。
●局部變量ccirb(“遞歸主體中的當(dāng)前單元格”)是,如果當(dāng)前所選單元格csc位于或未位于單元格范圍rir2001的主體部分2003內(nèi),相應(yīng)取值TRUE或FALSE的布爾變量。例如,參照?qǐng)D18A,如果局部變量csc對(duì)應(yīng)于單元格范圍2018、2020、2022、或2023之一,局部變量ccirb取值TRUE,和如果局部變量csc對(duì)應(yīng)于單元格范圍2019、2021、2024、或2025之一,局部變量ccirb取值FALSE。
●局部變量cRSTIDTc(“當(dāng)前RSTIDT單元格”)是,如果不是空的,其“Container_range”字段2276對(duì)應(yīng)于包括局部變量csc的地址的cRSTIDT表2270的單元格2272。如果局部變量cRSTIDT取值“void”,那么,局部變量cRSTIDTc也默認(rèn)為值“void”。
●局部變量cRSTIDTr(“當(dāng)前RSTIDT記錄”)是,如果不是空的,包括cRSTIDTc單元格2272的cRSTIDT表2270的記錄2271。如果局部變量cRSTIDT取值“void”,那么,局部變量cRSTIDTr也默認(rèn)為值“void”。
●局部變量croc(“單元格容器范圍”),如果局部變量cRSTIDTc不等于“void”,對(duì)應(yīng)于cRSTIDTc單元格2272的“Container_range”字段2276。如果局部變量cRSTIDTc取值“void”,那么,局部變量croc也默認(rèn)為值“void”。
●局部變量crocc(“單元格容器范圍列”),如果局部變量cRSTIDTc不等于“void”,對(duì)應(yīng)于cRSTIDTc單元格2272的“Container_col”字段2277。如果局部變量cRSTIDTc等于值“void”,那么,局部變量crocc也默認(rèn)為值“void”。
●局部變量crocr(“單元格容器范圍行”),如果局部變量cRSTIDTc不等于“void”,對(duì)應(yīng)于cRSTIDTc單元格2272的“Container_row”字段2281。如果局部變量cRSTIDTc等于值“void”,那么,局部變量crocr也默認(rèn)為值“void”。
●局部變量STIr(“STI行”),如果局部變量cRSTIDTc不等于“void”,對(duì)應(yīng)于cRSTIDTc單元格2272的“STI_row”字段2279。如果局部變量cRSTIDTc等于值“void”,那么,局部變量STIr也默認(rèn)為值“void”。
●局部變量STn(“STI名稱”),如果局部變量cRSTIDTc不等于“void”,對(duì)應(yīng)于cRSTIDTc單元格2272的“ST_name”字段2280。如果局部變量cRSTIDTc等于值“void”,那么,局部變量STn也默認(rèn)為值“Void”。
●局部變量ccie(“元素中的當(dāng)前單元格”)是當(dāng)局部變量ir非空時(shí),如果當(dāng)前所選單元格csc包括或未包括在局部變量ir的主體部分內(nèi),相應(yīng)取值TRUE或FALSE的布爾變量。如果局部變量ir等于“void”,那么,局部變量ccie取值FALSE。例如,參照?qǐng)D18A,如果局部變量csc對(duì)應(yīng)于單元格范圍2018、2019、2021、2023、或2025之一,局部變量ccie取值TRUE,和如果局部變量csc對(duì)應(yīng)于單元格范圍2020、2022、或2024之一,局部變量ccie取值FALSE。
●在步驟1564中,進(jìn)行測(cè)試以確定局部變量rir是否取值“Void”。如果情況是這樣,那么,將控制交給步驟1565;否則,將控制交給步驟1566。
●在步驟1565中,調(diào)用STI插入管理器命令(作為子例程)。當(dāng)這個(gè)命令已完成和使控制返回到當(dāng)前進(jìn)程時(shí),將控制交給最初步驟1561,以便處理任何未來(lái)的STI插入管理器命令。
●在步驟1566中,進(jìn)行測(cè)試以確定局部變量csc所代表的單元格范圍是否包含在局部變量rir所代表的單元格范圍內(nèi)。如果情況是這樣,那么,將控制交給步驟1568;否則,將控制交給步驟1567。
●在步驟1567中,在禁止了污染RSTI范圍rir的任何插入模式之后,遵從適合用在現(xiàn)有電子表格環(huán)境中的傳統(tǒng)插入方法。像如下那樣識(shí)別這些污染插入模式●如果單元格范圍csr與單元格范圍rir共享一些行,那么,禁止傳統(tǒng)行插入方法。
●如果單元格范圍csr與單元格范圍rir共享一些列,那么,禁止傳統(tǒng)列插入方法。
然后,將控制交給最初步驟1561,以便處理任何未來(lái)的STI插入管理器命令。
●在步驟1568中,進(jìn)行測(cè)試以確定局部變量ccirb是否取值TRUE和局部變量mrer是否取值FLASE。如果情況是這樣,那么,將控制交給步驟1569;否則,將控制交給步驟1570。
●在步驟1569中,進(jìn)行測(cè)試以確定局部變量ccie是否取值TRUE。如果情況是這樣,那么,將控制交給步驟1580;否則,將控制交給步驟1581。
●在步驟1570中,進(jìn)行測(cè)試以確定局部變量ccie是否取值TRUE。如果情況是這樣,那么,將控制交給步驟1573;否則,將控制交給步驟1571。
●在步驟1571中,發(fā)出警告消息通知,以便通知用戶如果繼續(xù)進(jìn)行插入操作,將破壞當(dāng)前RSTI。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。然后,提醒用戶取消當(dāng)前“Inertion”操作,或繼續(xù)進(jìn)行“Inertion”操作(因此,毀壞RSTI rir)。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將提醒消息顯示在彈出窗口中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在提醒消息彈出窗口內(nèi)的“Cancel”或“Continue”按鈕,或不偏離本發(fā)明精神的任何其它類似手段作出他的選擇,如果電子表格用戶的決定是取消該操作,將控制交給步驟1561,或者,如果電子表格用戶的決定是繼續(xù)進(jìn)行該操作,將控制交給步驟1572。
●在步驟1572中,從RSTIT表2260中除去記錄cRSTITr 2261。然后,將控制交給步驟1565。
●在步驟1573中,進(jìn)行測(cè)試以確定局部變量csrr是否小于等于局部變量crocr與局部變量STIr之間的差值。如果情況是這樣,那么,將控制交給步驟1576;否則,將控制交給步驟1574。
●在步驟1574中,將數(shù)量等于csrr-crocr+STIr的行插在與局部變量crocs相對(duì)應(yīng)的單元格范圍下面,以便將當(dāng)前容器擴(kuò)展成擁用足以使插入操作不會(huì)破壞RSTI rir的結(jié)構(gòu)的行。
●在步驟1575中,更新記錄cRSTIDTr 2271,以便在包括在這個(gè)記錄cRSTIDTr 2271中的每個(gè)單元格2272內(nèi)的字段“Container_row”2281和“Container_range”2276中反映出(在前一步驟1574中擴(kuò)展了的)容器行的新尺寸。
●在步驟1576中,將位于局部變量csc所代表的單元格下面的局部變量ir所代表的單元格范圍的元素和元元素向下移動(dòng)等于局部變量csrr的行數(shù)。由于已經(jīng)有足夠多的空間可用(如在步驟1573中檢驗(yàn)的那樣),或由于已經(jīng)引入了所需的空間(如行插入步驟1574完成的那樣),這些移動(dòng)過(guò)的元素和元元素保持在它們的單元格容器范圍內(nèi)。
●在步驟1577中,選擇包括在局部變量ir所代表的單元格范圍內(nèi)、和位于局部變量csc所代表的單元格下面的行上的最左單元格。
●在步驟1578中,調(diào)用創(chuàng)建實(shí)例元素命令,以及設(shè)置成局部變量STn、ir和csrr的參數(shù)。當(dāng)這個(gè)命令已完成和使控制還回到當(dāng)前進(jìn)程時(shí),將控制交給步驟1579。
●在步驟1579中,更新單元格cRSTIDTc 2272,以便在字段“STI_row”2279中反映出局部變量ir所代表的STI的新尺寸。然后,將控制交給最初步驟1561,以便處理任何未來(lái)的RSTI插入管理器命令。
●在步驟1580中,發(fā)出提醒消息,以便通知用戶可以通過(guò)將新元素插在局部變量ir所代表的當(dāng)前STI中,或通過(guò)將新RE插在局部變量rir所代表的RSTI內(nèi)擴(kuò)展當(dāng)前RSTI。這通常可以通過(guò)在顯示設(shè)備106上將通知消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。然后,提醒用戶指定局部變量ir所代表的STI內(nèi)的RE插入操作,或指定局部變量rir所代表的RSTI內(nèi)的RE插入操作。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將提醒消息顯示在彈出窗口中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在提醒消息彈出窗口內(nèi)的“element”或“RE”按鈕,或不偏離本發(fā)明精神的任何其它類似手段作出他的選擇,如果電子表格用戶的決定是將元素插在局部變量ir所代表的STI中,將控制交給步驟1573,或者,如果電子表格用戶的決定是將RE插在局部變量rir所代表的RSTI內(nèi),將控制交給步驟1581。
●在步驟1581中,將數(shù)量等于局部變量crocc的值的行插在局部變量croc所代表的單元格范圍的下面。
●在步驟1582中,在cRSTIDT表2270內(nèi)的記錄cRSTIDTr下面創(chuàng)建新記錄nRSTIDTr2271。
●在步驟1583中,將記錄cRSTIDTr復(fù)制-粘貼到新記錄nRSTIDTr2271上。
●在步驟1584中,在記錄nRSTIDTr2271的每個(gè)單元格2272內(nèi)清除“STIT_rec_ptr”字段2282。
●在步驟1585中,在記錄nRSTIDTr2271的每個(gè)單元格2272中更新字段“Container_range”2276,以反映相關(guān)容器范圍的地址。
●在步驟1586中,將局部變量nRSTIDTc2272設(shè)置成等于記錄nRSTIDTr2271的第1(最左)單元格。然后,將局部變量curr_cell設(shè)置成等于通過(guò)單元格nRSTIDTc2272的“Container_range”字段2276指定其地址的單元格范圍的左上單元格。
●在步驟1587中,將局部變量STI_range設(shè)置成等于單元格nRSTIDTc2272的“Container_range”字段2276。將局部變量ST_name設(shè)置成等于單元格nRSTIDTc2272的“ST_name”字段2280。將局部變量STI_element設(shè)置成等于如單元格nRSTIDTc2272的“STIT_rec_ptr”字段2282所指的、STIT表750中的記錄751的“Element#”字段754。
●在步驟1588中,調(diào)用例程CreateSTI。
●在步驟1589中,更新單元格nRSTIDTc2272的“STIT_rec_ptr”字段2282,以便指向作為CreateSTI例程的一部分創(chuàng)建的、STIT表750的新記錄751(參見(jiàn)步驟1419)。然后,更新單元格nRSTIDTc2272的“STI_row”字段2279,以便反映出包括在CreateSTI中的行數(shù)。
●在步驟1590中,進(jìn)行測(cè)試以確定單元格nRSTIDTc2272是否是記錄nRSTIDTr2271的最后(最右)單元格。如果情況是這樣,那么,將控制交給步驟1592;否則,將控制交給步驟1591。
●在步驟1591中,將局部變量curr_cell所代表的單元格向右移動(dòng)等于單元格nRSTIDTc2272的“Container_col”字段2277的值的列數(shù)。然后,使位于單元格nRSTIDTc右邊的單元格成為新單元格nRSTIDTc2272。然后,將控制交給步驟1587。
●在步驟1592中,更新記錄nRSTIDTr2271,以便在字段“Element#”2264中反映出包括在局部變量rir所代表的RSTI中的RE的新增數(shù)量。然后,將控制交給最初步驟1561,以便處理任何未來(lái)的RSTI插入管理器命令。
E10.RST實(shí)例化器方法用在本發(fā)明優(yōu)選實(shí)施例中的實(shí)例化RST的方法總結(jié)在圖19A和19B的流程圖2100中??梢詫⑦@種方法看作RST實(shí)例化器命令的處理。
●在步驟2101中,該方法處在它的默認(rèn)狀態(tài)下,等待啟動(dòng)該進(jìn)程的事件。
●在步驟2102中,作為用戶動(dòng)作的結(jié)果,檢測(cè)RST實(shí)例化器命令。這個(gè)動(dòng)作可以是,例如,鍵盤104上的特定鍵組合,定位設(shè)備105在特定按鈕上的點(diǎn)擊,或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟2103中,檢索命令參數(shù)和初始化一些局部變量●將命令參數(shù)記錄在RST_name變量中。
●用值0(零)初始化局部變量Element#。
●用默認(rèn)值FLASE初始化局部變量too_wide。
●用默認(rèn)值FLASE值初始化局部變量too_high。
●用表格上的最大可用列數(shù)初始化局部變量Max_col。
●用表格上的最大可用行數(shù)初始化局部變量Max_row。
●用默認(rèn)值FLASE值初始化局部變量STI_present。
●用默認(rèn)值FLASE值初始化局部變量RSTI_busy。
●將局部變量RSTI_top_left_cell初始化成當(dāng)前所選單元格。
●在步驟2104中,分析RSTT表2220,以便識(shí)別“Name”字段2222等于命令參數(shù)RST_name的記錄2221(由局部變量Curr_RSTT_rec標(biāo)識(shí))。然后,將局部變量RSTI_E#設(shè)置成等于這個(gè)記錄Curr_RSTT_rec2221的“Min Element#”字段2225的值。
●在步驟2105中,將局部變量Curr_RSTDT設(shè)置成等于記錄Curr_RSTT_rec 2221的“Description Ptr”字段2224所指的RSTDT表2250。然后,將局部變量Curr_RSTDT_rec設(shè)置成等于Curr_RSTDT表2250的第1單單元格記錄2251。然后,將局部變量Curr_RET_rec設(shè)置成等于“Name”字段2212等于局部變量Curr_RSTDT_rec、RET表2210的記錄2211。然后,將局部變量Curr_RED_RoC設(shè)置成等于記錄Curr_RET_rec 2211的“Description Ptr”字段2214所指的單元格范圍。
●在步驟2106中,將RSTIDT表2270裝入存儲(chǔ)器中和通過(guò)局部變量CurrRSTIDT命名它。這個(gè)表格具有等于Curr_RSTDT表2250的行數(shù)加局部變量RSTI_E#的值減1(一)的行數(shù)。這個(gè)表格具有等于Curr_RED_RoC的列數(shù)的列數(shù)。然后,將局部變量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設(shè)置成等于當(dāng)用等于局部變量Curr_REC_Roc_cell的值的唯一參數(shù)調(diào)用時(shí),函數(shù)STI_col返回的值。然后,將Curr_RSTIDT_cell 2280的“STI_row”字段2279設(shè)置成等于當(dāng)用分別等于局部變量Curr_REC_Roc_cell的值和0(零)的兩個(gè)參數(shù)調(diào)用時(shí),函數(shù)STI_row返回的值。然后,將Curr_RSTIDT_cell 2280的“ST_name”字段2280設(shè)置成等于局部變量Curr_REC_Roc_cell的值。
●在步驟2109中,進(jìn)行測(cè)試以檢驗(yàn)局部變量Curr_RSTIDT_cell 2280所代表的單元格是否是局部變量Curr_RSTIDT_rec 2271所代表的記錄的最后一個(gè)單元格。如果情況是這樣,那么,將控制交給步驟2111;否則,將控制交給步驟2110。
●在步驟2110中,使位于局部變量Curr_RSTIDT_cell 2280所代表的單元格右邊的單元格成為新Curr_RSTIDT_cell 2280。然后,使位于局部變量Curr_RET_RoC_cell所代表的單元格右邊的單元格成為新Curr_RET_RoC_cell。然后,將控制交給步驟2108。
●在步驟2111中,進(jìn)行測(cè)試以檢驗(yàn)局部變量Curr_RET_rec 2211所代表的記錄是否是描述RE的局部變量Curr_RET_rec 2211。如果Curr_RET_rec記錄2211的“Type”字段2217的“META”屬性2218等于值“NO”,就可以確定它。如果情況是這樣,那么,將控制交給步驟2112;否則,將控制交給步驟2114。
●在步驟2112中,將局部變量Element#加1(一)。
●在步驟2113中,進(jìn)行測(cè)試以確定局部變量E1ement#是否等于局部變量RSTI_E#。如果情況是這樣,那么,將控制交給步驟2114;否則,將控制交給步驟2115。
●在步驟2114中,進(jìn)行測(cè)試以檢驗(yàn)局部變量Curr_RSTIDT_cell 2280所代表的單元格是否是Curr_RSTIDT_rec 2271所代表的記錄的最后一個(gè)單元格。如果情況是這樣,那么,將控制交給步驟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中,對(duì)于屬于Curr_RSTIDT表2270的每個(gè)單元格Curr_RSTIDT_cell 2280,將“container_row”屬性2281設(shè)置成等于位于Curr_RSTIDT表2270內(nèi)與Curr_RSTIDT_cell同一行上的單元格Same_row_cell的“STI_row”屬性2279的最大值。然后,對(duì)于屬于Curr_RSTIDT表2270的每個(gè)單元格Curr_RSTIDT_cell 2280,將“container_col”屬性2277設(shè)置成等于位于Curr_RSTIDT表2270內(nèi)與Curr_RSTIDT_cell同一列上的單元格Same_col_cell的“STI_col”屬性2278的最大值。
●在步驟2118中,將局部變量RSTI_col設(shè)置成等于屬于Curr_RSTIDT表2270的第1行的單元格的“container_col”屬性2277之和。然后,將局部變量RSTI_row設(shè)置成等于屬于Curr_RSTIDT表2270的第1列的單元格的“container_row”屬性2281之和。
●在步驟2119中,進(jìn)行測(cè)試以確定局部變量RSTI_col與單獨(dú)單元格RSTI_top_left_cell的行指標(biāo)之和減去1(一)是否嚴(yán)格大于局部變量Max_col。如果情況是這樣,那么,將控制交給步驟2120;否則,將控制交給步驟2121。
●在步驟2120中,將局部變量too_wide設(shè)置成等于值TRUE。
●在步驟2121中,進(jìn)行測(cè)試以確定局部變量RSTI_row與單獨(dú)單元格RSTI_top_left_cell的列指標(biāo)之和減去1(一)是否嚴(yán)格大于局部變量Max_row。如果情況是這樣,那么,將控制交給步驟2122;否則,將控制交給步驟2123。
●在步驟2122中,將局部變量too_high設(shè)置成等于值TRUE。
●在步驟2123中,進(jìn)行測(cè)試以確定是否存在與單獨(dú)單元格RSTIcell出現(xiàn)在相同表格上的現(xiàn)有STI。這個(gè)測(cè)試可以簡(jiǎn)單地通過(guò)分析STIT表750,以便用指向與單獨(dú)單元格RSTI_top_left_cell相同的表格的“Address”字段752識(shí)別任何記錄751來(lái)完成。如果情況是這樣,那么,將控制交給步驟2124;否則,將控制交給步驟2125。
●在步驟2124中,將局部變量STI_present設(shè)置成等于值TRUE。
●在步驟2125中,將局部變量STI_range初始化成RSTI_top_left_cell作為左上單元格、行數(shù)等于局部變量RSTI_row的值、和列數(shù)等于局部變量RSTI_col的值的單元格范圍。
●在步驟2126中,進(jìn)行測(cè)試以檢驗(yàn)是否存在出現(xiàn)在單元格范圍RSTI_range內(nèi)的數(shù)據(jù)。如果情況是這樣,將控制交給步驟2127;否則,將控制交給步驟2128。
●在步驟2127中,將局部變量RSTI_busy設(shè)置成等于值TRUE。
●在步驟2128中,在顯示設(shè)備106上顯示RST實(shí)例化器對(duì)話框2300。在這個(gè)對(duì)話框2300內(nèi),將局部變量RST_name的值填入文本字段2302,將局部變量RSTI_E#的值填入文本字段2311,將局部變量too_wide的值填入文本字段2304,將局部變量too_high的值填入文本字段2305,將局部變量STI_present的值填入文本字段2306,和將局部變量RSTI_busy的值填入文本字段2307。當(dāng)且僅當(dāng)三個(gè)局部變量too_wide、too_high和STI_present取相同值FALSE,使能“Create Instance”按鈕2310。當(dāng)且僅當(dāng)兩個(gè)局部變量too_wide和too_high取相同值FALSE,使能“Create Instance in a new sheet”按鈕2309。
●在步驟2129中,該方法等于RST實(shí)例化器對(duì)話框2300上的任何用戶動(dòng)作。這樣的用戶動(dòng)作通常來(lái)自用定位設(shè)備105的點(diǎn)擊,但也可以采取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限于此),或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟2130中,檢測(cè)RST實(shí)例化器對(duì)話框2300上的用戶動(dòng)作。
●如果用戶動(dòng)作是用定位設(shè)備105點(diǎn)擊旋鈕2303的“Up”箭頭上,那么,將控制交給步驟2133。
●如果用戶動(dòng)作是用定位設(shè)備105點(diǎn)擊旋鈕2303的“Down”箭頭上,那么,將控制交給步驟2134。
●如果用戶動(dòng)作是用定位設(shè)備105點(diǎn)擊“Create Instance”按鈕2310,那么,將控制交給步驟2138。
●如果用戶動(dòng)作是用定位設(shè)備105點(diǎn)擊“Create Instance in a newsheet”按鈕2309,那么,將控制交給步驟2136。
●如果用戶動(dòng)作是用定位設(shè)備105點(diǎn)擊“Cancel”按鈕2308或關(guān)閉窗口按鈕2301,那么,將控制交給步驟2131。
●在步驟2131中,從存儲(chǔ)器中釋放單元格范圍Curr_RSTIDT。
●在步驟2132中,在顯示設(shè)備106上關(guān)閉RST實(shí)例化器對(duì)話框2300,然后,將控制交還給最初步驟2101,以便處理任何未來(lái)的RST實(shí)例化器命令。
●在步驟2133中,將局部變量RSTI_E#加1(一)。
●在步驟2134中,將局部變量RSTI_E#減1(一)。
●在步驟2135中,從存儲(chǔ)器中釋放單元格范圍Curr_RSTIDT。那么,將控制交給步驟2105。
●在步驟2136中,創(chuàng)建新表格和將其命名為curr_sheet。
●在步驟2137中,使表格curr_sheet的左上單元格成為新單獨(dú)單元格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初始化成單獨(dú)單元格Curr_cell作為左上單元格、行數(shù)等于“con-tainer_row”屬性2281的值、列數(shù)等于“container_col”屬性2277的值的單元格范圍。
●在步驟2140中,將局部變量STI_range設(shè)置成等于Curr_RSTIDT_cell2280的“container_range”屬性2276。然后,將局部變量ST_name設(shè)置成等于Curr_RSTIDT_cell 2280的“ST_name”屬性2280。然后,將局部變量ST_element設(shè)置成等于“Name”字段722等于ST_name的STT表720的記錄721的“Min Element#”屬性2225。
●在步驟2141中,調(diào)用CreateSTI命令(作為一個(gè)子例程)。當(dāng)這個(gè)命令已完成和使控制返回到當(dāng)前進(jìn)程時(shí),將控制交給步驟2142。
●在步驟2142中,將Curr_RSTIDT_cell 2280的“STIT_rec_ptr”設(shè)置成指向剛剛在前一步驟2141期間創(chuàng)建的STIT記錄751。
●在步驟2143中,進(jìn)行測(cè)試以檢驗(yàn)局部變量Curr_RSTIDT_cell 2280所代表的單元格是否是局部變量Curr_RSTIDT_rec 2271所代表的記錄的最后一個(gè)單元格。如果情況是這樣,那么,將控制交給步驟2143;否則,將控制交給步驟2144。
●在步驟2144中,將單獨(dú)單元格curr_cell向右移動(dòng)等于Curr_RSTIDT_cell 2280的“container_col”屬性2277的值的列數(shù)。然后,使位于單獨(dú)單元格Curr_RSTIDT_cell 2280右邊的單元格成為新Curr_RSTIDT_cell2280。
●在步驟2145中,進(jìn)行測(cè)試以檢驗(yàn)局部變量Curr_RSTIDT_rec 227l所代表的記錄是否是局部變量Curr_RSTIDT 2270所代表的RSTIDT表的最后一個(gè)記錄。如果情況是這樣,那么,將控制交給步驟2147;否則,將控制交給步驟2146。
●在步驟2146中,將單獨(dú)單元格RST_top_left_cell向下移動(dòng)等于Curr_RSTIDT_cell 2280的“container_row”屬性2281的值的行數(shù)。然后,將單獨(dú)單元格curr_cell設(shè)置成等于單獨(dú)單元格RSTI_top_left_cell。然后,使Curr_RSTIDT 2270中接在Curr_RSTIDT_rec之后的記錄2271成為新Curr_RSTIDT_rec 2271。然后,使Curr_RSTIDT_rec 2271的第1單元格成為新單獨(dú)單元格Curr_RSTIDT_cell 2280。
●在步驟2147中,在RSTIT表2260中創(chuàng)建新記錄2261,以便描述剛剛創(chuàng)建的RSTI。將rir單元格范圍2001的地址填入“Address”字段2262。將局部變量RST_name填入“RST”字段2263。將局部變量Element#填入“Element#”字段2264。將局部變量Curr_RSTIDT填入“RSTIDT Ptr”字段2265。將構(gòu)成RSTI頁(yè)眉2002的容器行的行數(shù)填入“Header Size”字段2266。將構(gòu)成RSTI頁(yè)腳2204的容器行的行數(shù)填入“Footer Size”字段2267。然后,掃描RSTT表2220,以便識(shí)別發(fā)現(xiàn)“Name”字段2222等于局部變量RST_name的記錄2221。一旦找到,通過(guò)將“INSTANCEREFERENCE”子字段2229c乘以2(二),更新這個(gè)記錄2221的“Type”字段2227內(nèi)的“REFERENCED”屬性2229。然后,將控制交給步驟2132。
E11.RE編輯器方法用在本發(fā)明優(yōu)選實(shí)施例中的創(chuàng)建或更新RE或元元素的方法總結(jié)在圖21C的流程圖2340中??梢詫⑦@種方法看作RE編輯器命令的處理。
●在步驟2341中,該方法處在它的默認(rèn)狀態(tài)下,等待啟動(dòng)該進(jìn)程的事件。
●在步驟2342中,作為用戶動(dòng)作的結(jié)果,檢測(cè)RE編輯器命令。這個(gè)動(dòng)作可以是,例如●鍵盤104上的特定鍵組合;●定位設(shè)備105在特定按鈕上的點(diǎn)擊;或●在此本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟2343中,檢索命令的參數(shù)。它對(duì)應(yīng)于必有參數(shù)RE_name,該參數(shù)可以取保留值“NEW”,或與如在RSTMT表2230內(nèi)的記錄2231的“Name”字段2232中找到那樣的字符串名稱相對(duì)應(yīng)的另一個(gè)值。將這個(gè)參數(shù)記錄成局部變量。
●在步驟2344中,初始化一些局部變量將局部變量RE_meta設(shè)置成值“NO”,將局部變量RE_size設(shè)置成值3(三),和將局部變量RE_rank設(shè)置成值1(一)。
●在步驟2345中,進(jìn)行測(cè)試以確定局部變量RE_name所取的值。如果發(fā)現(xiàn)等于“NEW”,那么,將控制交給步驟2349;否則,將控制交給步驟2346。
●在步驟2346中,查找RET表2210,以定位發(fā)現(xiàn)其“Name”字段2223等于局部變量RE_name所取的值的記錄2211。如果找到這樣的記錄,那么,將控制交給步驟2348;否則,將控制交給步驟2347。
●在步驟2347中,調(diào)用異常管理器,以處理這種“不該發(fā)生”狀況。這樣的操作是實(shí)現(xiàn)相關(guān)的,可以采取不同的形式,譬如,在顯示設(shè)備106上顯示錯(cuò)誤消息彈出窗口。然后,將控制交給步驟2341。
●在步驟2348中,●根據(jù)在步驟2346中找到的記錄2211的“Type”字段2217內(nèi)“META”屬性2218的值,將局部變量RE_meta設(shè)置成值“YES”或“NO”;●將局部變量RE_size設(shè)置成在在步驟2346中找到的記錄2211的“Column#”字段2216中找到的值;和●將在步驟2346中找到的記錄2211的“Description Ptr”字段2214所指的存儲(chǔ)單元復(fù)制到記錄成局部變量RE_buffer的臨時(shí)緩沖區(qū)上。然后,將控制交給步驟2350。
●在步驟2349中,根據(jù)在本發(fā)明的優(yōu)選實(shí)施例中采取“New XX”形式的名稱字符串,確定新創(chuàng)建RE的新名稱,其中,XX對(duì)應(yīng)于對(duì)于以前定義和記錄在在各自表格EFT700、EPT710、STT720、RET2210和RSST2220的各自記錄701、711、721、2211和2221中找到的“Name”字段702、712、722、2212和2222中的所有名稱,保證名稱唯一性的計(jì)數(shù)。只要保證新創(chuàng)建名稱的唯一性,可以改用任何其它類似傳統(tǒng)手段而不偏移本發(fā)明的精神。然后,將新名稱記錄在局部變量RE_name中。然后,在主存儲(chǔ)器102內(nèi)分配存儲(chǔ)空間,以便以后記錄新RE或RME的例示單元格范圍。這個(gè)記錄成局部變量RE_buffer的分配存儲(chǔ)空間是與當(dāng)前打開(kāi)的電子表格文件相對(duì)應(yīng)的存儲(chǔ)空間的一部分。然后,在RET表2210中創(chuàng)建新記錄2211,和按如下初始化這個(gè)新記錄2211
●將“Name”字段2212設(shè)置成局部變量RE_name的值;●將“Last Change Date”字段2213設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Description Ptr”字段2214設(shè)置成剛剛分配的存儲(chǔ)單元REbuffer;●將“Row#”字段2215設(shè)置成值1(因?yàn)樵诒景l(fā)明的優(yōu)選實(shí)施例中,在2D環(huán)境下管理RST;在3D環(huán)境下,這個(gè)字段將攜帶為創(chuàng)建的RE定義的行數(shù));●將“Column#”字段2216設(shè)置成局部變量RE_size的值;和●按如下設(shè)置“Type”字段2217將屬性“META”2218設(shè)置成等于局部變量RE_meta的值,和按如下初始化屬性“REFERENCED”2219●用還沒(méi)有指定給任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的質(zhì)數(shù)初始化OR子字段2219a。各種各樣的傳統(tǒng)技術(shù)可以用于識(shí)別質(zhì)數(shù),這里不作進(jìn)一步詳述。
●根據(jù)如下公式初始化“FILIATION REFERENCE”(FR)子字段2219b,其中,根據(jù)記錄在“Description Ptr”字段2214中的結(jié)構(gòu),F(xiàn)集合對(duì)應(yīng)于構(gòu)成新RE或元元素的ST的集合FR=∏i∈FORi×LCM({FRi})i∈F●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段2219c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段2219d。其中,P集合對(duì)應(yīng)于RST的集合如果LCM({FRi})i∈PMod OR=0,RO=“YES”;否則,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段2219e。其中,S集合對(duì)應(yīng)于所選對(duì)象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR#RE_name∈S,SC=“YES”;
否則,SC=“NO”。
然后,將控制交給步驟2350。
●在步驟2350中,在顯示設(shè)備106上顯示RE編輯器對(duì)話框2321。
●用局部變量RE_name的值初始化標(biāo)記框2324。
●如果發(fā)現(xiàn)局部變量RE_meta等于“NO”(相應(yīng)地,“YES”),將黑點(diǎn)填入頂部選項(xiàng)按鈕2331(相應(yīng)地,底部選項(xiàng)按鈕2330)。
●將局部變量RE_size的值填入文本框2326。
●如果發(fā)現(xiàn)局部變量RE_size等于當(dāng)前記錄2211的“Column#”字段2216,或如果發(fā)現(xiàn)這個(gè)記錄2211的“Type”字段2217內(nèi)的屬性“REFERENCED”2219擁有等于“NO”的子字段“REFERENCEDOBJECT”2219d(RO),使能按鈕“Save”2333,以便將來(lái)用定位設(shè)備105對(duì)這個(gè)按鈕“Save”2333的任何點(diǎn)擊都被識(shí)別為一個(gè)有效事件。
●否則(未發(fā)現(xiàn)局部變量RE_size等于當(dāng)前記錄2211的“Column#”字段2216,或發(fā)現(xiàn)這同一個(gè)記錄2211的“Type”字段2217內(nèi)的屬性“REFERENCED”2219擁有等于“YES”的子字段“REFERENCEDOBJECT”2219d(RO),禁止按鈕“Save”2333,以便將來(lái)用定位設(shè)備105對(duì)這個(gè)按鈕“Save”2333的任何點(diǎn)擊都不被識(shí)別為一個(gè)有效事件。
●用局部變量RE_rank的值初始化文本框2335。
●用屬于RE_buffer和其偏移等于RE_rank的單元格的內(nèi)容初始化列表框2334。在這個(gè)列表框2334中可用的名稱的列表(通過(guò)點(diǎn)擊旋鈕2328)由記錄在STT表720中的ST的名稱構(gòu)成。
●在步驟2351中,該方法等待RE編輯器對(duì)話框2321上的任何用戶動(dòng)作。這樣的用戶動(dòng)作通常來(lái)自用定位設(shè)備105的點(diǎn)擊,但也可以采取其它類似形式,譬如,鍵盤104上的特定鍵組合(但不限于此),或本文未作進(jìn)一步規(guī)定的任何其它類似手段。
●在步驟2352中,檢測(cè)RE編輯器對(duì)話框2321上的用戶動(dòng)作。
●如果用戶動(dòng)作是點(diǎn)擊旋鈕2328,以便選擇ST名稱,那么,將控制交給步驟2353;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save”2333,那么,將控制交給步驟2354;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Save as”2332,那么,將控制交給步驟2355;●如果用戶動(dòng)作是點(diǎn)擊旋鈕2329,那么,將控制交給步驟2358;●如果用戶動(dòng)作是點(diǎn)擊旋鈕2327,那么,將控制交給步驟2359;●如果用戶動(dòng)作是點(diǎn)擊兩個(gè)選項(xiàng)按鈕2330或2331之一,那么,將控制交給步驟2360;●如果用戶動(dòng)作是點(diǎn)擊按鈕“Done”2323或關(guān)閉窗口按鈕2322,那么,將控制交給步驟2361。
●在步驟2353中,通過(guò)將偏移等于局部變量RE_rank的值的單元格的內(nèi)容設(shè)置成等于列表框2334的內(nèi)容,更新局部變量RE_buffer。然后,將控制交給步驟2350。
●在步驟2354中,通過(guò)刷新“Name”字段2212等于局部變量RE_name的記錄2211,更新SET表2210,和將它保存成電子表格文件的一部分。為了這個(gè)目的,●將“Last Change Date”字段2213設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Column#”字段2216設(shè)置成局部變量RE_size的值;和●按如下設(shè)置“Type”字段2217將屬性“META”2218設(shè)置成等于局部變量RE_meta的值。
另外,將例示RE或元元素的當(dāng)前定義的單元格范圍RE_buffer復(fù)制到“Description Ptr”字段2214所指的存儲(chǔ)單元上。然后,將控制交給步驟2350。
●在步驟2355中,對(duì)在文本框2325中找到的值進(jìn)行測(cè)試,以確定它是否對(duì)應(yīng)于有效新名稱。相應(yīng)準(zhǔn)則是實(shí)現(xiàn)相關(guān)的,只要新推薦名稱相對(duì)于記錄在“Name”字段702、712、722、2212和2222中的所有已定義名稱是唯一字符串,可以采取不同形式而不偏離本發(fā)明的精神。如果有效性和唯一性都得到證明,那么,將控制交給步驟2356;否則,將控制交給步驟2357。
●在步驟2356中,在主存儲(chǔ)器102內(nèi)分配存儲(chǔ)空間,以便以后記錄EF或MEF的例示單元格范圍。這個(gè)分配的存儲(chǔ)空間是與當(dāng)前打開(kāi)的電子表格文件相對(duì)應(yīng)的存儲(chǔ)空間的一部分。然后,在保存成電子表格文件的一部分的RET表2210中創(chuàng)建新記錄2211,和按如下初始化這個(gè)新記錄2211●將“Name”字段2212設(shè)置成在文本框2325中找到和在步驟2355中得到核實(shí)的值;●將“Last Change Date”字段2213設(shè)置成如中央處理器101所知的系統(tǒng)引用時(shí)間;●將“Description Ptr”字段724設(shè)置成剛剛分配的存儲(chǔ)單元;●將“Row#”字段2215設(shè)置成值1(因?yàn)樵诒景l(fā)明的優(yōu)選實(shí)施例中,在2D環(huán)境下管理RST;在3D環(huán)境下,這個(gè)字段將攜帶為創(chuàng)建的RE定義的行數(shù));●將“Column#”字段2216設(shè)置成局部變量RE_size的值;和●按如下設(shè)置“Type”字段2217將屬性“META”2218設(shè)置成等于局部變量RE_meta的值,和按如下初始化屬性“REFERENCED”2219●用還沒(méi)有指定給任何其它“OWN REFERENCE”(OR)子字段709a、719a、729a、780a、2219a、2229a、或2240a的質(zhì)數(shù)初始化OR子字段2219a。各種各樣的傳統(tǒng)技術(shù)可以用于識(shí)別質(zhì)數(shù),這里不作進(jìn)一步詳述。
●根據(jù)如下公式初始化“FILIATION REFERENCE”(FR)子字段2219b,其中,根據(jù)記錄在“Description Ptr”字段2214中的結(jié)構(gòu),F(xiàn)集合對(duì)應(yīng)于構(gòu)成新RE或元元素的ST的集合FR=∏i∈FORi×LCM({FRi})i∈F●用值1(一)初始化“INSTANCE REFERENCE”(IR)子字段2219c。
●用如下公式初始化“REFERENCED OBJECT”(RO)子字段2219d。其中,P集合對(duì)應(yīng)于RST的集合如果LCM({FRi})i∈PMod OR=0,RO=“YES”;否則,RO=“NO”。
●用如下公式初始化“SELECTED CHILDREN”(SC)子字段2219e。其中,S集合對(duì)應(yīng)于所選對(duì)象的集合(具有RSTMT表2230中等于值“YES”的“SELECTED”屬性2242)如果LCM({FRi})i∈SMod OR=0# OR#RE_name∈S,SC=“YES”;否則,SC=“NO”。
然后,將控制交給步驟2350。
●在步驟2357中,發(fā)出警告消息通知,以便通知用戶在點(diǎn)擊“Save as”按鈕2332之前,必須在文本框2325中指定有效唯一的名稱。這通??梢酝ㄟ^(guò)在顯示設(shè)備106上將警告消息顯示在彈出窗口中或顯示在狀態(tài)欄區(qū)域中來(lái)完成,但也可以改用任何其它類似手段而不偏離本發(fā)明的精神。一旦用戶通過(guò)傳統(tǒng)手段,譬如,用定位設(shè)備105點(diǎn)擊出現(xiàn)在警告消息彈出窗口內(nèi)的“OK”按鈕,或不偏離本發(fā)明精神的任何其它類似手段確認(rèn)了這個(gè)通知消息,將控制交給步驟2350。
●在步驟2358中,如果用戶用定位設(shè)備106點(diǎn)擊了旋鈕2329的向下這一側(cè),只要局部變量RE_rank嚴(yán)格保持正的,將它減1(一),和如果用戶用定位設(shè)備106點(diǎn)擊了旋鈕2329的向上這一側(cè),只要局部變量RE_rank小于等于局部變量RE_size的值,將它加1(一)。然后,將控制交給步驟2350。
●在步驟2359中,根據(jù)定位設(shè)備105在旋鈕2359上指定的方向(向上或向下),和只要其值保持正的,和小于等于在本發(fā)明的優(yōu)選實(shí)施例中設(shè)置成等于254的上限,將局部變量RE_size加1(一)或減1(一)。然后,將控制交給步驟2350。
●在步驟2360中,更新局部變量RE_meta,以便如果已經(jīng)點(diǎn)擊了底部選項(xiàng)按鈕2330(相應(yīng)地,頂部選項(xiàng)按鈕2331),使它的值變成“YES”,(相應(yīng)地,“NO”)。然后,將控制交給步驟2350。
●在步驟2361中,關(guān)閉RE編輯器對(duì)話框2321,以便它從顯示設(shè)備106上消失。最后,將控制交還給最初步驟2341,以便處理任何未來(lái)的ST編輯器命令。
E12.STI列/行計(jì)數(shù)器方法用在本發(fā)明優(yōu)選實(shí)施例中的計(jì)數(shù)STI內(nèi)的列數(shù)或行數(shù)的方法總結(jié)在圖22A和22B的流程圖2400和2420中??梢詫⑦@些方法看作STI_Row和STI_col函數(shù)的處理。
●在步驟2401中,第一方法處在它的默認(rèn)狀態(tài)下,等待對(duì)STI_Row函數(shù)的調(diào)用。
●在步驟2402中,作為用戶動(dòng)作的結(jié)果,檢測(cè)STI_Row函數(shù)調(diào)用。該函數(shù)用名為ST_Name和STI_Element的兩個(gè)參數(shù)調(diào)用。
●在步驟2403中,將STT表720的第1記錄721設(shè)置成Curr_Record。
●在步驟2404中,將記錄Curr_Record 721的字段Name 722、Min Element#、和Max Element#分別設(shè)置成局部變量Curr_Name、Curr_Min和Curr_Max。
●在步驟2405中,進(jìn)行測(cè)試以檢測(cè)局部變量Curr_Name是否等于函數(shù)參數(shù)ST_Name。如果情況是這樣,那么,將控制交給步驟2409;否則,將控制交給步驟2406。
●在步驟2406中,進(jìn)行測(cè)試以檢測(cè)記錄Curr_Record 721是否是STT表720的最后一個(gè)記錄。如果情況是這樣,那么,將控制交給步驟2408;否則,將控制交給步驟2407。
●在步驟2407中,使STT表720中接在Curr_Record之后的記錄成為新記錄Curr_Record 721。然后,將控制交給步驟2404。
●在步驟2408中,將局部變量STI_Row設(shè)置成等于0(零)。然后,將控制交給步驟2412。
●在步驟2409中,將記錄Curr_Record 721的description Ptr 724所指的單元格范圍設(shè)置成STDT_address。
●在步驟2410中,將局部變量Element_Nbr設(shè)置成等于以局部變量Curr_Max為上界、以局部變量Curr_Min為下界的輸入?yún)?shù)STI_Element。
●在步驟2411中,將局部變量STI_row設(shè)置成等于單元格范圍STDT_add-ress的行數(shù)加局部變量STI_Element的值減1(一)。
●在步驟2412中,隨著控制返回到函數(shù)調(diào)用程序完成STI_row函數(shù)的執(zhí)行。
●在步驟2421中,第二方法處在它的默認(rèn)狀態(tài)下,等待對(duì)STI_Col函數(shù)的調(diào)用。
●在步驟2422中,作為用戶動(dòng)作的結(jié)果,檢測(cè)STI_Col函數(shù)調(diào)用。該函數(shù)用名為ST_Name的一個(gè)參數(shù)調(diào)用。
●在步驟2423中,將STT表720的第1記錄721設(shè)置成Curr_Record。
●在步驟2424中,將記錄Curr_Record 721的字段Name 722設(shè)置成局部變量Curr_Name。
●在步驟2425中,進(jìn)行測(cè)試以檢測(cè)局部變量Curr_Name是否等于函數(shù)參數(shù)ST_Name。如果情況是這樣,那么,將控制交給步驟2429;否則,將控制交給步驟2426。
●在步驟2426中,進(jìn)行測(cè)試以檢測(cè)記錄Curr_Record 721是否是STT表720的最后一個(gè)記錄。如果情況是這樣,那么,將控制交給步驟2428;否則,將控制交給步驟2427。
●在步驟2427中,使STT表720中接在Curr_Record之后的記錄成為新記錄Curr_Record 721。然后,將控制交給步驟2424。
●在步驟2428中,將局部變量STI_Col設(shè)置成等于0(零)。然后,將控制交給步驟2431。
●在步驟2429中,將記錄Curr_Record 721的description Ptr 724所指的單元格范圍設(shè)置成STDT_address。
●在步驟2430中,將局部變量STI_Col設(shè)置成等于單元格范圍STDT_add-ress的列數(shù)。
●在步驟2431中,隨著控制返回到函數(shù)調(diào)用程序完成STI_col函數(shù)的執(zhí)行。
可替代實(shí)施例根據(jù)本發(fā)明的方法和系統(tǒng)可以有利地應(yīng)用在將信息元素組織成垂直構(gòu)造的兩維表的那些環(huán)境中。根據(jù)本發(fā)明的方法和系統(tǒng)可以有利地應(yīng)用在將信息元素組織成多于兩維的多維表的那些環(huán)境中。雖然通過(guò)參照優(yōu)選實(shí)施例具體顯示和描述了本發(fā)明,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式和詳細(xì)上作出各種各樣的改變而不偏移本發(fā)明的精神和范圍。
權(quán)利要求
1.一種在包括多個(gè)數(shù)據(jù)的多維電子數(shù)據(jù)表中管理遞歸可縮放模板實(shí)例中的插入操作的方法;遞歸可縮放模板實(shí)例包括沿著第一數(shù)據(jù)表維排序和對(duì)齊并根據(jù)遞歸可縮放模板構(gòu)造的可變數(shù)量個(gè)相鄰遞歸元素實(shí)例;所述遞歸可縮放模板包含遞歸元素,該遞歸元素包括一個(gè)或多個(gè)可縮放模板;每個(gè)遞歸元素實(shí)例沿著所述第一數(shù)據(jù)表維具有可變尺寸和沿著第二數(shù)據(jù)表維具有相同尺寸;遞歸元素實(shí)例包括一個(gè)或多個(gè)可縮放模板實(shí)例;每個(gè)遞歸元素實(shí)例的每個(gè)可縮放模板實(shí)例沿著所述第一數(shù)據(jù)表維對(duì)齊;每個(gè)遞歸元素實(shí)例內(nèi)的每個(gè)可縮放模板實(shí)例沿著第二數(shù)據(jù)表維對(duì)齊;可縮放模板實(shí)例包括根據(jù)可縮放模板構(gòu)造的可變數(shù)量個(gè)元素;元素被定義成數(shù)據(jù)范圍;數(shù)據(jù)范圍包括一個(gè)或多個(gè)數(shù)據(jù);該方法包括如下步驟·檢測(cè)用于在遞歸元素實(shí)例的可縮放模板實(shí)例中將一個(gè)或多個(gè)相鄰元素插在所選元素之后或之前的插入命令;·識(shí)別·其中要插入所述一個(gè)或多個(gè)元素的可縮放模板實(shí)例;·可縮放模板實(shí)例中的其之后或之前必須要插入一個(gè)或多個(gè)元素的所選元素;·與所述可縮放模板實(shí)例相關(guān)聯(lián)的可縮放模板;·識(shí)別·遞歸可縮放模板實(shí)例和包括所識(shí)別的可縮放模板實(shí)例的遞歸元素實(shí)例;·在所識(shí)別的可縮放模板實(shí)例中,把根據(jù)與所述可縮放模板實(shí)例相關(guān)聯(lián)的可縮放模板構(gòu)造的一個(gè)或多個(gè)元素插在所述所選元素之后或之前;·根據(jù)所述遞歸元素實(shí)例中的最大可縮放模板實(shí)例的尺寸,沿著所述第一數(shù)據(jù)表維,調(diào)整所識(shí)別的遞歸元素實(shí)例的尺寸,所識(shí)別的遞歸可縮放模板實(shí)例的所有遞歸元素實(shí)例保持相鄰而不重疊。
2.根據(jù)前一項(xiàng)權(quán)利要求所述的方法,其中,所述遞歸可縮放模板實(shí)例還包括頁(yè)眉部分和/或頁(yè)腳部分;遞歸可縮放模板的頁(yè)眉部分包括預(yù)定數(shù)量個(gè)遞歸元元素;遞歸可縮放模板的頁(yè)腳部分包括預(yù)定數(shù)量個(gè)遞歸元元素;遞歸元元素包括一個(gè)或多個(gè)可縮放模板;所述方法還包括如下步驟·檢測(cè)用于在遞歸元元素實(shí)例的可縮放模板實(shí)例中,將一個(gè)或多個(gè)相鄰元素插在所選元素之后或之前的插入命令;·識(shí)別·要插入所述一個(gè)或多個(gè)元素的可縮放模板實(shí)例;·可縮放模板實(shí)例中的其之后或之前必須要插入一個(gè)或多個(gè)元素的所選元素;·與所述可縮放模板實(shí)例相關(guān)聯(lián)的可縮放模板;·識(shí)別·遞歸可縮放模板實(shí)例和包括所識(shí)別的可縮放模板實(shí)例的遞歸元元素實(shí)例;·在所識(shí)別的可縮放模板實(shí)例中,將根據(jù)與所述可縮放模板實(shí)例相關(guān)聯(lián)的可縮放模板構(gòu)造的一個(gè)或多個(gè)元素插在所述所選元素之后或之前;·根據(jù)所述遞歸元元素實(shí)例的最大可縮放模板實(shí)例的尺寸,沿著所述第一數(shù)據(jù)表維,調(diào)整所識(shí)別的遞歸元元素實(shí)例的尺寸,所識(shí)別的遞歸可縮放模板實(shí)例的所有遞歸元素實(shí)例和遞歸元元素實(shí)例保持相鄰而不重疊。
3.根據(jù)前述權(quán)利要求中的任何一項(xiàng)所述的方法,還包括如下步驟·檢測(cè)用于在遞歸可縮放模板實(shí)例中,將一個(gè)或多個(gè)相鄰遞歸元素實(shí)例插在所選遞歸元素實(shí)例之后或之前的插入命令;·識(shí)別·要插入所述一個(gè)或多個(gè)遞歸元素實(shí)例的遞歸可縮放模板實(shí)例;·遞歸可縮放模板實(shí)例中的其之后或之前必須要插入一個(gè)或多個(gè)遞歸元素實(shí)例的所選遞歸元素實(shí)例;·與所述遞歸可縮放模板實(shí)例相關(guān)聯(lián)的遞歸可縮放模板;·在遞歸可縮放模板實(shí)例中,將一個(gè)或多個(gè)相鄰遞歸元素實(shí)例插在所述所選遞歸元素實(shí)例之后或之前;·沿著第一數(shù)據(jù)表維將一個(gè)或多個(gè)所插入的遞歸元素實(shí)例與已經(jīng)存在的一個(gè)或多個(gè)遞歸元素實(shí)例對(duì)齊;所述將一個(gè)或多個(gè)所插入的遞歸元素實(shí)例沿著第二數(shù)據(jù)表維具有與已經(jīng)存在的一個(gè)或多個(gè)遞歸元素實(shí)例相同的尺寸;·根據(jù)為所識(shí)別的遞歸可縮放模板定義的遞歸元素構(gòu)造每個(gè)所插入的遞歸元素實(shí)例。
4.根據(jù)前一項(xiàng)權(quán)利要求所述的方法,還包括如下步驟·沿著所述第一數(shù)據(jù)表維對(duì)齊每個(gè)所插入的遞歸元素實(shí)例的每個(gè)可縮放模板實(shí)例;·在每個(gè)所插入的遞歸元素實(shí)例內(nèi),沿著所述第二數(shù)據(jù)表維對(duì)齊每個(gè)可縮放模板實(shí)例。
5.根據(jù)前述權(quán)利要求中的任何一項(xiàng)所述的方法,其中,在遞歸可縮放模板實(shí)例中,將一個(gè)或多個(gè)相鄰元素插入可縮放模板實(shí)例中,或插入一個(gè)或多個(gè)相鄰遞歸元素實(shí)例的所述步驟還包括如下步驟·確定該插入是否破壞了數(shù)據(jù)表中的任何其它現(xiàn)有遞歸可縮放模板實(shí)例,遞歸可縮放模板實(shí)例是在不再根據(jù)所相關(guān)的遞歸可縮放模板構(gòu)造遞歸元素實(shí)例的時(shí)候被破壞的。
6.根據(jù)前一項(xiàng)權(quán)利要求所述的方法,其中,確定所述插入是否破壞了所述數(shù)據(jù)表中的任何其它現(xiàn)有遞歸可縮放模板實(shí)例的所述步驟還包括如下步驟·如果所述插入破壞了被定義成關(guān)鍵性實(shí)例的任何遞歸可縮放模板實(shí)例,則取消該插入。
7.根據(jù)前一項(xiàng)權(quán)利要求所述的方法,對(duì)于每個(gè)遞歸可縮放模板實(shí)例,包括如下步驟·將所述一個(gè)或多個(gè)遞歸可縮放模板實(shí)例的每一個(gè)定義成關(guān)鍵性實(shí)例或非關(guān)鍵性實(shí)例。
8.根據(jù)前述權(quán)利要求中的任何一項(xiàng)所述的方法,其中,在遞歸可縮放模板實(shí)例中,將一個(gè)或多個(gè)相鄰元素插入可縮放模板實(shí)例中的步驟,或插入一個(gè)或多個(gè)相鄰遞歸元素實(shí)例的所述步驟還包括如下步驟·確定該插入是否破壞了數(shù)據(jù)表中的任何其它現(xiàn)有遞歸可縮放模板實(shí)例,當(dāng)遞歸元素不再根據(jù)所相關(guān)的可縮放模板構(gòu)造時(shí),遞歸可縮放模板實(shí)例被破壞。
9.根據(jù)前一項(xiàng)權(quán)利要求所述的方法,其中,確定插入是否破壞了數(shù)據(jù)表中的任何其它現(xiàn)有可縮放模板實(shí)例的所述步驟還包括如下步驟·如果插入破壞了被定義成關(guān)鍵性實(shí)例的任何可縮放模板實(shí)例,則取消該插入。
10.根據(jù)前述權(quán)利要求中的任何一項(xiàng)所述的方法,其中,所述多維電子數(shù)據(jù)表是包括通過(guò)沿著每一維的單元格地址標(biāo)識(shí)的多個(gè)單元格的電子表格。
11.根據(jù)前一項(xiàng)權(quán)利要求所述的方法,其中,可縮放模板實(shí)例包括沿著給定電子表格維排序和對(duì)齊并根據(jù)可縮放模板構(gòu)造的尺寸相同的可變數(shù)量個(gè)相鄰元素;元素被定義成單元格范圍;所述可縮放模板包括元素格式和/或元素概要;元素格式為每個(gè)元素內(nèi)的每個(gè)單元格定義一個(gè)或多個(gè)格式屬性;元素概要為每個(gè)元素內(nèi)的每個(gè)單元格定義單元格內(nèi)容和單元格目的地;所述單元格目的地規(guī)定單元格是接受條目的輸入單元格還是生成結(jié)果的輸出單元格。
12.一種包括適合實(shí)現(xiàn)根據(jù)前面權(quán)利要求的任何一項(xiàng)所述的方法的步驟的裝置的系統(tǒng)。
13.一種計(jì)算機(jī)程序,包括當(dāng)所述計(jì)算機(jī)程序被執(zhí)行時(shí),用于實(shí)現(xiàn)根據(jù)權(quán)利要求1到11中的任何一項(xiàng)所述的方法的步驟的指令。
全文摘要
本發(fā)明涉及在包括多個(gè)數(shù)據(jù)的多維電子數(shù)據(jù)表中、最好在電子表格中,管理遞歸可縮放模板實(shí)例中的插入操作的方法、系統(tǒng)和程序;遞歸可縮放模板實(shí)例包括沿第一數(shù)據(jù)表維排序和對(duì)齊和根據(jù)遞歸可縮放模板構(gòu)造的可變數(shù)量個(gè)相鄰遞歸元素實(shí)例;所述遞歸可縮放模板有包括一個(gè)或多個(gè)可縮放模板的遞歸元素;每個(gè)遞歸元素實(shí)例沿所述第一數(shù)據(jù)表維有可變尺寸和沿第二數(shù)據(jù)表維有相同尺寸;遞歸元素實(shí)例有一個(gè)或多個(gè)可縮放模板實(shí)例;每個(gè)遞歸元素實(shí)例的每個(gè)可縮放模板實(shí)例沿所述第一數(shù)據(jù)表維對(duì)齊;每個(gè)遞歸元素實(shí)例內(nèi)的每個(gè)可縮放模板實(shí)例沿第二數(shù)據(jù)表維對(duì)齊;可縮放模板實(shí)例有根據(jù)可縮放模板構(gòu)造的可變數(shù)量個(gè)元素;元素定義成數(shù)據(jù)范圍;數(shù)據(jù)范圍有一個(gè)或多個(gè)數(shù)據(jù)。
文檔編號(hào)G06F17/24GK1774712SQ200480010399
公開(kāi)日2006年5月17日 申請(qǐng)日期2004年2月27日 優(yōu)先權(quán)日2003年4月18日
發(fā)明者讓-雅克·奧里格莉亞, 弗雷德里克·鮑科特 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司