Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#10

Re: Zugriffsverletzung bei Zeichnen auf Bitmap

  Alt 9. Jan 2009, 19:05
Hallo,

so hat's bei mir funktioniert:
Delphi-Quellcode:
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.
Das Hauptproblem ist im Bereich der Konstruktoren zu suchen. Der Nachfahre (TAndereKlasse) benötigt einen eigenen Konstruktor, der den des Vorgängers aufruft. Application als Owner anzugeben scheint sehr schief zu gehen.

Achso, das ist bestimmt kein .NET, bitte ändere den ersten Post entsprechend (wenn das geht).
  Mit Zitat antworten Zitat