Einzelnen Beitrag anzeigen

OLLI_T

Registriert seit: 13. Okt 2003
Ort: Nähe Wetzlar / Hessen
143 Beiträge
 
Delphi 5 Enterprise
 
#9

Re: Instanz sich selber zerstören lassen?

  Alt 19. Nov 2003, 14:47
Kleiner Tipp am Rande.

Ich hab "damals" ne kleinen ComponentEditor gebastelt, mit dem man verhindern kann, dass mehr als eine Instanz einer Komponente ins Projekt geworfen werden können. Hier ein Auszug aus der Registrierungs-Unit:

Delphi-Quellcode:
uses
  DsgnIntf, SysUtils, TypInfo, Classes, Dialogs System32;

Type

  TStopEditor = class(TComponentEditor)
  private { Private-Deklarationen }
    FRemove:Boolean;
  public
    constructor Create(AComponent: TComponent; ADesigner: IFormDesigner); override;
    Procedure GetCompNames(const S: string);
  End;

  Procedure Register;

implementation

uses PicSel;

Procedure Register;
Begin
  ....
  RegisterComponentEditor(TotStopWatch32,TStopEditor);
  ....
End;

.....

// **************************************************************************
// ** TStopEditor ***********************************************************
// **************************************************************************

constructor TStopEditor.Create(AComponent: TComponent;
  ADesigner: IFormDesigner);
Var TD:TTypeData;
begin
  inherited;
  If AComponent.Owner<>NIL Then Begin
    TD.ClassType:=TotStopWatch32;
    ADesigner.GetComponentNames(@TD,GetCompNames);
    If FRemove Then Begin
      ADesigner.DeleteSelection;
      Component.Owner.RemoveComponent(Component);
    End;
  End;
end;

Procedure TStopEditor.GetCompNames(const S: string);
Begin
  If S<>Component.Name Then Begin
    Showmessage('Es ist bereits eine Stopwatch im Projekt!');
    FRemove:=TRUE;
  End;
end;
Vielleicht kann der Eine oder Andere was damit anfangen!?

Gruss

OLLI
No Pain No Gain!
  Mit Zitat antworten Zitat