标签: vcl-styles

是否可以在运行时修改VCL样式?

我有一个TabControl每个选项卡代表一组不同的数据.我的应用程序使用VCL Styles,从而设置OwnerDrawTrue不会导致OnDrawTab被调用.我想知道是否有可能以某种方式拦截使用VCL Styles(在我的情况下TabControl)绘制特定控件的例程,并改变控件的绘制方式(例如,更改Canvas.Font等).

delphi delphi-xe2 vcl-styles

2
推荐指数
1
解决办法
1655
查看次数

我们如何在运行时检测和更改样式?

Delphi XE3及以下版本的应用程序风格很酷.但我注意到我们可以根据需要标记多种样式,并选择使用哪种样式作为默认样式.

这意味着我们可以随意更改样式,但如何在代码中执行?如何让用户选择在我们的软件中使用哪种风格?

delphi vcl-styles delphi-xe3

2
推荐指数
1
解决办法
6347
查看次数

Delphi:Vcl Styles&Drag-n-Drop

我是德尔福程序员,我有一个问题.我使用TStyleManager创建一个表单,并在我的应用程序上使用外观.但我也想在我的应用程序中使用Drag-n-Drop文件.我怎么能意识到这一点?我尝试了很多方法,但是......我无法做到.希望对你有所帮助

delphi drag-and-drop delphi-xe2 vcl-styles

1
推荐指数
1
解决办法
778
查看次数

绘画背景从TSeStyleFont

我正试图从TSeStyleFont中绘制vcl样式背景,就像在Bitmap样式设计器中一样..有没有办法绘制背景?

在此输入图像描述

我试了一下: - 使用DrawElement在位图中首先绘制对象. - 比使用'Bitmap.Canvas.CopyRect'将当前位图复制到另一个干净的位图,问题是:这个方法对于具有Glyph的对象(如CheckBox)无法正常工作...

  var
  bmp, bmp2: TBitmap;
  Details: TThemedElementDetails;
  R, Rn: TRect;
begin
  bmp := TBitmap.Create;
  bmp2 := TBitmap.Create;
  R := Rect(0, 0, 120, 20);
  Rn := Rect(0 + 4, 0 + 4, 120 - 4, 20 - 4);
  bmp.SetSize(120, 20);
  bmp2.SetSize(120, 20);
  Details := StyleServices.GetElementDetails(TThemedButton.tbPushButtonHot);
  StyleServices.DrawElement(bmp.Canvas.Handle, Details, R);
  bmp2.Canvas.CopyRect(R, bmp.Canvas, Rn);
  Canvas.Draw(10, 10, bmp2);
  bmp.Free;
  bmp2.Free;

end;
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe2 vcl-styles

1
推荐指数
1
解决办法
576
查看次数

1
推荐指数
1
解决办法
4476
查看次数

如何禁用Delphi 10.1 Berlin的PopupMenu/Menu的VCL样式?

如何禁用Delphi 10.1 Berlin的PopupMenu/Menu的VCL样式?

因为长菜单无法正常运行.所以,我想将windows样式用于菜单/弹出菜单项.

这可能吗?

delphi vcl-styles

1
推荐指数
1
解决办法
515
查看次数

使用VCL主题在FormClose中获取访问冲突错误

我在VCL开发了一个使用VCL主题的应用程序.此应用程序需要TPageControl和内部(子)形式.

每个子表单在OnClose中具有相同的方式:Parent.Destroy;

 MsgResp := MessageDlg('Closing info....', mtWarning, [mbYes, mbNo, mbCancel], 0);
  case MsgResp of
    mrYes:
      begin
        DoSomething; {Save something}
        Parent.Destroy;
      end; 
    mrNo:
      begin
        Parent.Destroy;
      end;
    mrCancel:
      begin
        Exit;
      end;
 end;
Run Code Online (Sandbox Code Playgroud)

如果我将主题设置为像Sapphire Kamri(或其他)的应用程序,我在破坏父组件时会出现访问冲突错误.但是,如果我使用默认样式(Windows),此代码可以正常工作.

delphi vcl vcl-styles

1
推荐指数
1
解决办法
343
查看次数

Delphi 7中有一个TCustomStyleServices?

为了覆盖TPanel的Paint程序在delphi 7中使背景颜色变为clwhite,我正在关注@RRUZ答案,但我找不到TCustomStyleServices类.

还有其他方法可以做我想要的吗?

我正在使用XPMan资源(IDK如果改变了什么).

delphi components delphi-7 vcl-styles

0
推荐指数
1
解决办法
309
查看次数

使用VCL样式形成背景颜色?

我正在尝试VCL样式.这可能是一个愚蠢的问题,但是在使用样式时是否可以使用不同背景的表单?似乎表单背景(客户区)在VCL样式设计器中指定,它覆盖了表单的Color属性.

如何获得不同背景颜色的表格?例如,我希望我的模态对话框具有与主窗体不同的背景颜色.

delphi delphi-xe2 vcl-styles

0
推荐指数
1
解决办法
2192
查看次数

使用VCL样式时的TListView滚动错误 - Delphi XE8

我试图通过以下功能设置TListView控制方向RTL:

procedure RTL_LV(lv:TListView);
const
  LVM_FIRST = $1000;
  LVM_GETHEADER = LVM_FIRST + 31;
var
  header: THandle;
begin
  header:= SendMessage (lv.Handle, LVM_GETHEADER, 0, 0);
  SetWindowLong (header, GWL_EXSTYLE,
                 GetWindowLong (header, GWL_EXSTYLE)  or
                 WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);

  SetWindowLong (lv.Handle, GWL_EXSTYLE,
                 GetWindowLong (lv.Handle, GWL_EXSTYLE)  or
                 WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT);
  lv.invalidate;
end;
Run Code Online (Sandbox Code Playgroud)

但是当项目使用时,我有两个问题如下VCL Styles:

1:Vertical scrollbar没有点击它就不会出现.

在此输入图像描述

2:当我更改ListView列的大小并horizontal scrollbar单击时,将显示以下错误消息:

在此输入图像描述

例外来源: Vcl.ComCtrls.TListViewStyleHook.WMMouseMove

在此输入图像描述

procedure TListViewStyleHook.WMMouseMove(var Message: TWMMouse);
var
  SF: TScrollInfo;
  SPos: Integer;
  R: TRect;
begin
  if VertSliderState = tsThumbBtnVertPressed then
  begin …
Run Code Online (Sandbox Code Playgroud)

delphi listview bidi right-to-left vcl-styles

0
推荐指数
1
解决办法
682
查看次数

最简单的方式来显示不同风格的按钮

我想基于设计模板对旧的VCL应用程序进行现代化.该设计模板包含不同的按钮样式.比方说,有三种类型的按钮:LightButton,DarkButtonGreenButton.

由于DarkButtonTButton使用位图样式设计器修改了暗设计的外观,因此超过50%的按钮都会出现.

现在我想将其他按钮样式添加到.vsf文件中并在我的应用程序中使用它.最好的方法是什么?

我是否需要创建新的按钮类和新的后代,TStyleHook其中绘制全新的按钮?如果是,是否有办法尽可能多地重用代码Vcl.StdCtrls.TButtonStyleHook

还有其他方法,最佳实践或示例吗?

delphi vcl vcl-styles delphi-10.1-berlin

0
推荐指数
1
解决办法
305
查看次数

使用从Delphi XE7到Delphi XE2的VCL样式

我已将C:\ Program Files(x86)\ Embarcadero\Studio\15.0\Redist\styles\vcl中的所有文件复制到C:\ Program Files(x86)\ Embarcadero\RAD Studio\9.0\Redist\styles\vcl

在我的XE2 IDE中,我转到Projects-> Options-> Application-> Appearance,并且不显示XE7中的其他样式.

我还将C:\ Users\Public\Documents\Embarcadero\Studio\15.0\Styles复制到C:\ Users\Public\Documents\RAD Studio\9.0\Styles,但它会使所有样式消失.

如何让XE2 IDE从另一个版本的IDE中读取新样式?

谢谢.

delphi delphi-xe2 vcl-styles delphi-xe7

-1
推荐指数
1
解决办法
774
查看次数