这是此问题的后续内容: Moving controls between Delphi components
在设计时,我将元素放入自定义TPanel中,但是当我将它们写入DFM时,我会更改其名称
procedure TPanelDialogo.VolcarFrameEnLista( );
var
i: integer;
Componente: TControl;
begin
// recorrer el frame y rescatar sus componentes
if FDesignPanel = nil then
exit;
for i := FDesignPanel.ControlCount - 1 downto 0 do
begin
Componente := FDesignPanel.Controls[i];
if Pos( self.Name + '_', Componente.Name ) = 0 then
begin
Componente.Name := self.Name + '_' + Componente.Name;
end;
if FListaComponentes.IndexOf(Componente) < 0 then
begin
FListaComponentes.Add( Componente );
end;
end;
end;
procedure TPanelDialogo.GetChildren(Proc: TGetChildProc; Root: TComponent);
var
i: integer;
OwnedComponent: TComponent;
begin
if FDesignPanel <> nil then
VolcarFrameEnLista();
for i := 0 to self.FListaComponentes.Count - 1 do
begin
OwnedComponent := FListaComponentes.Items[i];
Proc(OwnedComponent);
end;
end;
在设计时,当我在自定义TPanel中放置标签时,此标签将添加到.pas文件中的表单中:
写入DFM文件时,如前所述,我重命名了标签,因此.pas文件中的声明不再有效。
这是.pas文件
type
TForm1 = class(TForm)
CRTTESTPANEL: TGENPant;
PanelDialogo1: TPanelDialogo;
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;
这是DFM
object Form1: TForm1
...
object CRTTESTPANEL: TGENPant
...
end
object PanelDialogo1: TPanelDialogo
...
object PanelDialogo1_Label1: TLabel
...
end
end
end
然后,单击“是”后,这些是DFM和pas文件:
TForm1 = class(TForm)
CRTTESTPANEL: TGENPant;
PanelDialogo1: TPanelDialogo;
private
{ Private declarations }
public
{ Public declarations }
end;
object Form1: TForm1
...
object CRTTESTPANEL: TGENPant
end
object PanelDialogo1: TPanelDialogo
...
object PanelDialogo1_Label1: TLabel
...
end
end
end
我想避免将标签声明写入.pas文件。我见过this question,但它与写入DFM文件有关,而不与pas有关。
有没有办法做我想做的事?
答案 0 :(得分:1)
在设计时创建Label1
时,Delphi会自动将其添加到tForm
界面中。但是没有理由您不必把它留在那里。您可以删除它。它只是为了方便起见,因此您可以从代码中引用它。如果您的代码未引用标识符Label1
,则可以从.PAS
文件的界面中将其删除。