【问题标题】:TPageControl and StartmarginTPageControl 和 Startmargin
【发布时间】:2012-07-04 16:24:21
【问题描述】:

我需要TPageControl 的属性,例如TTabSet 中的StartMargin。有谁知道,我如何在TPageControl 中创建StartMargin 属性?

对于不熟悉 StartMargin 的任何人,以下是其文档中的相关文本:

确定第一个选项卡从选项卡集控件的左边缘出现的距离(以像素为单位)。

【问题讨论】:

  • @David,我不熟悉它,但据我所知,TPageControl 实际上并不包含 TTabset。所以OP所要求的至少是棘手的。所以使用实际的 TTabSet 看起来是最好的方法。

标签: delphi delphi-xe


【解决方案1】:

如果我理解正确,那么您可以使用标准控件来执行此操作。

在对象检查器中设置 TPageControl --> Margins --> Left 说 50。然后将 AlignWithmargins 设置为 True。

同样适用于 TTabSheet

或者你需要一些不同的东西?

编辑参考您的评论: 这同样适用于 TTabSet:设置左边距、AlignWithMargins 并在面板上对齐顶部。 这会给你你的效果。但是现在你必须管理自己的页面可见性和页面切换:(

【讨论】:

  • TTabSheet 的左边是 50,如果我能做到的话。我不希望 TTabSheet 位置发生变化或移动。您知道顶部或底部的选项卡按钮(如果 TabPosition 是 tpTop 或 tpBottom)(TabSheet1、TabSheet2 等)只是这些按钮的起始位置(或左侧位置)从不同的位置改变。 ----------|----------| |TS1 |TS2 | ----------|---------|----------| | | |
【解决方案2】:

或者,对于多版本解决方案:

uses 
  ..., 
  CommCtrl; 

type 
  TPageControl = class(ComCtrls.TPageControl) 
  private 
    procedure TCMAdjustRect(var Msg: TMessage); message TCM_ADJUSTRECT; 
  end; 

  TForm1 = class(TForm) 
    ... 
  end; 

... 

procedure TPageControl.TCMAdjustRect(var Msg: TMessage); 
begin 
  inherited; 
  if Msg.WParam = 0 then
    Inc(PRect(Msg.LParam)^.Left, 50)
  else
    Dec(PRect(Msg.LParam)^.Left, 50);
end;

【讨论】:

  • 这是移动 TTabSheet。对 TPageControl 按钮(Tabsheet1、TabSheet2)不受影响,按钮仍然在同一位置。我需要 TTabSheets 在相同的位置,只有按钮移动到不同的位置。
  • 那么这个问题实际上是你自己的重复问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多