Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Notification bei Komponente abgeleitet von TControl (https://www.delphipraxis.net/88942-notification-bei-komponente-abgeleitet-von-tcontrol.html)

dr. love 23. Mär 2007 12:48


Notification bei Komponente abgeleitet von TControl
 
Ich bastle gerade eine Testkomponente, die von TComponent abgeleitet wird. Im Objektinspektor soll der Anwender später ein bestimmtes Editfeld (z.B. zur Ausgabe von Infos) auswählen können. Damit es aber bei der Freigabe der zugewiesenen Komponente nicht zu Problemen kommt, möchte ich den Zeiger auf das Editfeld per NOTIFICATION auf NIL setzen. Leider bekomme ich jedes mal beim Compilieren einen Fehler... wisst ihr woran es liegt?

Delphi-Quellcode:
 unit BeispielComp;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Stdctrls;


type
  TBeispielComp = class(TControl)
  private
    FEdit: TEdit;
  protected
    procedure Notification (AComponent: TComponent; Operation: TOperation); override;
  public
    constructor Create (AOwner: TComponent); override;
  published
    property Edit: TEdit read FEdit write FEdit;
  end;

procedure Register;

implementation

constructor TBeispielComp.Create (AOwner: TComponent);
begin
  inherited Create (AOwner);
  FEdit:=nil;
end;

procedure Notification (AComponent: TComponent; Operation: TOperation);
begin
  inherited Notification(AComponent, Operation); {hier kommt der Fehler: "this form of method call only allowed in methods of derived types"}
  if (Operation=opRemove) and (AComponent=FEdit)
  then FEdit:=nil;

end;


procedure Register;
begin
  RegisterComponents('Samples', [TBeispielComp]);
end;

end.

dataspider 23. Mär 2007 12:55

Re: Notification bei Komponente abgeleitet von TControl
 
Hi,

Notification gehört zur Klasse, also:
Delphi-Quellcode:
// TBeispielComp. vergessen?
procedure TBeispielComp.Notification (AComponent: TComponent; Operation: TOperation);
begin
  inherited Notification(AComponent, Operation); {hier kommt der Fehler: "this form of method call only
Cu, Frank

SirThornberry 23. Mär 2007 12:56

Re: Notification bei Komponente abgeleitet von TControl
 
funktioniert es wenn du nur "inherited;" schreibst? Auch wenn mir das ganze etwas seltsam vorkommt, ich hatte bisher damit nie probleme.
[Edit]Hab meinen vorposter übersehen. Dann ist die Meldung klar. inherited geht nur bei Klassen. Da deine Procedure nicht der Klasse zugeordnet war ist der fehler logisch[/edit]

dr. love 23. Mär 2007 12:58

Re: Notification bei Komponente abgeleitet von TControl
 
Oha... shice das is peinlich... und jetzt gehts sogar... hätte wohl mal besser nachlesen sollen... DANKE!


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz