2017-09-03 58 views
2

我有一個簡單的IntraWeb的測試項目中,我的1單元有3個地區的IWform:頭部,身體&頁腳如下:更改IntraWeb的IWFrames在運行時

type 
    TIWForm1 = class(TIWAppForm) 
    Body_Region: TIWRegion; 
    Header_Region: TIWRegion; 
    Footer_Region: TIWRegion; 
    public 
    end; 

implementation 

{$R *.dfm} 


initialization 
    TIWForm1.SetAsMainForm; 

end. 

我UNIT2和UNIT3是一個IWFrame他們僅具有如下的按鈕:

type 
    TIWFrame2 = class(TFrame) 
    IWFrameRegion: TIWRegion; 
    Button1: TButton; 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

implementation 

{$R *.dfm} 

end. 

單元3相同UNIT2)現在

,我可以分配一個幀,以在設計時通過將框架形成工具板而容易地在該區域中設計身體區域。

問題是如何在運行時將其更改爲unit3 Frame?

如果我試圖將它添加到像這樣輸入

type 
    TIWForm1 = class(TIWAppForm) 
    Body_Region: TIWRegion; 
    Header_Region: TIWRegion; 
    Footer_Region: TIWRegion; 

    MyFram2: TIWFrame2; // added here 

    procedure IWAppFormShow(Sender: TObject); 
    public 
    end; 

系統嘗試刪除部分!

如果我強行把它用它作爲

Body_Region.Parent := MyFram2; 

我沒有什麼主體區!

如果我在設計時手動添加它,我得到了相同的聲明,我知道它工作,但我無法改變它!

我錯過了這裏的東西,或者這是不可能的嗎?

btw我在德爾福柏林10.1和IW14.1.12。

回答

2

聲明字段的「刪除」不是IntraWeb的事情,而是Delphi的「特性」。聲明像這樣,一個「私人」部分,否則將被視爲出版裏面:

TIWForm1 = class(TIWAppForm) 
    Body_Region: TIWRegion; 
    Header_Region: TIWRegion; 
    Footer_Region: TIWRegion; 
    procedure IWAppFormCreate(Sender: TObject); // use OnCreate event 
private 
    FMyFram2: TIWFrame2; // put it inside a "Private" section. 
    FMyFram3: TIWFrame3; 
public 
end; 

刪除OnShow中事件並使用OnCreate事件來代替。 OnCreate事件中創建你的框架的情況下,像這樣:

procedure TIWForm1.IWAppFormCreate(Sender: TObject); 
begin 
    FMyFram2 := TIWFrame2.Create(Self); // create the frame 
    FMyFram2.Parent := Body_Region;  // set parent 
    FMyFram2.IWFrameRegion.Visible := True; // set its internal region visibility. 

    // the same with Frame3, but lets keep it invisible for now 
    FMyFram3 := TIWFrame3.Create(Self); 
    FMyFram3.Parent := Body_Region;   
    FMyFram3.IWFrameRegion.Visible := False; 

    Self.RenderInvisibleControls := True; // tell the form to render invisible frames. They won't be visible in the browser until you make them visible 
end; 

然後你就可以做出一個可見的和其他隱形鑲嵌Frame.IWFrameRegion知名度,如上圖所示。