AGB  ·  Datenschutz  ·  Impressum  







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

Sender.free?

Ein Thema von LoL · begonnen am 6. Dez 2004 · letzter Beitrag vom 6. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
LoL
(Gast)

n/a Beiträge
 
#1

Sender.free?

  Alt 6. Dez 2004, 11:24
hallo zusammen

ist es möglich sobald auf einen Button gedrückt wurde ihn damit zu löschen?
ist ja klar das es so nicht geht:

Delphi-Quellcode:
onclick(sender:TObject)
begin
  sender.free;
end;
aber hat jemand ne Idee?
  Mit Zitat antworten Zitat
Benutzerbild von Orbmu2k
Orbmu2k

Registriert seit: 29. Nov 2004
Ort: Erfurt
254 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Sender.free?

  Alt 6. Dez 2004, 11:26
Bei mir geht das...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  (Sender as TButton).Free;
end;
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#3

Re: Sender.free?

  Alt 6. Dez 2004, 11:27
welche delphi version hast du?
bei mir kommt "abstract error"
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Sender.free?

  Alt 6. Dez 2004, 11:32
Warum denn loeschen? Unsichtbar schalten sollte genuegen.
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#5

Re: Sender.free?

  Alt 6. Dez 2004, 11:35
nein

folgendes:

edit edit combobox button
edit edit combobox button
edit edit combobox button
edit edit combobox button

ich muss zurlaufzeit mehrere Edits, Comboboxen erstellen weil ich nicht weis wieviel der anwender braucht. diese Compos will ich mit einem button löschen. dieser button gehört quasi zu diesen compos. sobald also der button gedrückt wurde will ich den mit löschen
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Sender.free?

  Alt 6. Dez 2004, 11:37
Den Sender eines Events löschen? Damit bekommst Du mit fast 100%iger Sicherheit in Teufels Küche.

Was wird nun passieren, wenn das Event abgearbeitet wird und das Programm zum Aufrufer zurückspringt und dort noch etwas mit dem Control gemacht wird - Es sollte krachen. Beim Click-Event evtl. nicht (oder nur sporatisch).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#7

Re: Sender.free?

  Alt 6. Dez 2004, 11:38
Zitat von Orbmu2k:
Bei mir geht das...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  (Sender as TButton).Free;
end;
warum geht dann das überhaupt das wundert mich sowieso!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Sender.free?

  Alt 6. Dez 2004, 11:39
Moin!

Also bei mir funktioniert in einem recht kleinen Projekt auch ein Sender.Free - weil, warum sollte ich noch ein TypeCast machen? Ich weiss doch nicht unbedingt welche Klasse dahinter steckt, ausserdem werden die Destruktoren nicht umsonst überschrieben und er ruft eh immer den Destruktor der Instanz in Sender auf.

Aber: Das Problem bei der Vorgehensweise ist einzig und allein, dass der Button ja der Aufrufer des Ereignisses ist und wenn man ihn in diesem freigibt, dann kehrt die Programmausführung zurück in einen Speicherbereich der nicht mehr benutzt wird. Die Programmausführung kehrt halt zum Button zurück, der existiert aber nicht mehr und es knallt.

Daher: Entweder das ganze entkoppeln oder einfach mit Visible arbeiten wie vorgeschlagen...

(Warum es in kleinen Projekten geht: Der freigegebene Speicher wird nicht überschrieben da in einer kleinen Anwendung nicht ständig für irgendwas noch viel Speicher gebraucht wird und daher steht beim Rücksprung bzw. Rückkehr von dem Ereignis zu Button immer noch der alte Code an der Stelle...)

MFG
Muetze1
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Sender.free?

  Alt 6. Dez 2004, 11:40
Aus der Hilfe:
Zitat:
Warnung: Sie dürfen eine Komponente nie in einer ihrer eigenen Ereignisbehandlungsroutinen oder in einer Ereignisbehandlungsroutine eines untergeordneten Objekts freigeben. Geben Sie beispielsweise auf keinen Fall eine Schaltfläche oder ihr übergeordnetes Formular in der OnClick-Ereignisbehandlungsroutine der Schaltfläche frei.
Stichwort: Unsichtbar machen sollte genügen.
Sehe ich auch so.

Kannst dem Button natürlich auch in seinem OnClick einen Kenner verpassen, der eine andere Routine des Programms veranlasst, aufzuräumen und den Button freizugeben. Die Eigenschaft Tag kann man z.B. gut dafür (für den Kenner) nehmen.
  Mit Zitat antworten Zitat
LoL
(Gast)

n/a Beiträge
 
#10

Re: Sender.free?

  Alt 6. Dez 2004, 11:43
schade ich dachte ich kann das mit einer procedure machen schade wieder arbeit
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:27 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