Zugriffsverletzung bei zuweisung von Self
Delphi-Quellcode:
Also wenn ich den Code oben ausführe kommt immer eine Zugriffsverletzung 00000 x 00000 u.s.w.
//Hier die Klasse
Tonl_kaltermin = class(TPanel) private Fuserid: Longint; Fvon: TDateTime; Fbis: TDateTime; Ftitle: String; procedure Setbis(const Value: TDateTime); procedure Setuserid(const Value: Longint); procedure Setvon(const Value: TDateTime); procedure Settitle(const Value: String); public { Public-Deklarationen } Constructor Create(AOwner: TComponent); override; Destructor Destroy; override; published property von : TDateTime read Fvon write Setvon; property bis : TDateTime read Fbis write Setbis; property userid : Longint read Fuserid write Setuserid; property title : String read Ftitle write Settitle; property Width; property Height; property Top; property Left; property Visible; property Color; End; //Hier der aufruf FNewtermin:=Tonl_kaltermin.Create(Self); FNewtermin.Parent:=Self; <= Hier kommt immer ein Fehler (mit Nil gehts) FNewtermin.Color:=clBlack; FNewtermin.Left:=x; FNewtermin.Top:=y; was habe ich falsch gemacht (mit anderen Klassen gehts (z.b. TPainbox) nur mit der nicht mit TPanel gehts auch |
Re: Zugriffsverletzung bei zuweisung von Self
Ein Objekt kann nicht der Parent von sich selber sein ...
Oder wer ist in dem Fall Self? ^^ |
Re: Zugriffsverletzung bei zuweisung von Self
Ist es ja auch nicht Self ist die Kombo in der ich das Panel erstellen will.
Habs schon mit Self.Name getestet |
Re: Zugriffsverletzung bei zuweisung von Self
Ja wo "drin" steht denn der betroffene Code? Zeig mal ein bisschen mehr ^^
|
Re: Zugriffsverletzung bei zuweisung von Self
Delphi-Quellcode:
Hier ist mehr :)
Tonl_kalender = class(TWinControl)
private FHGColor: TColor; FDayColor: TColor; FNightColor: TColor; FFont: TFont; FOnChange: TOnChange; FDatum: TDate; FAnzTimes : Integer; FHeaderHeigth : Longint; FPHeader : TPanel; FTimeResult: TTimeResult; FTimeWidth : Integer; FPaintda : Boolean; FStartDay: TTime; FEndDay: TTime; FAktTime: TTime; FPaint : TPaintBox; FS1,FS2 : TScrollBar; FHeaderColor: TColor; FJahr: Word; FUserWidth: Integer; FUsers: Tonl_kalusers; FZeitList : TZeitList; FAnzTimeRec : Longint; FDblBuffer : graphics.TBitmap; FOnGetFeierTag: TOnGetFeierTag; FFeiertagFont: TFont; FXMark,FYMark : Longint; FOnChangeTag: TOnChangeTag; FAktDayColor: TColor; FZK: TZk; FZKEffect: TzkEffekt; FTermine: Tonl_kaltermine; FCreateTermin: Boolean; FNewtermin: Tonl_kaltermin; procedure WMSize(var Message: TWMSize); message WM_SIZE; procedure WMPaint(var AMessage : TWMPaint); message wm_Paint; procedure SetDayColor(const Value: TColor); procedure SetFont(const Value: TFont); procedure SetHGColor(const Value: TColor); procedure SetNightColor(const Value: TColor); procedure SetOnChange(const Value: TOnChange); procedure SetDatum(const Value: TDate); Procedure SetAnzTimes; procedure SetTimeResult(const Value: TTimeResult); procedure SetEndDay(const Value: TTime); procedure SetStartDay(const Value: TTime); procedure SetAktTime(const Value: TTime); procedure SetOnGetFeierTag(const Value: TOnGetFeierTag); procedure SetFeiertagFont(const Value: TFont); Procedure CreateHeaders(C : TCanvas); Procedure CreateUsers(C : TCanvas); Procedure CreateView; procedure SetHeaderColor(const Value: TColor); function LinearBlendedColor(Color1, Color2: TColor; alpha: Integer): TColor; procedure SetUserWidth(const Value: Integer); procedure SetUsers(const Value: Tonl_kalusers); Procedure ZeichneKasten(x,y,w,h : Longint;C : TCanvas;Farbe : TColor;Style : TZk;effekt : TzkEffekt;Farbe1 : TColor=0); Procedure ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;var ScrollPos: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); procedure SetOnChangeTag(const Value: TOnChangeTag); procedure SetAktDayColor(const Value: TColor); procedure SetZK(const Value: TZk); procedure SetZKEffect(const Value: TzkEffekt); procedure SetTermine(const Value: Tonl_kaltermine); { Private-Deklarationen } protected { Protected-Deklarationen } public { Public-Deklarationen } Constructor Create(AOwner: TComponent); override; Destructor Destroy; override; published { Published-Deklarationen } property Align; Property HGColor : TColor read FHGColor write SetHGColor; Property DayColor : TColor read FDayColor write SetDayColor; Property NightColor : TColor read FNightColor write SetNightColor; Property HeaderColor: TColor read FHeaderColor write SetHeaderColor; Property AktDayColor: TColor read FAktDayColor write SetAktDayColor; Property Font : TFont read FFont write SetFont; Property FeiertagFont : TFont read FFeiertagFont write SetFeiertagFont; Property Datum : TDate read FDatum write SetDatum; Property TimeResult : TTimeResult read FTimeResult write SetTimeResult; Property StartDay : TTime read FStartDay write SetStartDay; Property EndDay : TTime read FEndDay write SetEndDay; Property AktTime : TTime read FAktTime write SetAktTime; Property Jahr : Word read FJahr; Property UserWidth : Integer read FUserWidth write SetUserWidth; Property ZK : TZk read FZK write SetZK; Property ZKEffect : TzkEffekt read FZKEffect write SetZKEffect; Property Users : Tonl_kalusers read FUsers write SetUsers; Property Termine : Tonl_kaltermine read FTermine write SetTermine; Property OnChange : TOnChange read FOnChange write SetOnChange; Property OnGetFeierTag : TOnGetFeierTag read FOnGetFeierTag write SetOnGetFeierTag; Property OnChangeTag : TOnChangeTag read FOnChangeTag write SetOnChangeTag; end; procedure Tonl_kalender.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Var xp,yp : Longint; begin xp:=(x-FUserWidth) DIV TimeWidth; yp:=(y-FHeaderHeigth) DIV TimeHeight; If (xp>=0) and (yp>=0) then Begin FCreateTermin:=True; FNewtermin:=Tonl_kaltermin.Create(Self); FNewtermin.Parent:=Self; FNewtermin.Color:=clBlack; FNewtermin.Left:=x; FNewtermin.Top:=y; End; end; constructor Tonl_kalender.Create(AOwner: TComponent); begin inherited; FCreateTermin:=False; FZeitList:=TZeitList.Create; FPaintda:=False; FHGColor:=clBtnFace; FDayColor:=clCream; FNightColor:=clSkyBlue; FHeaderColor:=clBlue; FFont:=TFont.Create; FFont.Name:='Arial'; FFont.Size:=10; FFont.Color:=clBlack; FFeiertagFont:=TFont.Create; FFeiertagFont.Name:='Arial'; FFeiertagFont.Size:=10; FFeiertagFont.Color:=clRed; FAktDayColor:=clLime; FPHeader:=TPanel.Create(Self); FStartDay:=StrToTime('08:00'); FEndDay:=StrToTime('18:00'); FUserWidth:=60; FDatum:=Date; FAktTime:=Now; FJahr:=StrToInt(FormatDateTime('yyyy',FDatum)); FAnzTimes:=0; FTimeWidth:=0; FTimeResult:=onltk_15min; With FPHeader do Begin Name:='p_header'; Caption:=''; Parent:=Self;<= Warum geht das hier Left:=0; Top:=0; Height:=20; Width:=Self.Width; Align:=alTop; Visible:=False; End; FS1:=TScrollBar.Create(Self); With FS1 do Begin Parent:=Self; Align:=alBottom; Visible:=False; Kind:=sbHorizontal; OnScroll:=ScrollBar1Scroll; End; FS2:=TScrollBar.Create(Self); With FS2 do Begin Parent:=Self; Align:=alRight; Visible:=False; Kind:=sbVertical; End; FPaint:=TPaintBox.Create(Self); With FPaint do Begin Parent:=Self; Align:=alClient; OnMouseMove:=FormMouseMove; OnMouseDown:=FormMouseDown; OnMouseUp:=FormMouseUp; End; FDblBuffer:=graphics.TBitmap.Create; FUsers:=Tonl_kalusers.Create; SetAnzTimes; end; |
Re: Zugriffsverletzung bei zuweisung von Self
Wie gesagt eine Komponente kann nicht ihr eigener Parent sein!
Genauso wenig wie du dein eigener Vater sein kannst. |
Re: Zugriffsverletzung bei zuweisung von Self
IMHO ein schönes Beispiel dafür wie man mit WITH..DO sehr ordentliches Chaos verursachen kann.
Zitat:
Delphi-Quellcode:
FPHeader.Name:='p_header';
FPHeader.Caption:=''; FPHeader.Parent:=FPHeader.Self; //KABOOM durch PICNIC ;) [...] |
Re: Zugriffsverletzung bei zuweisung von Self
Zitat:
Also mein denken. Ich habe ein Kombo z.b. TMutter in der Erstelle ich TKind dann muss der Parent von TKind doch TMutter sein und nicht TGrossmutter oder ?? |
Re: Zugriffsverletzung bei zuweisung von Self
Zitat:
|
Re: Zugriffsverletzung bei zuweisung von Self
Die stelle geht doch das ist ja gerade das lustige.
Aber wenn ich
Delphi-Quellcode:
Mach dann knalltes
FNewtermin:=Tonl_kaltermin.Create(Self);
FNewtermin.Parent:=Self; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 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