跳轉到內容

Oberon/ETH Oberon/Tutorial/GadgetsIntro

來自華夏公益教科書,開放世界開放書籍

這些教程頁面由 André Fischer (afi) 編寫,並由 Hannes Marais 提供編輯協助,託管在 ETHZ 並保留在 ETH 許可 下。相關內容可在系統中透過 Book.Tool 找到。擴充套件內容也可在 紙質版 上找到。一些教程頁面在 WayBack 存檔 中。

部件簡介

教程目標

[編輯 | 編輯原始碼]

向您介紹名為部件的 Oberon System 3 圖形使用者介面 (GUI)。介紹了視覺部件和模型部件的概念。然後描述了面板、文件和桌面等部件。

預計時間:60 分鐘。

部件是用於 Oberon System 3 的圖形使用者介面管理系統。它包含一組用於構建圖形使用者介面的終端使用者物件。此構建過程在執行時完成,因此是終端使用者物件。這些終端使用者物件被稱為部件。部件範圍從典型的對話方塊元素(如 按鈕複選框)到更復雜的元素(如 文字 和繪圖編輯器)。您不僅可以使用使用部件系統構建的應用程式,還可以使用提供的部件構建自己的圖形使用者介面。此外,如果提供的部件不能滿足您的需求,您可以透過擴充套件現有部件或構建全新的部件來編寫自己的部件。您還可以從其他應用程式中 借用 部件。

從技術上講,部件是具有不同粒度的使用者介面元件。例如,繪圖中的線或圖形是部件,就像繪圖本身也是一個(複合)部件一樣。稍後,我們將介紹術語 容器部件 來表達這一點。每個部件都知道一個定義明確的通訊協議,使它能夠作為具有獨立功能的單元發揮作用,並且可以整合到任何為其提供通訊協議的環境中。部件可以在文字中流動,可以整合到 面板(與其他系統中的視窗大致相當)中,或者用在頁面佈局系統中。由於它們是活動物件,因此它們在內部構建了編輯器,允許它們在出現的地方進行編輯或使用。每個部件例項的行為都具有其獨特的方式。但是,它們都遵循一組對 Oberon 使用者來說已經很熟悉的準則。最重要的是,它們響應某些 滑鼠點選鍵盤輸入

部件類

[編輯 | 編輯原始碼]

Oberon System 3 中有幾個部件類。部件類決定了部件在系統中的作用、外觀和行為。我們現在將回顧其中的一些,從一些更有趣的視覺部件開始,然後是更抽象的 模型部件。在 使用部件 中回顧了此 Oberon System 3 交付中提供的全部部件。其他重要的部件(如面板、文件和桌面)將在後面的章節中介紹。

視覺部件

[編輯 | 編輯原始碼]

視覺部件在您的螢幕上由一個圖形符號表示,通常具有 3D 外觀(見下面的按鈕),用作您和計算機之間的通訊媒介。此外,此類媒介在受到滑鼠點選刺激時會表現出簡單的行為。Oberon 引入了一種與計算機互動的新方式。

透過單擊按鈕上的中間滑鼠鍵,可以按下並釋放按鈕。現在試試。按鈕被按下,顯示一個模擬 LED 的矩形紅色標記,並在釋放鍵時恢復到其原始狀態。單擊按鈕會導致執行 Oberon 命令,如果已定義。標題應(最好)表示按鈕的功能或操作。

或者,按鈕可以定義為具有兩種狀態的切換按鈕。在這種情況下,必須單擊按鈕兩次才能迴圈遍歷兩種狀態。

複選框

[編輯 | 編輯原始碼]

複選框與切換按鈕非常相似,但沒有標題,兩個狀態由是否存在複選標記來標識。嘗試用滑鼠中鍵單擊。如果已定義,單擊複選框將執行 Oberon 命令。

滑塊

[edit | edit source]

滑塊用於根據拖動滑鼠中鍵定位的旋鈕的相對位置來設定(隱藏的)數值。最小值和最大值是滑塊規範(也隱藏)的一部分。

如果已定義,當操作滑塊時會執行 Oberon 命令。

列表

[edit | edit source]

列表按字母順序顯示一組字串,沒有重複項,就像這裡一樣。或者,列表可以保持未排序,在這種情況下允許重複條目。與按鈕或複選框相比,列表的控制和行為不再那麼簡單。

單擊列表中的任何位置的左鍵將使列表獲得焦點:左邊緣將出現一條垂直線。獲得焦點後,透過鍵入幾個初始字元,可以在更長的排序列表中快速定位。列表將滾動,以便具有匹配初始字元的列表項位於第一行。按回車鍵將清除鍵入的單詞。同樣,獲得焦點後,可以使用右鍵和中鍵組合單擊將選定的文字複製到列表中。在排序列表中,新專案按字母順序插入,並且是唯一的。在未排序列表中,新專案將插入列表的末尾。

單擊列表項的右鍵將選中它。再次單擊選定的專案將取消選中它。向上或向下拖動右鍵會將選擇擴充套件到多個連續專案。如果需要,列表將自動向前或向後滾動。單擊未選中的專案將開始新的選擇。如果存在,還可以使用捲軸控制滾動。

如果已定義,單擊列表項的中鍵將執行 Oberon 命令。

文字欄位

[edit | edit source]

文字欄位允許編輯單行文字。焦點使用左鍵單擊設定。文字欄位隨後進入本地編輯模式,並可以使用完整的 Oberon 文字編輯功能。一旦游標移出(例如,當按下 Esc 鍵)或按下回車鍵,本地編輯模式就會退出。這透過欄位的 3D 方面的改變變得可見。

如果已定義,按下回車鍵將執行 Oberon 命令。

使用滑鼠控制工具

[edit | edit source]

工具的一個有趣且新穎的方面是,除了使用之外,它們還可以從建立開始到最終被使用者顯式鎖定之前,改變其大小和位置。這與其他系統形成對比,在其他系統中,使用者會收到鎖定的使用者介面,並且必須“接受或拒絕”。一個工具系統使用者的大量時間都花在組織和構建新的使用者介面上。在本節中,我們將解釋如何在執行時進行工具的互動式組合。

基本滑鼠鍵操作

[edit | edit source]

可視工具的形狀通常是矩形,只有少數例外。工具佔據的矩形區域可以在概念上劃分為一個控制區域,它位於內部邊框上,寬度只有幾個畫素,以及一個活動區域。控制區域的寬度根據工具的大小和狀態而有所不同。

滑鼠焦點位於這些區域中的一個或另一個區域時,工具會以不同的方式響應滑鼠事件。

在活動區域中,工具通常遵循 Oberon 約定,或者與其保持一致;也就是說,如果您已經習慣使用滑鼠控制文字,您將立即識別出相似之處,因此控制工具將很快成為小菜一碟。

■ _ _ 點鍵:設定插入符號,即新工具的插入點。將插入符號放在工具中稱為使工具獲得焦點。一次只能有一個工具獲得焦點。
_ ■ _ 執行鍵:按下按鈕,切換複選框(選中/未選中),移動滑塊等。如果定義了 Cmd 屬性,則執行該命令。
_ _ ■ 選擇鍵:選擇工具。選定的工具被覆蓋在一個白色半透明圖案中。

嘗試使用這三個單鍵單擊來驗證自己。

將插入符號設定在面板中並執行命令Gadgets.Insert Clock ~

應特別注意右鍵的使用。

  • 可以依次選擇位於同一容器中的多個工具。選定的工具組將成為選擇
  • 按下該鍵並拖動會導致出現一個跨越矩形。完全包含在這個矩形中的所有工具都將被選中:該組也將成為選擇。這類似於選擇文字。
  • 單擊空白區域將清除選擇。
  • 單擊選定的工具將取消選中它。

例外:某些工具只能在滑鼠焦點位於控制區域中時才能被選中。這種情況適用於面板、名稱板、文字欄位和文字工具(除了左邊的捲軸)。對於最後三個,在活動區域中,選擇操作於包含的文字。

最後,記住這一點。
■ ■ ■ 抵消單擊或組合單擊。

複製和刪除選擇

[edit | edit source]

□ _ ■ 選擇工具並刪除選擇。
_ □ ■ 選擇工具並將選擇複製到插入符號。
■ □ _ 設定插入符號並將選擇複製到插入符號。

練習使用此面板中的工具

選擇通常是 Oberon 命令的目標,並根據以下說明對滑鼠中鍵單擊做出反應。

某些工具不會響應所有這些滑鼠鍵單擊。

移動和調整工具大小 - 中鍵

[edit | edit source]

根據滑鼠焦點位於控制區域中的位置,滑鼠中鍵的解釋會有所不同:邊用於移動工具,角用於改變工具的大小。因此,將滑鼠焦點放在:

_ ■ _ 上並拖動中鍵會移動工具(滑鼠指標將變成抓取的手)。移動僅限於當前容器,並且在嘗試將工具完全移出其當前容器時可能會被拒絕。

_ ■ _ 上並拖動中鍵會調整工具的大小(滑鼠指標將變成一個帶有指向索引的手)。

在這兩種情況下,當釋放鍵時,都會設定新的位置或大小。

練習使用此彩色面板中的三個工具調整大小和移動。

您可以輕鬆地驗證控制區域的存在(或不存在),方法是緩慢地將滑鼠移動到工具上,同時反覆單擊滑鼠中鍵。如果工具不能如上所述調整大小或移動,則控制區域不存在。

只能使用以下描述的顯式左鍵或右鍵組合單擊移動到另一個容器。

移動和複製工具 - 使用中鍵進行拖放

[edit | edit source]

當移動工具(即從其側面抓取工具)時,如果在滑鼠移動結束時使用

□ ■ _ 左鍵:將小部件移動到滑鼠焦點所在的新容器,或者如果它保留在當前容器中,則將其置於重疊的小部件的前面。
_ ■ □ 右鍵:在滑鼠焦點處插入小部件的副本(在同一容器或不同的容器中)。

使用此彩色面板中的三個小部件進行練習

將小部件從一個容器移動到另一個容器稱為消費操作。新容器消費小部件,小部件從其舊位置移除。這不僅用於將物件從一個面板移動到另一個面板,還用於提供一般的拖放功能。消費者(稱為接收者或接收方)可以以不同的方式解釋放置事件:它可以將被消費方(稱為傳送者發起者)作為後代吸收(就像大多數容器一樣),或者它可以啟動其他事件。例如,垃圾桶可以刪除它消費的檔案小部件,或者編譯器可以編譯源文字。一些(接收者)小部件可以在消費事件上執行使用者定義的命令。圖示小部件就是這樣一種接收者。

移動和複製選擇:另一種方法

[edit | edit source]

當一個小部件被選中時,控制區域會擴充套件到該小部件覆蓋的整個區域,並且它具有與邊框相同的功能。

移動或複製選擇存在另一種方法:在任何選定的小部件上按住滑鼠中鍵並拖動選擇到新位置。如果選擇多個小部件,則會顯示一個跨越所有小部件的矩形。左鍵或右鍵單擊與拖放操作具有相同的含義。

小部件鎖定

[edit | edit source]

存在一個靈活的機制,允許使用者鎖定一個小部件,從而防止意外更改小部件。

一個鎖定的容器,例如圖示化器、筆記本或面板不能調整大小。當滑鼠焦點位於控制區域的任何位置時,它可以用滑鼠中鍵移動,並且可以在小部件的任何位置用右鍵移動單擊進行選擇。

大多數應用程式介面都處於鎖定狀態,但它們可以隨時解鎖以根據使用者的需求或個人喜好進行定製。

模型小部件

[edit | edit source]

模型小部件儲存對應用程式有用的資料值。它的結構和行為非常簡單,它不能在顯示器上視覺化自身。小部件系統只提供了一組有限的模型小部件,可以儲存基本的 Oberon 資料型別,即 BOOLEAN、LONGINT、LONGREAL 和字串(ARRAY 64 OF CHAR)。

為了視覺化儲存在模型小部件中的值,需要藉助像上面介紹過的那些可視小部件。 這是眾所周知的 Smalltalk 模型-檢視-控制器框架(MVC)。模型小部件包含由可視小部件視覺化的資料。

在實踐中,幾個可視小部件可以顯示相同模型小部件的值 - 下面給出一個示例。每個檢視確保它與其表示的模型保持一致。我們也說可視小部件連結到特定模型小部件。

模型小部件背後的理念是,它可以很容易地被 Oberon 程式操作。作為回報,模型的視覺化將相應地更新,而應用程式程式不知道或有多少這樣的連結可視小部件存在。這允許應用程式程式設計師將程式碼與對使用者介面所做的更改隔離開來。

但是,您應該清楚地理解,許多可視小部件(前面描述的只是它們中的一小部分)是以這樣的方式編寫的,即使它們沒有連結到模型小部件也可以正常工作。

布林值

[edit | edit source]

儲存 BOOLEAN 值。它可以連結到按鈕或複選框。

整數

[edit | edit source]

儲存 LONGINT 值。它可以連結到按鈕、複選框、滑塊或文字欄位。

實數

[edit | edit source]

儲存 LONGREAL 值。它可以連結到滑塊和文字欄位。

字串

[edit | edit source]

儲存最多 64 個字元的 ARRAY OF CHAR。它可以連結到滑塊或文字欄位。

一些具體的例子

[edit | edit source]

單選按鈕

[edit | edit source]

選擇一個頻道

這裡有三個單選按鈕。就像收音機或電視調諧器上的按鈕一樣,單擊一個單選按鈕只會選擇幾個(這裡為 3 個)相互排斥的選項中的一個。當選擇一個選項時,其關聯的 LED 會亮起。

這種效果是透過將一組單選按鈕連結到一個整數小部件來實現的。每個按鈕都給定一個整數值的規格,當模型小部件具有該值時,該按鈕將顯示為按下狀態。

複選框作為單選按鈕

[edit | edit source]
紅色 綠色 藍色
選擇一種顏色

這裡還有另一種使用複選框的單選按鈕形式。在這種模式下,複選標記被替換為矩形標記。

同樣,這種效果是透過將一組複選框連結到一個整數小部件來實現的。每個複選框都給定一個整數值的規格,當模型小部件具有該值時,該框將被選中。

具有兩個檢視的模型小部件

[edit | edit source]

這裡是一個小部件星座的示例,其中滑塊和文字欄位都連結到同一個整數模型小部件。這兩個可視小部件充當同一個不可見物件的檢視。在幕後,事物的組織方式如下

更改滑塊的位置會導致整數小部件相應地更新,這反過來會導致文字欄位被告知其模型的值已更改。無需編寫任何程式即可實現此效果。只需指定小部件及其連結即可。

現在,看看這個類似的示例,其中整數小部件的值由一個(非常簡單的!)程式操作,該程式只能將該值遞增或遞減 1。您可以觀察到,透過單擊任何一個藍色三角形。

擴充套件模型小部件集

[編輯 | 編輯原始碼]

通常,應用程式程式設計師會根據自己的需要新增自己的模型小部件。 這需要程式設計。 例如,構建儲存多個數據值的複合模型通常很有用。 標準小部件集合中提供的唯一這樣的複合模型是複數小部件,它儲存複數的實部和虛部。 該小部件的原始碼在模組Complex.Mod 中提供,其在應用程式中的使用示例在模組Lissajous.Mod 中給出。

面板是小部件的二維組織器。 它可以被看作一張紙,小部件以二維方式在其上組織。 包含在面板內的這些小部件被稱為後代小部件或其後代,而面板本身被稱為祖先,或者也稱為這些後代的上下文。 將面板歸類為容器小部件也是足夠的。 由於面板本身就是一個小部件,因此面板可能會出現在面板內部,巢狀到任何深度。

面板還支援對後代小部件組的操作以及提供其後代最佳佈局和對齊方式的操作。 一個捕捉網格 允許輕鬆放置後代。 這些可以對齊到相同的基線、高度、大小或寬度,或者垂直和水平組織。 面板上的操作可以從Gadgets.Panel 中的工具啟用。 此面板是用於建立和操作小部件的使用者介面。

後代按優先順序組織,並且可能相互重疊。 後代通常在被移動後保持其當前優先順序。 Oberon 命令將一個小部件放在其他小部件的後面或前面。 新插入的小部件始終放置在前面。 將一個小部件帶到最前面的最簡單方法是將其拾取並再次使用(中間 + 左鍵滑鼠點選)。

面板上的滑鼠命令

[編輯 | 編輯原始碼]

面板中的滑鼠事件,除了少數例外,與之前關於小部件的描述一致。 右鍵拖動以中間鍵點選結束將對所選內容進行淺複製,並將該複製複製到插入符號位置。

以下是處理方式不同的內容。

當面板未鎖定時:

□ ■ □ 執行鍵:當滑鼠焦點定位在其上時,由後代小部件識別,在活動區域的其他地方無效。
□ □ ■ 選擇鍵在滑鼠焦點位於控制區域內時識別。

當面板鎖定:

□ ■ □ 執行鍵:當滑鼠焦點定位在其上時,由後代小部件識別,在活動區域的其他地方無效。
□ □ ■ 選擇鍵:可以單擊任何位置以選擇它。

鎖定的面板無法調整大小,並且當滑鼠焦點位於控制區域的任何位置時,可以使用中間滑鼠鍵移動它。

帶模型小部件的面板

[編輯 | 編輯原始碼]

面板可以連結到模型小部件。 在這種情況下,面板不用作模型小部件的檢視器,而是用作重要資料的佔位符,這些資料通常由後代表示。

檔案是命名的集合,它可以作為一個原子操作儲存到磁碟和從磁碟載入。 看一下此文件左上角的名稱牌:它的名稱是“GadgetsIntro.Book”。 磁碟檔案與文件的名稱相同。

檔案可以在眾所周知、熟悉的 Oberon 檢視器 系統中開啟和顯示。 此外,檔案可以在我們所謂的“桌面”中插入(即開啟),這將在下一章中解釋。

檔案通常以一個選單欄的形式呈現自身,其中包含與該檔案相關的常用命令,例如“關閉”、“搜尋”、“儲存”等,以及一個名稱牌。 此外觀對 Oberon 使用者來說是熟悉的。 或者,檔案可以在沒有選單欄的情況下插入到桌面上。

檔案型別

[編輯 | 編輯原始碼]

檔案具有一個主要型別,該型別由它們包含的根框架決定。 例如,存在文字和麵板檔案型別。 檔案可能包含任何型別的其他子框架。 每個檔案都儲存在一個檔案中,並且當僅知道檔名時,可以由檔案管理器從磁碟重建/載入。 檔案是自包含的,並且瞭解有關自身足夠的資訊以載入、儲存和列印。 主要優點是使用者無需知道開啟特定檔案需要哪個應用程式程式。

檔案型別由所謂的文件 New 過程決定,該過程在開啟新檔案時(見下文)也記錄在檔案中,當檔案被儲存時。 這些資訊在開啟檔案時再次使用。 這是一個“文件 New 過程”到“文件型別”的對應表

TextDocs.NewDoc 文字檔案
PanelDocs.NewDoc     面板檔案

開啟一個空檔案 - Desktops.OpenDoc

[編輯 | 編輯原始碼]

Desktops.OpenDoc "("documentNewProcedure")" 開啟一個空的未命名檔案,其型別為指定型別,並將該檔案插入桌面。

試試這個 Desktops.OpenDoc (PanelDocs.NewDoc) 。 注意名稱牌:它是空的。

開啟一個現有檔案 - Desktops.OpenDoc

[編輯 | 編輯原始碼]

Desktops.OpenDoc fileName 開啟檔案fileName。 如果之前已儲存具有該名稱的檔案,則會載入該檔案,並將檔案插入到顯示空間中。 否則,將建立一個特定型別的空檔案。 型別由檔名字尾隱式決定

.Text 文字檔案
.Panel 面板檔案
.Pict 圖片檔案
其他任何內容     文字檔案

開啟並重鑄現有檔案 - Desktops.OpenDoc

[編輯 | 編輯原始碼]

Desktops.OpenDoc fileName "("documentNewProcedure")" 執行與上述操作相同的功能,並嘗試(並非總是成功)將原始檔案轉換為新型別。

在插入符號處插入現有檔案 - Desktops.InsertDoc

[編輯 | 編輯原始碼]

Desktops.InsertDoc fileName 開啟檔案fileName。 如果之前已儲存具有該名稱的檔案,則會載入該檔案,並將檔案插入到顯示空間中的插入符號處,沒有選單欄。 否則,將開啟一個空檔案。 檔案型別由之前為 Desktops.OpenDoc 描述的規則決定。

替換現有檔案 - Desktops.ReplaceDoc

[編輯 | 編輯原始碼]

Desktops.ReplaceDoc fileName 用另一個文件fileName替換執行命令的文件。如果之前已儲存具有該名稱的文件,則載入該文件並將其替換為當前文件。否則,將開啟一個空文件。文件型別由之前為 Desktops.OpenDoc 描述的規則確定。文件將就地切換。

應用示例:此命令經常用於系統提供的工具文件中,例如 Desktops.Tool、Programming.Tool 等。該命令在超文字連結中使用,例如 [桌面]、[應用程式] 等。

儲存標記的文件 - Desktops.StoreDoc

[編輯 | 編輯原始碼]

Desktops.StoreDoc * 將標記的文件儲存在一個檔案中,其檔名取自文件的名稱板。如果從文件本身執行,則執行命令的文件是隱含的。然後,文件不必被標記,* 引數也不需要。該檔案儲存在當前目錄中。如果該名稱的檔案已經存在,則將其重新命名:將字尾 '.Bak' 附加到其原始名稱。

[編輯 | 編輯原始碼]

Desktops.PrintDoc printerName * 在指定的印表機上列印標記的文件。

在 DOS 版本中,您可以選擇印表機伺服器的名稱或 LPT1、LPT2 等。

在 Oberon for Windows 中,printerName 引數將被忽略,並使用在 Windows 列印管理器中定義的預設印表機來列印文件。此外,在 Oberon for Windows 中,列印由反向影片滑鼠指標指示,直到文件被放置到印表機佇列中。

在 MacOberon 版本中,您可以選擇印表機名稱 QuickDraw、PostScript 和 EPS。QuickDraw 列印到在選擇器中選擇的印表機,PostScript 生成一個 PostScript 檔案,EPS 生成一個封裝的 PostScript 檔案。

如果從文件本身執行,則執行命令的文件是隱含的。然後,文件不必被標記。

調回文件 - Desktops.Recall

[編輯 | 編輯原始碼]

Desktops.Recall 在執行命令的桌面上重新開啟最後一個關閉的文件。文件以關閉時的狀態開啟,並放置在中心,但如果首先設定了星形標記,則標記焦點將確定文件的左上角。

文件中的選擇

[編輯 | 編輯原始碼]

如前所述,文件充當其包含的主部件的“包裝器”。為了區分主部件的選擇和包裝器的選擇,使用了兩階段選擇。在主部件的控制區域中單擊滑鼠右鍵將選擇它(以白色顯示),而第二次單擊將選擇文件(以藍色顯示);也就是說,部件以從內到外的順序選擇,並透過其顏色識別。

桌面是一個命名的工作臺面,文件和其他各種部件以二維方式排列,幷包含重疊的物件。請檢視此桌面左上角的名稱板:它的名稱很可能是“Oberon.Desk”。桌面可以作為一個原子操作儲存到磁碟並從磁碟載入。磁碟檔案與桌面具有相同的名稱。這當然會讓您想起之前關於文件的說明。

當桌面被儲存時,只記錄工作臺面的佈局:桌面的文件沒有儲存,這些文件必須由使用者顯式儲存。稍後,相同的桌面可以從記錄的資訊中重新載入和重新建立。

這樣,使用者就可以建立許多不同的工作環境,這些環境適合手頭的任務和可用的顯示解析度。同樣,多個使用者可以共享同一臺計算機並開啟他們個性化的桌面。像任何其他檔案一樣,桌面可以移植到其他計算機。

開啟桌面 - Desktops.Open

[編輯 | 編輯原始碼]

Desktops.Open fileName 開啟一個桌面fileName。如果之前已儲存具有該名稱的桌面,則載入它並將其插入顯示空間。否則,將建立一個新的預設桌面。通常,Gadget 使用與 Oberon 的Edit.Open 相同的策略來放置桌面,以放置檢視器,即在使用者軌道中。但是,您可以覆蓋此首選項,並透過放置星形標記來指示桌面應出現在哪裡。桌面放置在指標的軌道中,其頂部邊緣將與指標的高度一致。

佈局和屬性

[編輯 | 編輯原始碼]

桌面顯示為一個沒有選單欄的 Oberon 檢視器。雖然選單欄不存在,但它可以調整大小:將滑鼠焦點放置在頂部的一個狹窄的不可見區域,然後按左鍵將導致一條粗藍色的水平線出現,告訴您已經進入了跟蹤模式。拖動左鍵將確定軌道中新的頂部位置。釋放按鍵後,頂部邊緣將移動到滑鼠焦點的高度,桌面內容將重新繪製。移動範圍與 Oberon 檢視器的移動範圍相同。

如果在拖動過程中中間滑鼠鍵被快速點選,則桌面可以放置在顯示屏上的任何位置。特別是,它可以跨軌道邊界重新定位。當然,這隻有在混合(Oberon - Gadget)顯示佈局中才有可能。

嘗試 Desktops.Open YourNewDT

您剛剛意識到顯示錶面可能一次包含多個桌面:桌面也是一個(容器)部件。在這種佈局中,部件和文件可以跨桌面移動或複製。

擴充套件桌面 - Desktops.Grow

[編輯 | 編輯原始碼]

Desktops.Grow 擴充套件執行命令的桌面。桌面擴充套件到覆蓋其顯示的整個軌道,或者如果它已經填滿了軌道,則擴充套件到覆蓋整個顯示屏。

複製桌面 - Desktops.Copy

[編輯 | 編輯原始碼]

Desktops.Copy 開啟執行命令的桌面的副本。副本顯示與原始桌面相同的資料(它是克隆)。

關閉桌面 - Desktops.Close

[編輯 | 編輯原始碼]

Desktops.Close 摺疊或刪除執行命令的桌面。

儲存桌面 - Desktops.Store

[編輯 | 編輯原始碼]

Desktops.Store fileName 將執行命令的桌面儲存在具有指定名稱的磁碟檔案中,即名稱板中顯示的名稱。如果該名稱的檔案已經存在,則將其重新命名:附加字尾.Bak

更改背景 - Desktops.ChangeBackdrop

[編輯 | 編輯原始碼]

Desktops.ChangeBackdrop picturefileName 更改標記桌面的背景。使用不存在的圖片名稱來重置背景。

檢視是一個相機檢視,它對一個無法輕鬆地在顯示錶面上完整呈現的小部件具有可變的視角。例如,一個大型繪圖可能就是這種情況。同一個可視小部件的第二個檢視也可以顯示相同繪圖的不同部分。甚至可以構建多個檢視:任何檢視都可以編輯,因為它們都代表同一個基本小部件。

原始圖片 縮放檢視 #1 縮放檢視 #2

在幕後,這種情況與您在具有兩個檢視的模型中所經歷的情況類似,但這裡的模型是一個可視小部件(一個圖片)。

當滑鼠焦點位於這些檢視之一內部時,按下中間鍵會導致出現一個跨越矩形,顯示正在檢視物件的實際尺寸。在該鍵上向任何方向拖動會導致矩形移動。當釋放該鍵時,會繪製新的檢視。這裡使用的圖片名為“Default.Pict”,包含在本 Oberon 系統 3 中。

檢視也是一個小部件,並且檢視可以巢狀。檢視可以為空,即不顯示任何內容。將一個小部件拖放到一個空檢視中會使檢視顯示該被消費的小部件。

    

右側的最後一個示例顯示了一個帶有按鈕的面板的相機檢視。可以透過拾取面板的邊界並將其拖動到新位置來更改視點。

下一步是什麼?

[編輯 | 編輯原始碼]

使用小部件中,深入瞭解小部件的使用和組成,並瞭解擴充套件的小部件集合。

從 Oberon 程式中使用小部件中瞭解如何從 Oberon 程式內部操作小部件。

如果您想開發自己的小部件,可以在程式設計新小部件中學習所有相關內容。

[ A | B | C | D | E | G | L | M | P | R | S | T | V ]

A

活動區域
祖先

B

按鈕

C

複選框
複雜小部件
消費操作
容器
上下文
控制區域
複製選擇

D

刪除選擇
後代
Desktops.ChangeBackdrop
Desktops.Close
Desktops.Copy
Desktops.Grow
Desktops.InsertDoc
Desktops.OpenDoc
Desktops.Open
Desktops.PrintDoc
Desktops.Recall
Desktops.ReplaceDoc
Desktops.StoreDoc
桌面
Desktops.Store
文件 New 過程
文件
拖放
拖放

E

終端使用者物件

G

小部件
圖形使用者介面

L

連結
列表
鎖定

M

選單欄
模型小部件
模型-檢視-控制器
滑鼠鍵操作
移動
MVC

P

面板

R

單選按鈕
單選按鈕
調整大小

S

滑塊
Smalltalk

T

文字框

V

檢視
檢視
可視小部件


1996 年 7 月 6 日 修訂
1997 年 5 月 30 日 安裝

華夏公益教科書