小编Ale*_*rov的帖子

Windows 10关闭,最小化和最大化按钮

绘制主题按钮我使用此代码:

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主题绘制关闭按钮?

在此输入图像描述

winapi windows-themes

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

参考课程

我的记录中有这样的静态类过程:

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?

arrays delphi types delphi-xe7

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

获取表单的大小和边框

我试图在主窗体“并排”之后对齐我的子窗体,但有一些困难

要重现该问题,请创建新的 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)

结果:

Windows 7的: 在此处输入图片说明

视窗 10: 在此处输入图片说明

使用后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)

delphi winapi window

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

TVirtualStringTree中的图标绘有异常

这是重现问题的非常小的项目(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

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

如何使用注释对stringlist进行排序

我有带有注释的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)

对于对的注释应该在排序期间与对链接

delphi delphi-xe8

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