使用预定义的标签页打开表单时出现问题

时间:2010-09-15 12:14:09

标签: delphi

以下代码有效!

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;

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题是当我在运行时创建一个新表单,并在使用showmodal之前设置活动页面时,该命令似乎被忽略,但是如果我将其显示为正常“show”则可行。

我为那些因使用postmessage而感兴趣的人做了一个解决方法,因此在显示模态表单后可以触发命令。

...
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;