Wenn Du einer Komponente einen Namen gibst, muss der in der Anwendung eindeutig sein.
Wenn Du Komponenten zur Laufzeit erzeugst, wird dieser jedoch erst mal kein Name zugewiesen.
Ich habe das mal so gelöst:
Delphi-Quellcode:
constructor TXyz.Create(AOwner: TComponent);
begin
inherited;
Name := FindUniqueName(ClassName);
end,
Delphi-Quellcode:
unit ssClasses;
interface
function FindUniqueName(BaseName:
String; OwnerName:
String = '
'):
String;
implementation
uses
SysUtils, Forms, Windows;
var
UN: LongWord = 0;
function FindUniqueName(BaseName:
String; OwnerName:
String = '
'):
String;
var
N:
String;
begin
if OwnerName <> '
'
then
BaseName := OwnerName + '
_' + BaseName;
BaseName := BaseName + '
_';
Inc(UN);
N := BaseName + IntToStr(UN);
Result := N;
//OutputDebugString(PChar(N));
end;
end.