2011-12-05 68 views
9

我使用的是delphi 7,我試圖製作一個嚮導界面。我不知道是否有更簡單的方法來製作嚮導,因此我正在考慮爲嚮導的每個步驟製作單獨的表單,並且當用戶單擊「下一步」時,活動表單將關閉,並打開下一個表單。在delphi 7中製作嚮導界面

下面是兩個連續的形式截屏:screen-shot

我做了取2種形式參數的過程:將要關閉的形式和嚮導的下一個形式

class Procedure Tspad.nextForm(showForm, closeForm: TForm); 
begin 
    closeForm.Close; 
    showForm.Showmodal; 
end; 

當我點擊執行如下因素代碼「下一步」按鈕:

Tspad.nextForm(echipContractForm, clientContractForm); 

當我運行該程序,我按下「Next」按鈕,接下來形式apeare不過,醫生並不關閉。

我該如何做這項工作,或者是否有另一種更有效的方法來創建嚮導?

+4

使用TPageControl:http://delphi.about.com/od/delphitips2007/qt/hidepagectrltab.htm – SimaWB

+3

項目絕(JVCL)具有稱爲[TJvWizard](HTTP嚮導部件://wiki.delphi-jedi。組織/維基/ JVCL_Help:TJvWizard)。 –

回答

20

製作嚮導的一種非常常見的方式是使用頁面控件。嚮導的每個不同頁面都是頁面控件中的不同頁面/選項卡。我相信這是Windows如何實現嚮導的有效方法。

當然你想隱藏所有的選項卡。通過爲每個標籤頁設置TabVisibleFalse來完成此操作。當您想要通過嚮導向前和向後移動時,例如當用戶點擊下一個或上一個按鈕時,根據您的偏好設置ActivePageActivePageIndex

+0

這就是我過去的做法。爲你的嚮導提供一個單獨的表單,帶有頁面控件和一些按鈕。 –

+0

我同意這一點,但也同意LaKraven的想法是每頁創建一個表單,並在運行時停靠頁面。否則巫師往往會變成一個巨大的意大利麪條球。 –

+0

@Warren LaKraven實際上是在暗示框架而不是形式,我推測在設計時將它們對接。但是,無論哪種方式都行得通,並且可以成爲保持意大利麪條的絕佳技術,我同意。 –

14

在單一表單上顯示內容的劃分的一個好方法是使用框架

一個框架是很多像一個形式,但它沒有窗戶自身,而是坐在一個主機表內。

當(大衛赫弗南曾建議)一TPageControl甚至TNotebook組合(這是非常,很多一模一樣的TPageControl,只是它沒有標籤開始與),你結束了一個易於維護的嚮導。

+2

+1,但'TNotebook'有點古怪。它看起來對我來說很遺憾,可能有點難以使用。 –

+0

我提到它,因爲我不記得,如果TPageControl在Delphi 7確實存在(我用了很多這些天,但不記得曾經看到它大約德爾福7) – LaKraven

+2

是的,它存在於D7和長期在此之前也 –

2

您可以測試一些可以幫助您完成此任務的組件(內部使用tPageControl或TNotebook)。見this link

問候。

11

JVCL以非常簡單有效的方式製作嚮導很好控制(TJvWizard)。見http://jvcl.delphi-jedi.org/

+0

同意。爲您節省大量時間重新發明輪子。 –

0

你也可以考慮TMS TAdvSmoothStepControl(不是免費的!)。 另一個解決方案,但只對程序「外部」,即使是「非安裝設置」目的,也可以使用Inno Setup來製作嚮導。

其實與Inno Setup的,你可以讓很多認爲(修改.ini文件和註冊表,啓動/停止程序...),可以是有益的不「安裝」程序的嚮導。

+1

答案中的最後一條語句假定OP正在嘗試生成安裝嚮導。截圖顯示不然。我建議從編輯你的答案的一部分,留下TAdvSmoothStepControl的建議(這是肯定的一個很好的分量) – LaKraven

+0

@LaKraven雖然Inno Setup的主要用途是創建一個安裝設置,你也可以使用它(有一些黑客)作爲簡單操作的嚮導,如關閉程序,根據用戶選擇更改.ini文件,然後再次運行程序。可能是所有人都不清楚,我會編輯我的答案。 – philnext