unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;
type
TOberflaeche =
class(TForm)
// wahrscheinlich so nicht gewünscht.
BTestButton: TButton;
// geändert, von AndereKlasse nach hier
procedure BTestButtonClick(Sender: TObject);
// geändert, von AndereKlasse nach hier
private
BMP: TBitmap;
procedure ErzeugeMalKeinenFehler;
public
constructor Create(AOwner: TComponent);
override;
end;
TAndereKlasse =
class(TOberflaeche)
constructor Create(AOwner: TComponent);
override;
// Neu
procedure BTestbuttonClick(Sender: TObject);
end;
var
AndereKlasse: TAndereKlasse;
var
Oberflaeche: TOberflaeche;
implementation
{$R *.dfm}
constructor TOberflaeche.Create(AOwner: TComponent);
begin
inherited;
// geändert
// Create(AOwner); Der führt beim Aufruf vom Create schon zu einer Zugriffverletzung
BMP := TBitmap.Create;
BMP.Width := 500;
BMP.Height := 500;
end;
procedure TOberflaeche.ErzeugeMalKeinenFehler;
begin
ShowMessage(inttostr(BMP.Width));
end;
constructor TAndereKlasse.Create(AOwner: TComponent);
// Neu
begin
inherited;
end;
procedure TAndereKlasse.BTestbuttonClick(Sender: TObject);
begin
ErzeugeMalKeinenFehler;
end;
procedure TOberflaeche.BTestbuttonClick(Sender: TObject);
// geändert von TAndereKlasse nach TOberflaeche
begin
AndereKlasse.BTestbuttonClick(sender);
end;
initialization
AndereKlasse := TAndereKlasse.Create(Application);
end.