後一頁
前一頁
回目錄
回首頁
第一章 Delphi快速入門(四)

1.3.4.2 Shape部件 

        圖形部件Shape在前文中我們已有了解,它可以處理多種幾何形狀,通過設定PenBrush的巢狀屬性,可以設定圖形邊框顏色、線型及圖形的風格、填充方式、貼圖方式等。 

1.3.4.3 PaintBox部件 

        在System頁上還有一個PaintBox(繪圖框)部件,它在窗體上為您提供一塊可供繪圖的區欄位。這一部件需要程式設計實現它的功能,一個只有在執行時才有效的重要屬性Canvas是完成繪圖的關鍵。PaintBox部件不能單獨存在於窗體中,必須把它放在固定的分群群組部件中。 

1.3.5 關係圖、文件清單部件 

1.3.5.1 OutLine部件 

        OutLine(略圖)部件在Win 3.1頁上,它適用於顯示分層的數據、文本。在Delphi中,略圖部件具有很寬的設定範圍。它的Lines屬性可以設定每一詞條的文本或數據。一般一個空格相當於一個層次,如果在項目前加一個空格則表示它處於樹的下一層。所以在進行Lines屬性編輯的時候不能用Tab鍵。在程式設計時用LinesItems屬性來存取略圖的標簽、索引及完整的路徑名。OutLineStyle屬性用來組態顯示時關係圖的風格,您可以選取用旁邊有圖示的縮進方式,也可以選擇連線方式。 

1.3.5.2 目錄存取部件 

         Delphi為您提供了強大的文件目錄存取部件。您可以針對具體的用途設計自定義的文件對話方塊。在部件選項板上選中System頁,您將發現這些部件,它們是文件列示方塊FileListBox、目錄列示方塊DirectoryListBox、磁碟機下拉式列示方塊DriveComboBox和過濾式下拉列示方塊FilterComboBox部件。

       文件列示方塊部件FileListBox顯示目前工作目錄中的文件,缺省的設定是顯示所有文件。通過改變Mask屬性來設定過濾器,可以適用DOS的標準通配方式,選擇要顯示的檔案標簽。當指定多個過濾器時,之間用“;”隔開。

         目錄列示方塊部件DirectoryListBox顯示目前磁碟機內的目錄,並且允許用戶在程式執行時切換目錄。Column屬性決定目錄在視窗中用多少列進行顯示,當窗體空間不夠時,用幾列進行顯示將有助於全面地顯示目錄資訊。在Delphi中,當視窗空間顯示不下全部資訊時,將自動加上滾行條,以方便用戶的操作。

       磁碟機下拉式列示方塊部件DriveComboBox顯示目前所在的磁碟機,並且在執行時允許用戶在磁碟機之間切換。作為程式員在應用這一部件時,應考慮當用戶選擇到不存在的磁碟機時,進行容錯、提示處理。

        FilterComboBox(過濾式下拉文件列示方塊)部件顯示目前文件過濾器型式,例如*.**.pas等。在執行時允許用戶在下拉清單中選擇要顯示的文件型式。對Filter屬性進行初始化,就會得到下拉式清單。

        除了以上的四個部件外,在Sample頁上,Delphi還提供了一個目錄略圖部件DirectoryOutline。它將目前磁碟中的目錄結構顯示成一個多層次的略圖,也允許用戶在執行時進行目錄的層次顯示切換。 

1.3.6 卷動部件 

1.3.6.1 ScrollBar部件 

        ScrollBar(滾行條)是在Windows應用程式中常見的結構,在Delphi中多數部件有自己的是否加入滾行條的屬性ScrollBar,但一個獨立的滾行條部件仍是很有意義的。它在部件選項板的Standard頁,提供一種可以改變選擇表或是畫面中可見部分的工具,可以以一定的增量在一定範圍內卷動。Position屬性是個整形值,如果需要以動態的方式顯示滾行條,可以在程式中通過操作這一屬性來實現。 

1.3.6.2 ScrollBox部件 

         ScrollBox(卷動方塊)部件是加上了水準、垂直滾行條的群群群組框部件,它在Additional頁上,用作在窗體中提供一個可以多方向滾行的工具。如果您只想顯示較大幅面的一個部分,並允許您的用戶對其進行滾行操作,ScrollBar將是理想的選擇。您可以先在全幅面的卷動方塊中進行全面設計,然後適當地縮小外框,兩個方向的滾行條將自動顯示。它的Position屬性是整合在HorzScrollBarVertScrollBar兩個集屬性下的,程式設計時,可以選取這兩個屬性進行操作。 

1.3.6.3 幾個進度顯示部件 

         在SystemSampleWin 95OCX等頁上,Delphi還為用戶提供了幾個部件,完成顯示進度,增量等操作。部件Gauge可以顯示成長條狀的或餅狀的進度指示儀表。例如在裝設軟體時,可以程式設計讓這一部件顯示目前裝設的百分比。

  微調按鈕部件SpinButton含有指示向上、向下的兩個按鈕,它可以用來調節數值,使被控制的值按一定的增量單位,由用戶操作遞增或遞減。

  微調編輯框SpinEdit是微調按鈕和編輯框的結合,它在編輯區欄位顯示了數值,又在右側設了微調按鈕,使得用戶選擇調節按鈕或改變數值的方式,來調整數據的值,並返回Value屬性。

         其它的此類部件,因篇幅限制,此處不做贅述。具體部件的資訊,按照標簽在在線輔助敘述中查詢其方法、欄位及應用實例,可以得到詳細應用資料。  

1.3.7 網格、表格部件 

          在Additional頁中,還有字元串表格部件StringGrid,繪圖表格部件DrawGrid等。它們可以用來模擬按網格排列的事物,如成排的按鍵、操縱鈕、字元串等。屬性RowCountColCount設定了在網格中顯示的行列的數目,設定FixedColsFixedRows的值,可以固定一些行列避免執行時被用戶改變。Options集屬性含有字元串表格部件的顯示方式、操作方式等,可以查閱輔助敘述獲得詳細的資訊,此處不再一一表述。

          圖形表格部件DrawGrid使得用戶可以用表格的方式顯示非文本的數據,它的應用面比字元串表格部件更為廣泛,可以把圖片和文本一起放在網格中。

           顏色網格部件ColorGridSample頁上,它提供控制前景色和背景色的介面,通過屬性ForeGroundColorBackGroundColor可以存取到,也可以通過程式,把得到的顏色賦值給其它物件的顏色屬性。

            Sample頁的日曆部件Calendar也是用表格的方式表現的,它提供了一個簡單的以月份為庫單元的日曆表格,通過設定YearMonth的值,可以得到相對應的月份的日曆。 

1.3.8 多媒體(MultiMedia)OLE部件 

            媒體播放器部件MediaPlayerOLE部件可以在System頁上找到。媒體播放器部件在處理多媒體文件時很有用。它顯示一個VCR風格的控制面板,讓您記錄或播放多媒體的圖像、聲音文件。您可以通過屬性的設定來控制部件上的各個按鈕,如改變顯示顏色、增減按鈕數目等。改變一下ColoredButtonsEnabledButtonsVisableButtons的各個子屬性值,您就不難發現它們控制的顯示效果。具體的應用已經超過本簡介的目的,請參閱輔助敘述以及後文的詳細介紹。

            OLE用戶端部件OLEContainer在窗體中建立一個OLE用戶區欄位,用於與Delphi外部的某個物件進行接口。若對外部的Paradox表格、Word文件、擴展頁等進行操作,則物件本身的應用程式必須支援OLE操作。Delphi提供了支援OLE應用的物件清單,按一下ObjClass屬性的省略按鈕,就會顯示出來。具體的應用,請查閱輔助敘述或閱讀後文的詳細闡述。 

            以上,我們介紹了Delphi的基本可視部件。讀者可能會發現,在Stardrad頁最前面的兩個部件MainMenuPopupMenu還沒有提及。因為這是建立選擇表的重要、基本操作,我們將在下一節中做詳細的介紹。另外,在下文中,我們還將介紹比較重要的不可視部件。至於資料庫部件、動態數據交換DDE部件等,因為在後面章節中有詳盡的用法介紹,此處不贅述。 

1.4 使用非可視部件 

              上一節介紹的各種部件,在設計和執行時的形式是一樣的。本節所介紹的部件,在執行時被隱蔽地嵌入到視窗中,它們本身並不做任何事情,必須被用戶的程式所支援才能發生作用。因為部件的設計形狀和執行狀態並不相關,所以,這種部件在設計窗體中的位置無關緊要,可以放在窗體上不影響其它可視部件的任何位置。這種部件,稱之為非可視化部件。

首先,介紹在Standard頁上的重要部件主選擇表MainMenu和彈出式選擇表PopupMenu的詳細用法。 

1.4.1 使用選擇表部件 

            選擇表部件含有內置的互動設計器。在設計選擇表時,可以用選擇表設計器Menu Designer進行工作。

            應用程式的選擇表有兩種形式:MainMenu是一般的Windows用戶介面必須的部件,它顯示在固定的位置,一般用鍵盤和滑鼠左鍵來激活選擇表的功能項;PopupMenu是彈出式選擇表,例如,我們前文的小例程在對齊部件時用到的Delphi選擇表,就是彈出式的。一般以滑鼠的右鍵或其它快速鍵來激活選擇表;選擇表的位置是在螢幕上“浮動”的,根據滑鼠的目前位置決定。

以下,我們將MainMenuPopupMenu統稱為選擇表。 

1.4.1.1 進入選擇表設計器Menu Designer 

             建立選擇表時,首先要在窗體中放置一個選擇表物件。然後調入Menu Designer進行選擇表的詳細設定。用兩種方式可以進入Menu Designer:選中選擇表部件,點動屬性中Items省略按鈕;或在選擇表部件上連續按兩下左鍵,就會出現Menu Designer

1.4.1.2 建立選擇表的各個項目 

          進入Menu Designer,會發現在選擇表的第一項位置上有加亮顯示。輸入頂層選擇表項(實際上是在設定頂層選擇表項的Caption屬性)並回車。一項選擇表條設定完後,加亮顯示的位置被移至下拉方塊的下一項,同時,主選擇表頂層上會出現虛線框,指示出下一個頂層選擇表項的位置。要包含一個隔離條,可以鍵入短劃橫“-”即減號並回車。逐步輸入選擇表的各項,用滑鼠左鍵切換到下一個頂層選擇表,直到選擇表完成。 

1.4.1.3 設定加速鍵和熱鍵 

       您可以設定加速鍵,與前文的例程相同,只需在輸入時,將“&”放到需要指定為加速鍵的字母前面,該字母將被用底線顯示,執行時,按“Alt+加速鍵字母”可以激活該選擇表條。設定熱鍵也是很方便的,只需在Object Inspector中該選擇表條的ShortCut屬性值段的下拉方塊中,為它選取一個熱鍵群群組合即可。在執行時,通過“Ctrl+熱鍵字母”來激活選擇表條。加速鍵和熱鍵並不矛盾,您可以同時指定它們。 

1.4.1.4 使用Menu Designer的彈出式選擇表 

       Menu Designer中還有一個彈出式選擇表,它提供了高頻選擇表建立命令,並可以對模板選項進行快速存取。在選擇表設計器視窗中按一下右鍵,或將遊標停在選擇表設計器上,按Alt-F10,可以調出Menu Designer的彈出式選擇表。使用Menu Designer的彈出式選擇表可以向選擇表增加選擇表項、解除選擇表項等操作,還可以對標準主選擇表模板進行增加、解除、插入等操作。

       為選擇表編制功能,可以連續按兩下選擇表條,或在特定選擇表條的Events頁上,連續按兩下它響應的事件的值段,Delphi將回到代碼編輯器,遊標停在事件對應的事件處理過程中,您可以為選擇表編制實現任務的代碼。

       如果您已經為Speed Bar上的加速按鈕編制了事件處理過程,而需要把相應的選擇表項連接到事件處理過程上,則只需在該選擇表項的Events頁的OnClick事件後,輸入事件處理過程的標簽即可。這樣按一下選擇表項便和按動加速按鈕便實現同樣的功能。 

1.4.1.5 建立巢狀選擇表 

        建立巢狀選擇表也是重要的手段。Delphi的巢狀選擇表風格是巢狀選擇表列在它上層選擇表的邊上,如圖1.11所示: 

        建立巢狀選擇表,把加亮條移到它的上層選擇表條上,按Ctrl+右行鍵,將彈出子選擇表,就可以按照同上所述的方法進行建立工作了。

         通過拖--放操作,可以實現選擇表條的重新定位。用滑鼠左鍵按住某一選擇表條,移動到選擇表的某一位置,釋放左鍵,選擇表條即得到重新定位。選擇表設計器允許選擇表條在頂層下移動位置,支援選擇表條在巢狀選擇表中移進、移出,甚至可以將選擇表條在各個頂層選擇表下屬的選擇表間移動與定位。

1.4.1.6 給選擇表加提示(Hint)

          在選擇表中加提示是很好的習慣。它使得您的用戶在執行選擇表功能前,可以對選擇表的任務有一個簡略的了解。在選擇表條任一項的值段按F1,可以查閱在線輔助敘述,在輔助敘述的正文中找到OnHint並查閱它的例程,將DisplayHint等方法的例程Copy到您的程式中。然後,在選擇表條的Hint屬性中加入提示正文,執行時當用戶將滑鼠移到選擇表項時,在窗體的底部狀態行中會出現Hint屬性中的提示資訊 

1.4.1.7 選擇表的其它屬性簡介 

        選擇表還有其它的一些屬性。Enabled屬性決定選擇表是否被禁用,這在程式設計中可以實現一定情況下不允許用戶使用某項選擇表。Checked屬性表征了選擇表項的開關情況,當CheckedTrue時,選擇表條的前面會出現選中標誌。Visible屬性控制選擇表隱藏與否。設定這一屬性可以實現多版本的選擇表。被隱藏的選擇表項以及它的子選擇表都是不可見的,或是不可存取的。

       Popup Menu在用Menu Designer時是完全相同的。只不過它在執行時和主選擇表的激活形式有所不同:它是用滑鼠的右鍵動作的。彈出式選擇表在一定的視窗範圍內激活,所以必須將視窗和彈出式選擇表聯繫起來。在設計完PopupMenu後,須在Name屬性中為它命名,然後把這個標簽賦給窗體的PopupMenu屬性。這樣,視窗會接收右鍵輸入,並激活彈出式對話方塊。 

1.4.2 使用計時器部件Timer 

       在System頁上,還有一個(Timer計時器)部件,它能夠有規律地觸發OnTimer事件,發送資訊給應用程式。它是編制應用程式時最為重要的部件之一。 

1.4.2.1 Timer的重要屬性 

       Enabled屬性表示了計時器打開還是關閉;用Interval屬性設定兩個OnTimer事件間的間隔,單位是毫秒,也即千分之一秒。將間隔置為0相當於關閉計時器,Interval的最大允許值是32767,也即32.767秒。 

1.4.2.2 使用Timer對程式進行控制 

       計時器是獨立的物件,在啟動與Windows無關的邏輯和應用事件時極其有用。如:用計時器可以模擬時鐘或計時器,可視地顯示經過的時間;可以用作系統延時,Delphi提示資訊出現只需在該區欄位停頓幾秒,就是Timer應用的一個例子;可以檢查系統環境、事件,根據結果進行響應;也可以在視窗中閃爍一段正文或圖像,提示某種操作或處理正在進行等等。

       在窗體中放置一個計時器Timer部件,將它的Interval屬性置為100(每隔10毫秒觸發一次),連續按兩下部件進入代碼編輯器,在它的事件中加入這樣一句程式: 

MessageBeep(0); 

       執行它,會有規律地發出“叮”聲。它給您一個應用Timer部件的直觀印象。

       儘管Delphi的計時器每秒可以產生1000次激發,在程式設計中還必須注意程式對計時器激發的響應。如果程式處理OnTimer事件的時間超過Interval的設定值,就可能錯過事件,因為當下一次激發到來時,系統正忙於處理上一事件,則這次激發就會被忽略。同時要注意其它的Windows應用程式是否會影響計時器的觸發。如果後台正執行著一個佔用處理器的程式,就可能會導致Timer的觸發不準確,從而使前台程式執行出現錯誤。 

1.4.3 使用公用對話方塊部件 

      Delphi為您在Dialogs頁上提供了幾個標準對話方塊,它們是文件打開OpenDialog;文件存檔SaveDialog;字形Fontdialog;顏色ColorDialog;列印PrintDialog;列印設定PrintsetupDialog;找到FindDialog;覆寫ReplaceDialog等部件。


後一頁
前一頁
回目錄
回首頁