我有一个TabControl
每个选项卡代表一组不同的数据.我的应用程序使用VCL Styles
,从而设置OwnerDraw
到True
不会导致OnDrawTab
被调用.我想知道是否有可能以某种方式拦截使用VCL Styles
(在我的情况下TabControl
)绘制特定控件的例程,并改变控件的绘制方式(例如,更改Canvas.Font
等).
Delphi XE3及以下版本的应用程序风格很酷.但我注意到我们可以根据需要标记多种样式,并选择使用哪种样式作为默认样式.
这意味着我们可以随意更改样式,但如何在代码中执行?如何让用户选择在我们的软件中使用哪种风格?
我是德尔福程序员,我有一个问题.我使用TStyleManager创建一个表单,并在我的应用程序上使用外观.但我也想在我的应用程序中使用Drag-n-Drop文件.我怎么能意识到这一点?我尝试了很多方法,但是......我无法做到.希望对你有所帮助
我正试图从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) 我试图为TComboBox的背景着色,启用VCL样式,就像它在本文中描述的那样,但它不起作用.
如何禁用Delphi 10.1 Berlin的PopupMenu/Menu的VCL样式?
因为长菜单无法正常运行.所以,我想将windows样式用于菜单/弹出菜单项.
这可能吗?
我在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),此代码可以正常工作.
为了覆盖TPanel的Paint程序在delphi 7中使背景颜色变为clwhite,我正在关注@RRUZ答案,但我找不到TCustomStyleServices类.
还有其他方法可以做我想要的吗?
我正在使用XPMan资源(IDK如果改变了什么).
我正在尝试VCL样式.这可能是一个愚蠢的问题,但是在使用样式时是否可以使用不同背景的表单?似乎表单背景(客户区)在VCL样式设计器中指定,它覆盖了表单的Color
属性.
如何获得不同背景颜色的表格?例如,我希望我的模态对话框具有与主窗体不同的背景颜色.
我试图通过以下功能设置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) 我想基于设计模板对旧的VCL应用程序进行现代化.该设计模板包含不同的按钮样式.比方说,有三种类型的按钮:LightButton
,DarkButton
和GreenButton
.
由于DarkButton
我TButton
使用位图样式设计器修改了暗设计的外观,因此超过50%的按钮都会出现.
现在我想将其他按钮样式添加到.vsf
文件中并在我的应用程序中使用它.最好的方法是什么?
我是否需要创建新的按钮类和新的后代,TStyleHook
其中绘制全新的按钮?如果是,是否有办法尽可能多地重用代码Vcl.StdCtrls.TButtonStyleHook
?
还有其他方法,最佳实践或示例吗?
我已将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 ×12
vcl-styles ×12
delphi-xe2 ×5
vcl ×2
bidi ×1
components ×1
delphi-7 ×1
delphi-xe3 ×1
delphi-xe7 ×1
listview ×1