delphi - 在 Firemonkey 中向 TTabControl 添加图标

标签 delphi firemonkey delphi-xe5

首先我必须说我已经读过this SO的问题。但实际上这对我没有帮助。

我想向 TTabControl 添加图标,但这似乎不像在 VCL (TPageControl) 中那样容易。如您所知,TTabControl 中没有类似 Image Index 的内容。

那么最简单的方法是什么?

感谢您的帮助。

最佳答案

考虑到练习固有的“复制和粘贴“继承”性质,我建议不要走修改样式的路线,如果您的目标不止一个,这就会成为一个问题操作系统(甚至只是 Windows 7 和 Windows 8.x)。相反,试试这个:

1) 对于您想要图标的每个项目,将其 TextAlign 属性更改为 taTrailing 并用四个前导空格字符填充其 Text .

2) 将一个 TImage 添加到每个选项卡的表单中,并根据需要将小位图加载到其中。

3) 通过(例如)将其 TagObject 属性分配给表单的 OnCreate 处理程序中的图像控件,将每个选项卡项与其图像相关联:

procedure TForm1.FormCreate(Sender: TObject);
begin
  TabItem1.TagObject := Image1;
  //...
end;

4) 为每个选项卡项的 OnPaint 事件分配以下共享事件处理程序:

procedure TForm1.TabItemPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
var
  B: TBitmap;
  SrcR, DstR: TRectF;
  TabItem: TTabItem;
begin
  TabItem := (Sender as TTabItem);
  B := (TabItem.TagObject as TImage).Bitmap;
  SrcR := RectF(0, 0, B.Width, B.Height);
  DstR := SrcR;
  DstR.Fit(RectF(ARect.Left, ARect.Top, ARect.Left + ARect.Height, ARect.Bottom));
  if not TabItem.IsSelected then DstR.Offset(0, 1);
  Canvas.DrawBitmap(B, SrcR, DstR, 1);
end;

关于delphi - 在 Firemonkey 中向 TTabControl 添加图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21317849/

相关文章:

windows - 我如何使用 Delphi 跟踪 COM+ 事件调用?

delphi - D2007 ClientDataset

delphi - 如何在Delphi中将SOAP元素名称更改为保留字?

德尔福XE2 : Possible to instantiate a FireMonkey Form in VCL application?

Delphi 界面帮助程序/解决方法

delphi - DeferWindowPos 是否与 VCL 配合良好?

ios - Delphi xe4-如何通过HTTP访问Foursquare API

ios - 在哪里可以找到用于创建 iPad 应用程序的 Delphi 资源?

delphi - 如何去除TWebBrowser的边框和滚动条?

android - 使用 Delphi XE5 for Android 创建 WifiConfiguration