小编Sal*_*dor的帖子

我如何确定是否实现了抽象方法?

我使用的是一个非常大的delphi第三方库,没有源代码,这个库有几个带抽象方法的类.我需要确定运行时Descendant类实现abtract方法的时间,以避免EAbstractError: Abstract Error向用户显示自定义消息或使用其他类代替.

例如,在此代码中,我想在运行时检查是否MyAbstractMethod已实现.

type
  TMyBaseClass = class
  public
    procedure MyAbstractMethod; virtual; abstract;
  end;

  TDescendantBase = class(TMyBaseClass)
  public
  end;

  TChild = class(TDescendantBase)
  public
    procedure MyAbstractMethod; override;
  end;

  TChild2 = class(TDescendantBase)
  end;
Run Code Online (Sandbox Code Playgroud)

我如何确定在运行时的Descendant类中是否实现了抽象方法?

delphi delphi-xe

10
推荐指数
3
解决办法
2597
查看次数

在delphi 2007中启动挂起线程的正确方法是什么?

在delphi XE中我可以使用启动过程,但这种方法在delphi 2007中不存在.

这个示例代码在delphi xe中运行正常,使用Start

MyThread:=TMyThread.Create(True);
MyThread.FreeOnTerminate    :=True;
MyThread.Property1:=900;
MyThread.Property2:=2;
MyThread.Start;
Run Code Online (Sandbox Code Playgroud)

但是在delphi 2007中,该start过程不存在,所以我使用的是在新版本的delphi中不推荐使用的简历过程.

MyThread:=TMyThread.Create(True);
MyThread.FreeOnTerminate    :=True;
MyThread.Property1:=900;
MyThread.Property2:=2;
MyThread.Resume;
Run Code Online (Sandbox Code Playgroud)

所以quieon是,resume在delphi 2007中可以使用,或者我必须使用另一种方式来启动一个被挂起的线程?

提前致谢.

delphi multithreading delphi-2007

9
推荐指数
2
解决办法
5351
查看次数

获取char的ascii值,使用C++中的Ord等价物

在delphi中存在一个函数Ord,该函数返回序数类型表达式的序数值.

例如,您可以通过这种方式检索char的Ascii值

奥德('A')回归65

奥德('a')返回97

在C++中我必须使用哪个函数来获取Char的ascii值.

c++ delphi

9
推荐指数
3
解决办法
5万
查看次数

如何创建一个独立的(没有DLL文件依赖项)C++ Builder控制台应用程序,如Delphi应用程序?

当我创建Delphi控制台应用程序时,我可以部署生成的EXE文件而不必担心外部DLL文件.但是如果我创建非常简单的C++ Builder(版本2007)控制台应用程序(没有VCL),则EXE文件需要CC3280MT.dll运行该文件.

如何避免我的C++ Builder控制台应用程序需要该CC3280MT.dll文件?

即使这个简单的代码也会导致这种依

#include <iostream.h>
#pragma hdrstop

#pragma argsused
int main(int argc, char* argv[])
{
    cout << "Hello" << endl;
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ delphi c++builder

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

如何在启用VCL样式时创建透明表单?

我正在使用以下代码使表单透明,但是当应用程序启用了VCL样式时,表单使用VCL样式的背景颜色绘制而不是透明.

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm1 = class(TForm)
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure CreateParams(var Params:TCreateParams); override;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.ExStyle := WS_EX_TRANSPARENT or WS_EX_TOPMOST;
 //Params.ExStyle := Params.ExStyle or WS_EX_LAYERED;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Brush.Style:=bsClear;
 BorderStyle:=bsNone;
 //SetLayeredWindowAttributes(Handle, 0, 230, $00000002);
end;
Run Code Online (Sandbox Code Playgroud)

仅供参考如果将vcl样式设置为,则代码可以正常工作Windows.

还有另一种方法可以使表单透明以解决此问题吗?

delphi delphi-xe2 vcl-styles

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

我必须使用什么Uxtheme函数来获得最小化,最大化和关闭按钮的默认大小?

我正在使用该DrawThemeBackground功能在画布上绘制一些系统元素,我需要绘制一个表单的标题按钮,我唯一想念的部分就是如何获得default标题按钮的大小.Exist any Uxtheme function to get that info?

在此输入图像描述

c++ delphi winapi uxtheme

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

TBitmap.Create无法在delphi控制台应用程序中工作

我需要使用控制台应用程序处理一组bmp文件,我正在使用TBitmap类,但代码无法编译,因为此错误

E2003 Undeclared identifier: 'Create'
Run Code Online (Sandbox Code Playgroud)

此示例应用程序再现了该问题

{$APPTYPE CONSOLE}

{$R *.res}

uses
 System.SysUtils,
 Vcl.Graphics,
 WinApi.Windows;

procedure CreateBitMap;
Var
  Bmp  : TBitmap;
  Flag : DWORD;
begin
  Bmp:=TBitmap.Create; //this line produce the error of compilation
  try
    //do something
  finally
   Bmp.Free;
  end;
end;

begin
  try
    CreateBitMap;

  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Run Code Online (Sandbox Code Playgroud)

为什么这段代码不能编译?

delphi delphi-xe2

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

德尔福对话形式的雪佛龙按钮

我想画一个雪佛龙按钮

在此输入图像描述

在自定义对话框窗体中,我想知道是否存在与DrawThemeBackground函数一起使用的State和Part常量,或者我必须手动绘制这种按钮?

delphi winapi windows-7

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

combobox不使用vcl风格的高亮颜色.

我正在使用启用了vcl样式的组合框,但是当我运行应用程序时,组合框使用的高亮颜色是窗口高亮颜色而不是vcl样式.

我怎么能解决这个问题,我的意思是在组合框中使用vcl风格的高亮颜色?

在此输入图像描述

delphi delphi-xe2 vcl-styles

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

如何使用他的HWND检查Window是否有可见的滚动条?

我想检查外部应用程序的窗口是否使用窗口的HWND(句柄)可见垂直或水平滚动条,是否存在任何WinApi函数来获取此信息?我真的尝试了这个GetScrollInfo功能,但似乎没有检索有关滚动条可见性的信息.

c++ windows delphi winapi

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