AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Probleme mit TBitmap und Größenänderung
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit TBitmap und Größenänderung

Ein Thema von janjan · begonnen am 12. Feb 2003 · letzter Beitrag vom 12. Feb 2003
Antwort Antwort
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#1

Probleme mit TBitmap und Größenänderung

  Alt 12. Feb 2003, 14:51
Delphi-Quellcode:
unit TestBox;

interface

uses
   Classes,
   ExtCtrls,
   Graphics;

type
  TTestBox = class(TPaintBox)
  private
    { Private-Deklarationen }
  protected
    Background: TBitMap;
    first: boolean;
    { Protected-Deklarationen }
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure paint; override;
    procedure Resize; override;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure TTestBox.Resize;
begin
  Background.Width:=Width;
  Background.Height:=Height;
  background.Canvas.Ellipse(0,0,Width,Height);
  inherited Resize;
end;

constructor TTestBox.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Background:= tbitmap.Create;
  Background.Width:=Width;
  Background.Height:=Height;
  background.Canvas.Ellipse(0,0,Width,112);
end;

procedure TTestBox.Paint;
begin
  inherited paint;
  canvas.Draw(0,0,background);
end;

destructor TTestBox.Destroy;
begin
  background.Free;
  inherited Destroy;
end;

procedure Register;
begin
  RegisterComponents('Beispiele', [TTestBox]);
end;

end.
Warum kann ich das Bitmap beim Create verändern, im Resize-Ereigniss nicht? Da stegt er jedesmal mit einer "Zugriffsverletzung bei Adresse..." aus.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 12. Feb 2003, 15:11
Mal ehrlich, dass es überhaupt jemals gut geht ist schon verwunderlich, sorry. Folgender Abschnitt:
Delphi-Quellcode:
constructor TTestBox.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Background:= tbitmap.Create;
  Background.Width:=Width;
  Background.Height:=Height;
  background.Canvas.Ellipse(0,0,Width,112);
end;
Als erstes rufst Du bereits inherited... auf, was eigentlich okay ist, aber intern wird auch sofort Resize aufgerufen. Dein Resize nutzt dann background, was noch nicht initialisiert ist (also nil) -> Zugriffsverletzung,
Delphi-Quellcode:
procedure TTestBox.Resize;
begin
  Background.Width:=Width;
  Background.Height:=Height;
  background.Canvas.Ellipse(0,0,Width,Height);
  inherited Resize;
end;
Ändere Dein Create wie folgt, und alles sollte laufen
Delphi-Quellcode:
constructor TTestBox.Create(AOwner: TComponent);
begin
  Background:= tbitmap.Create;
  inherited Create(AOwner);
end;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
janjan

Registriert seit: 16. Jan 2003
Ort: Bonn ("links über Königswinter ")
240 Beiträge
 
Delphi 4 Standard
 
#3
  Alt 12. Feb 2003, 15:17
thx, es klappt und dabei wollt ich mich doch nur an die hilfe halten:

Delphi-Quellcode:
constructor TWrapMemo.Create(AOwner: TComponent);*****{ Dies kommt nach der Implementierung }
begin
  **inherited Create(AOwner);***************************{ Diesen Schritt IMMER zuerst! } 
  **WordWrap := False;**********************************{ Neuen Wert setzen }

*end;
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 12. Feb 2003, 15:21
Einige Sachen muss man halt etwas salzen, bevor diese genießbar sind

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 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