gpt4 book ai didi

delphi - 手动跳过从 dfm 创建的组件

转载 作者:行者123 更新时间:2023-12-03 18:01:38 26 4
gpt4 key购买 nike

有没有办法跳过从 dfm 创建的组件?

我有一个有时不想创建的可视化组件。当然,我可以手动创建组件,但是由于组件有很多项目,这将需要大量工作。

最佳答案

实际上一种方法可以做到这一点。这是一个跳过特定类的组件的示例。

向您的表单添加两个类似以下的事件处理程序:

procedure TForm224.DoCreateComponent(Reader: TReader; ComponentClass: TComponentClass; var Component: TComponent);
begin
if ComponentClass = <whatever component class shall be skipped> then begin
Abort;
end;
end;

procedure TForm224.DoReaderError(Reader: TReader; const Message: string; var Handled: Boolean);
begin
Handled := True;
end;

然后以这种方式覆盖表单的 ReadState() 方法:

procedure TForm224.ReadState(Reader: TReader);
begin
Reader.OnError := DoReaderError;
Reader.OnCreateComponent := DoCreateComponent;
inherited;
Reader.OnError := nil;
Reader.OnCreateComponent := nil;
end;

如果该组件类有多个实例,而您需要检查单个实例,则可以使用 TReader.OnSetName 事件:

procedure TForm224.ReadState(Reader: TReader);
begin
...
Reader.OnSetName := DoSetName;
inherited;
Reader.OnSetName := nil;
...
end;

procedure TForm224.DoSetName(Reader: TReader; Component: TComponent; var Name: string);
begin
if Name = <instance name> then begin
Abort;
end;
end;

关于delphi - 手动跳过从 dfm 创建的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47347578/

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