Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TNotifyEvent - ExcessViolation bei Adresse 00000000 (https://www.delphipraxis.net/56417-tnotifyevent-excessviolation-bei-adresse-00000000-a.html)

TheConConBug 5. Nov 2005 11:33


TNotifyEvent - ExcessViolation bei Adresse 00000000
 
HiHo,

ich hab aus irgendwelchen gründen bei einer eigens abgeleiteten eine Exception.
hab leider keine ahnung warum ..vorallem, weil es auch schonmal irgenwie geklappt hatte.. vieleicht kann mir jemand helfen..

die klasse ist von DBMemo abgeleitet und soll sich per mausklick verkleinern.
das läuft auch alles soweit ganz gut. aber als ich dann das Event (FBeforeMiniMize) hinzugefügt hatte, kam diese fehlermeldung:

Zitat:

>Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten.Meldung:
>'Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000'[..]

wenn ich die Event-Aufrufe (<FBeforeMiniMize(self)> und <FAfterMinimize(self)>) auskommentiere, dann klappt wieder alles.
hier ein programmausschnitt..

Delphi-Quellcode:
  TDBMemoXT = class(TDBMemo)
  private
   FReSizeOptions : TDBMReSizeOptions;
   FAfterMinimize : TNotifyEvent;
   FBeforeMinimize : TNotifyEvent;
   [..]
  protected
   [..]
  public
   procedure Minimize; dynamic;
   [..]
  published
   property AfterMinimize : TNotifyEvent read FAfterMinimize write FAfterMinimize;
   property BeforeMinimize : TNotifyEvent read FBeforeMinimize write FBeforeMinimize;
   property ReSizeOptions : TDBMReSizeOptions read FReSizeOptions write FReSizeOptions;
  end;

procedure Register;

implementation

procedure TDBMemoXT.Minimize;
  var Y,X :Integer;
 begin
  FBeforeMiniMize(self);
  X := FReSizeOptions.FReSizeCoords.FMinX;
  Y := FReSizeOptions.FReSizeCoords.FMinY;
  if not (Y < 0) then Height := Y;
  if not (X < 0) then Width := X;
  Color := FReSizeOptions.FMinMColor;
  Cursor := FReSizeOptions.FMinMCursor;
  FAfterMinimize(self);
 end;
..Ciao
..TheConConBug

Union 5. Nov 2005 11:37

Re: TNotifyEvent - ExcessViolation bei Adresse 00000000
 
Du musst das vorher mit assigned abfragen.
Delphi-Quellcode:
if assigned(FAfterMinimize) then
   FAfterMinimize(self);
[edit] :warn: Das sollte man vor jedem Event-Aufruf machen![/edit]

TheConConBug 5. Nov 2005 11:45

Re: TNotifyEvent - ExcessViolation bei Adresse 00000000
 
Huiiiii...
ja!!! es funtkioniert.
vielen dank für die superschnelle antwort.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 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