Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Feststellen ob eine Komponente vorhanden ist?

  Alt 8. Apr 2008, 07:27
Moin Chemiker,

meine zur Laufzeit erstellten Komponenten bekommen alle einen eindeutigen Namen. Laut OH soll '' auch gültig sein, aber das scheint dich und mich ja nicht zu interessieren. Hier meine Methode meiner Basiskomponente einen gültigen Namen beim Create zu finden.
Delphi-Quellcode:
procedure TBaseCustomControl.SetFirstName;
var Counter : Integer;
    Component : TComponent;
    NewComponentName : String;
begin
  // neuer Name
  if not Assigned(Application) then begin
    if self.Owner = nil then
      Component := self
  end else
    Component := Application.MainForm;
  Counter := 0;
  NewComponentName := '';
  try
    while NewComponentName = 'do begin
    NewComponentName := GetNewComponentName(
      Copy(ClassName + InttoStr(Counter), 2, Length(ClassName + InttoStr(Counter))),
      Component);
      Inc(Counter);
    end;
  finally
    SetName(NewComponentName);
  end;
end;

function GetNewComponentName(NewName: string; Component: TComponent): String;
var Counter : Integer;
begin
  Result := NewName;
  for Counter := 0 to Component.ComponentCount - 1 do begin
    if Component.Components[Counter].ComponentCount > 0 then
      Result := GetNewComponentName(NewName, Component.Components[Counter]);
    if Result = 'then
    Exit;
    if Component.FindComponent(NewName) <> nil then begin
      Result := '';
      Exit;
    end;
  end;
end;
Ob das nun der Brüller ist, keine Ahnung. Aber es funzt.


Gruß oki
42
  Mit Zitat antworten Zitat