AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frame zerstören...

Ein Thema von jaikai · begonnen am 1. Jun 2005 · letzter Beitrag vom 1. Jun 2005
Antwort Antwort
jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#1

Frame zerstören...

  Alt 1. Jun 2005, 15:49
Hi Leute,


Mehrere virtuell erzeugte Frames liegen auf einem Panel in der Form. Diese muß ich ja auch wieder zerstörern (gewöhnlich mit "Free"). Framenamen sind eindeutig. Die Komponenten des Frames liegen alle auf einem Panel und werden auf einem andern Panel innerhalb der Form dargestellt/erzeugt.

Ein unbenötigter Frame soll gelöscht werden...

Problem:
Wenn ich aber einen Button innerhalb des Frames habe und auf ButtonClick das "free" auslöse, bekomme ich einen EAbstraktError und Ende. Da der Frame intern noch irgendwas aktiv macht kommt dies wohl zwangsläufig zustande.

Plaziere ich in der Form neben dem Frame einen virtuellen Button, der das "Free" auslösen soll , hab ich die generelle Schwierigkeit, den richtigen Frame zu löschen.
Mit

(FindComponent(Uebergabe_Framename) as TFrame_Neu).free; sollte ich eigentlich den eindeutigen Namen übergeben und zerstörern könne. Aber das ergebnis ist immer "nil" und nix passiert...

Hat jemand ne Lösung für mich?

Danke
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: Frame zerstören...

  Alt 1. Jun 2005, 15:51
EAbstractError besagt ja in der Regel das die Klasse die du benützt diese methode nicht implementiert, oder du falsch "gecastet" hast.

ein größeren einblick in deinen code wäre sicher hilfreich für "uns"
  Mit Zitat antworten Zitat
jaikai

Registriert seit: 1. Jun 2005
70 Beiträge
 
#3

Re: Frame zerstören...

  Alt 1. Jun 2005, 16:11
Also...

Im Muster-Frame (TFrame_Neu) mit all seinen Komponeneten gibts halt ein Icon, daß auf dem OnClick-Ereignis reagieren sollte...

Delphi-Quellcode:
procedure TFrame_Neu.Image3Click(Sender: TObject);
begin
  Uebergabe_Framename := name;
  // free;
end;
Lass ich nun den Image (als Button) mit der "free" Zeile starten, dann gibts den EAbstractError.

Ha! dachte ich und legte einen Button auf die Form neben dem Frame, der mit den übergebenen Parametern "Uebergabe_Framename" den Frame löschen kann. Könnte er auch, aber in der Zwischenzeit kann alles mögliche pasiert sein und der Parameter ist wech. Ergo - dieser Button ist blind und so kommt es nicht zum löschen des Frames.

Es gäbe noch die unelegante Methode über eine Liste den entsprechenden Frame zu löschen...

...und nun brauch ich eine Methode, wie der bestimmte unter vielen Frames (möglichst von innen, aus sich selbst heraus und per Click) sich selbst zerstört - aber eben ohne Errors.
Wenn die Programme das machen, wie's wir machen, wären sie unbrauchbar...
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: Frame zerstören...

  Alt 1. Jun 2005, 16:13
Zitat von jaikai:
Ein unbenötigter Frame soll gelöscht werden...
Problem:
Wenn ich aber einen Button innerhalb des Frames habe und auf ButtonClick das "free" auslöse, bekomme ich einen EAbstraktError und Ende. Da der Frame intern noch irgendwas aktiv macht kommt dies wohl zwangsläufig zustande.
Innerhalb eines Events darfst du nicht das Steuerelement mit .Free freigeben!
Schau dir mal in der Code-Library den Betrag "Controls, die sich selbst zerstören" an:
http://www.delphipraxis.net/internal...ct.php?t=29732
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#5

Re: Frame zerstören...

  Alt 1. Jun 2005, 17:54
Eventuell hast du glück und auch ein TFrame besitzt die Methode Release. Mit der wird das Objekt erst nach dem Eventhandler tatsächlich freigegeben.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  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 18:10 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