AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi EAbstract Error beim Entfernen aus verketteter Liste
Thema durchsuchen
Ansicht
Themen-Optionen

EAbstract Error beim Entfernen aus verketteter Liste

Ein Thema von mrmoe · begonnen am 17. Aug 2005 · letzter Beitrag vom 17. Aug 2005
Antwort Antwort
mrmoe

Registriert seit: 15. Jul 2005
13 Beiträge
 
#1

Re: Access Violation beim Entfernen aus verketteter Liste

  Alt 17. Aug 2005, 10:12
ich habs (hoffe ich zumindest ) falsch gedacht s. unten

der fehler lag beim anlegen der objekte(panels), dies geschah über eine onClick-Routine einer comboBox:

Delphi-Quellcode:
procedure TForm2.ComboBox1Click(Sender: TObject);
var lab: TLabel;
    cb: mycb;
    pan: myPanel;
    img: myImg;
begin
 lab:=TLabel.create(Form1);
 cb:=mycb.Create(Form1);
 pan:=myPanel.Create(Form1);
 img:=myImg.Create(Form1);

 pan.Visible:=true; pan.Color:= clSilver;
 pan.Width:=350;
 pan.Height:=40;
 pan.Left:=20;
 pan.BevelInner:=bvRaised;
 pan.BevelOuter:=bvLowered;

 // erstes erzeugen ------------
 if form1.letztes=nil then begin
  pan.parentPanel:=nil;
  pan.childPanel:=nil;
  form1.letztes:=pan;
  pan.Top:=50;
 end
 // weitere erzeugen -----------
 else begin
   pan.parentPanel:=form1.letztes;
   pan.childPanel:=nil;
   form1.letztes.childPanel:=pan;
   pan.Top:=form1.letztes.Top+form1.letztes.height+10;
   form1.letztes:=pan;
 end;

/// schnipp - etc. ...
end;
es muss aber lauten:

lab:=TLabel.create(self);
cb:=mycb.Create(self);
pan:=myPanel.Create(self);
img:=myImg.Create(self);

ich dachte das in Klammern hinter Create steht für das Parent-Objekt, und da die Panels auf Form1 kommen sollen hatte ich eben Form1 statt self drinstehn. ich sag nur:

naja jetzt gehts wie gesagt, viell. hilfts ja mal jemanden weiter


///////////////////////-----------------/////////////////////
mist Doch zu früh gefreut, jetzt bekomme ich immer nachdem ich mehr als 10 elemente aus der liste lösche bei einigen einen EAbstract Error der vorher nicht kam.
Ich hab schonmal danach gegoogelt und alles was ich finden konnte war dass der auftritt wenn man abstrakte methoden verwendet. bloss bitt wo mach ich das (der abstrakte fehler kommt immer beim self.destroy des panels)

hier nochmal der angepasste Quelltext
Delphi-Quellcode:
procedure myPanel.remove_it();
begin
         //einziges Element ?
         if (self.parentPanel = nil) and (self.childPanel = nil) then
         begin
          form1.letztes:=nil;
          self.move(self.Height*(-1)-10);
         end
         //erstes Element ?
         else if self.parentPanel=nil then
         begin
          self.childPanel.parentPanel:=nil;
          self.childPanel.move(self.Height*(-1)-10);
         end
         //letztes Element ?
         else if self.childPanel=nil then
         begin
          self.parentPanel.childPanel:=nil;
          form1.letztes:=self.parentPanel;
          self.move(self.Height*(-1)-10);
         end
         //mittel Element ?
         else if (self.childPanel <> nil) and (self.parentPanel <> nil) then
         begin
          self.parentPanel.childPanel:=self.childPanel;
          self.childPanel.parentPanel:=self.parentPanel;
          self.childPanel.move(self.Height*(-1)-10);
         end;

       self.comboBox.Items.Add(self.filterName);
       if self.comboBox.Items.count=1 then self.combobox.visible:=true;
       self.destroy; <------ hier kommt der fehler (aber nicht bei allen)
end;
Ich hab auch mal in den definitionen der geerbten TPanel-Klasse nachgeschaut und auch in der TCustomControl noch eine Ebene höher, aber nirgends eine abstrakte Methode zu finden die ich erst überschreiben müsste...

kann irgendwer helfen ????
  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 07:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz