2010-09-15 30 views
-1

下面的代碼工作!問題打開窗體與預定義的標籤頁

with pagecontrol1 do 
begin 
    case Myindex of 
    0: activepage := tabsheet1; 
    1: activepage := tabsheet2; 
    2: activepage := tabsheet3; 
    end; 
end; 
show; 

下面的代碼不起作用

with pagecontrol1 do 
begin 
    case Myindex of 
    0: activepage := tabsheet1; 
    1: activepage := tabsheet2; 
    2: activepage := tabsheet3; 
    end; 
end; 
showmodal; 

如何解決這個問題?

+3

你能更準確嗎?問題是什麼?在調用showmodal後會發生什麼? – splash 2010-09-15 12:22:30

+3

你從哪個方法調用該代碼,它似乎是一個表單的一部分。這將有助於爲這個問題添加上下文。 – 2010-09-15 12:31:44

+4

你將不得不定義「不工作」以及你期望發生的事情。 – 2010-09-15 13:02:53

回答

0

的問題是,當我創建在運行時的新形式,和以前我用的ShowModal設置活動頁面,命令似乎被忽略,但是如果我告訴它作爲正常的「秀」它的工作原理。

我做了一個辦法解決這個人們使用PostMessage的那麼該命令可以顯示模式窗體後觸發interrested。

... 
private 
    Procedure WM_UserPage(var Msg: TMessage); message WM_USER+1; 
... 

procedure TForm2.UserPage(var Msg: TMessage); 
begin 
    with pagecontrol do 
    case Msg.LParam of 
    0: activepage := tabsheet1; 
    1: activepage := tabsheet2; 
    2: activepage := tabsheet3; 
    end; 
end; 

from my first form I call : 

procedure TForm1.ShowPage(PageNumber: integer); 
var 
    MyForm : TForm2; 
begin 
    MyForm := TForm2.create(self); 
    with MyForm do 
    try 
    PostMessage(MyForm.Handle, WM_USER+1, 0, PageNumber); 
    showmodal; 
    finally 
    FreeAndNil(MyForm); 
    end; 
end;