gpt4 book ai didi

class - Delphi 创建带有图像的按钮

转载 作者:行者123 更新时间:2023-12-03 18:58:22 24 4
gpt4 key购买 nike

我在创建带有图像和标签的按钮时遇到问题。
这是我的代码:

类(class):

  type
Folder = class(TButton)
AName:TLabel;
AImage:TImage;
constructor Create(Nme:String;Path:String;Handle:TForm);
end;

构造函数:
constructor Folder.Create(Nme:String;Path:String;Handle:TForm);
begin
AImage:=Timage.Create(Self);
AName:=TLabel.Create(Self);
AImage.Parent:=Self;
AName.Parent:=Self;
AName.Caption:=Nme;
AImage.Picture.LoadFromFile(Path);
end;`

以及我创建此按钮的事件:
procedure TForm3.Button1Click(Sender: TObject);
var Fld:Folder;
begin
Fld:=Folder.Create('It','D:\image.bmp',Form3);
Fld.Parent:=Form3;
Fld.Width:=100;
Fld.Height:=100;
end;

但是当我创建这个按钮时,它会导致访问冲突!我必须用它做什么?

最佳答案

问题:

问题是你已经声明了一个自定义版本的构造函数,但是你没有调用 TButton 的父构造函数。类(class)。

您需要像这样更改构造函数:

constructor Folder.Create(Nme: String; Path: String; Handle: TForm);
begin
inherited Create(Handle); // <- Add this line
AImage := TImage.Create(Self);
AName := TLabel.Create(Self);
AImage.Parent := Self;
AName.Parent := Self;
AName.Caption := Nme;
AImage.Picture.LoadFromFile(Path);
end;

一般建议:

您需要学习如何自己调试此类问题。

Fld:=Folder.Create('It','D:\image.bmp',Form3); 行设置断点并使用 Step Over F8/ Trace Into F7 来自 Run菜单逐行检查您的代码。

到达 AImage.Parent:=Self; 行后,您会看到发生异常。这是因为 Self ,它指向您的 Folder对象,未正确初始化,并且不是正确的 TButton后裔。

您需要学习如何做到这一点才能进一步使用 Delphi,并且您很快就能自己解决这些问题。

此外,如果您需要为 Delphi 编写自定义组件,请花一些时间了解更多有关组件工作方式和使用方式的信息。我会推荐以下关于组件编写的指南:



另请参阅 Delphi Coding Style 上的指南.

第一眼看去:
  • 类名应以 T 开头
  • 类字段应以 F 开头而不是 A
  • constructor应该在 private 中的公共(public)部分和字段中或 protected
  • 您应该在参数周围、声明中的变量之后和运算符周围使用空格
  • 关于class - Delphi 创建带有图像的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35812518/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com