绘制主题按钮我使用此代码:
var
h: HTHEME;
begin
if UseThemes then begin
SetWindowTheme(Handle, 'explorer', nil);
h := OpenThemeData(Handle, 'WINDOW');
if h <> 0 then
try
DrawThemeBackground(h, Canvas.Handle, WP_CLOSEBUTTON, GetAeroState, ClientRect, nil);
finally
CloseThemeData(h);
end;
end
else
DrawFrameControl(Canvas.Handle, ClientRect, DFC_CAPTION, DFCS_CAPTIONCLOSE or GetClassicState)
end;
Run Code Online (Sandbox Code Playgroud)
此代码工作正常但绘制的按钮看起来像是从Windows 7主题,甚至在Windows 8或10上.这可以使用Windows 10或8主题绘制关闭按钮?
我的记录中有这样的静态类过程:
TRec = record
class procedure Proc; stdcall; static;
end;
Run Code Online (Sandbox Code Playgroud)
现在我需要在我的记录中使用这样的类程序数组:
TRec2 = record
Procs: array of TClassProcStdcallStatic;
end;
Run Code Online (Sandbox Code Playgroud)
这是可能的,如何确定TClassProcStdcallStatic?
我试图在主窗体“并排”之后对齐我的子窗体,但有一些困难
要重现该问题,请创建新的 VCL 应用程序并在表单中添加一个按钮:
procedure TForm1.Button1Click(Sender: TObject);
var
Form: TForm1;
begin
Application.CreateForm(TForm1, Form);
Form.BorderStyle := bsSingle;
Form.Left := Left + Width;
Form.Top := Top;
Form.Show;
end;
Run Code Online (Sandbox Code Playgroud)
结果:
使用后Winapi.DwmApi:
DXR1 := 0;
DXL2 := 0;
if (Win32MajorVersion >= 6) and DwmCompositionEnabled then begin
DwmGetWindowAttribute(Handle, DWMWA_EXTENDED_FRAME_BOUNDS, @R1, SizeOf(R1));
Winapi.Windows.GetWindowRect(Handle, R2);
DXR1 := R2.Right - R1.Right;
DYT1 := R2.Top - R1.Top;
end;
FormJob.Left := Left + Width - DXR1;
FormJob.Top := Top - DYT1;
FormJob.Show;
if (Win32MajorVersion …Run Code Online (Sandbox Code Playgroud) 这是重现问题的非常小的项目(VirtualStringTree版本6.5):
type
TForm1 = class(TForm)
vstTest: TVirtualStringTree;
Images: TImageList;
procedure FormCreate(Sender: TObject);
procedure vstTestGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex;
TextType: TVSTTextType; var CellText: string);
procedure vstTestGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind;
Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex);
private
{ Private declarations }
public
{ Public declarations }
end;
PTestRec = ^TTestRec;
TTestRec = record
Col1: string;
Col2: string;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
Node: PVirtualNode;
Data: PTestRec;
begin
vstTest.Header.Columns.Add;
vstTest.Header.Columns.Add;
vstTest.Header.Options := …Run Code Online (Sandbox Code Playgroud) delphi virtualtreeview tvirtualstringtree delphi-10.1-berlin
我有带有注释的stringlist(比如Ini文件部分内容):
;comment c
c=str1
;comment b
b=str2
;comment a
a=str3
Run Code Online (Sandbox Code Playgroud)
任何想法如何按名称对此列表进行排序:
;comment a
a=str3
;comment b
b=str2
;comment c
c=str1
Run Code Online (Sandbox Code Playgroud)
对于对的注释应该在排序期间与对链接