2013-01-21 38 views
2

我最近做了Inno Setup的切換,這太棒了! 我幾乎能夠獲得大部分的工作,除了我在遇到麻煩之外。Inno Setup PageDescriptionLabel重疊在一起

基本上,我試圖創建自己的頁眉設計,並試圖使頁面標題/頁面描述透明。但是,它們在換頁時互相重疊。 (請參考圖片)。

http://img703.imageshack.us/img703/6180/88647320.png

代碼:

procedure InheritBoundsRect(ASource, ATarget: TControl); 
begin 
    ATarget.Left := ASource.Left; 
    ATarget.Top := ASource.Top; 
    ATarget.Width := ASource.Width; 
    ATarget.Height := ASource.Height; 
end; 

procedure CurPageChanged(CurPageID: Integer); 
var 
    TD: TLabel; 
begin 
    TD := TLabel.Create(WizardForm); 
    TD.Parent := WizardForm.PageDescriptionLabel.Parent; 
    TD.Caption := WizardForm.PageDescriptionLabel.Caption; 
    TD.WordWrap := WizardForm.PageDescriptionLabel.WordWrap; 
    TD.Transparent := True; 
    InheritBoundsRect(WizardForm.PageDescriptionLabel, TD); 
    TD.AutoSize := True; 
end; 

而且,我甚至不知道這是這樣,如果任何人有任何建議,I'de喜歡聽他們的最好方式。

+0

我相信我知道這個問題,我創建一個新的「的TLabel」每次形式被改變,過程中的新的將在另一個之上創建;不過,我仍然不太確定如何解決這個問題。 –

回答

4

正如您已經正確指出的那樣,您多次創建標籤。更具體地說,每次顯示新頁面時(每次按下下一個或後退按鈕時)。您只需要創建標籤一次,理想情況下在嚮導窗體初始化事件中,如InitializeWizard。除此之外,每次頁面更改時都需要更改標籤的標題。最好爲此,您需要使用CurPageChanged事件。因此,爲了使透明頁面描述標籤(我錯過了),你可以使用腳本像如下:

[Code] 
var 
    DescLabel: TLabel; 

procedure InheritBoundsRect(ASource, ATarget: TControl); 
begin 
    ATarget.Left := ASource.Left; 
    ATarget.Top := ASource.Top; 
    ATarget.Width := ASource.Width; 
    ATarget.Height := ASource.Height; 
end; 

procedure InitializeWizard; 
begin 
    DescLabel := TLabel.Create(WizardForm); 
    DescLabel.Parent := WizardForm.PageDescriptionLabel.Parent; 
    DescLabel.WordWrap := WizardForm.PageDescriptionLabel.WordWrap; 
    DescLabel.AutoSize := WizardForm.PageDescriptionLabel.AutoSize; 
    DescLabel.Transparent := True; 
    InheritBoundsRect(WizardForm.PageDescriptionLabel, DescLabel); 

    WizardForm.PageDescriptionLabel.Visible := False; 
end; 

procedure CurPageChanged(CurPageID: Integer); 
begin 
    DescLabel.Caption := WizardForm.PageDescriptionLabel.Caption; 
end; 
+0

謝謝你TLama!我今天成爲了你的粉絲。 我今天所有的問題,主要是你在Stackoverflow上回答的。 –

+0

對不起TLama,我實際上已經嘗試過這種方法,並且問題是每次頁面改變時都沒有改變。它以TD爲「*」開始,TD保持這種狀態。這就是爲什麼我轉移到CurPageChanged。所以基本上,它仍然沒有完全工作。 有沒有一種方法可以在全球範圍內定義TD,只需更改換頁上的值?或者另一種方式? –

+0

對不起,我的壞。我錯過了該標籤的目的。立即查看更新... – TLama