AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi dynamische Komponente soll sich selbst beenden, aber wie?
Thema durchsuchen
Ansicht
Themen-Optionen

dynamische Komponente soll sich selbst beenden, aber wie?

Ein Thema von JoelH · begonnen am 13. Jun 2003 · letzter Beitrag vom 15. Jun 2003
Antwort Antwort
JoelH
(Gast)

n/a Beiträge
 
#1

dynamische Komponente soll sich selbst beenden, aber wie?

  Alt 13. Jun 2003, 23:57
Ich lege dynamisch einige Buttons an, diese sollen sich selbst wieder löschen wenn sie angeklickt werden. Leider kann ich ja kein .Free bzw. .destroy in den onKlick Event legen da er dann rummault, zurecht natürlich !

Wo kann ich Windows bzw Delphi die Info hinterlegen, dass sich der Button nach dem Klickevent selbst zerstören soll ?

[EDIT]Rechtschreibfehler berichtigt[/EDIT]
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 14. Jun 2003, 00:04
Funktioniert doch einwand frei:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Sender.Free;
end;
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#3

hmm,

  Alt 14. Jun 2003, 00:13
leider kann ich dass jett nicht testen, allerdings hab ich hier ein Problem, dass ich wohl nicht erwähnt hab !? Ich hab viele Buttons, diese verwenden aber alle dasselbe onClick Event. Ich poste am Montag mal den genauen Code, hab ihn leider nciht hier und hab keine Lust zu Coden, bin Müde und wohl auch etwas betrunken.
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#4
  Alt 14. Jun 2003, 11:25
Selbst wenn mehrere Buttons das gleiche Event haben, klappt das, weil im Sender immer der Button steht, der gedrückt wurde, also der, der das Event ausgelöst hat. Aber ausprobiert ob das überhaupt geht, habe ich auch nicht.
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#5
  Alt 14. Jun 2003, 13:16
Vielleicht mal Glück gehabt, aber eine Komponente in ihrer eigenen Ereignisbehandlungsroutine freizugeben...
Eine Ereignisbehaldlungsroutine hält immer einen Zeiger auf die aufrufende Instanz, und wenn der dann plötzlich ungültig wird...

Ich hab das schnell mal probiert, und immer die erwartete Schutzverletzung erhalten.

Grüße
Woki
  Mit Zitat antworten Zitat
magicshadow

Registriert seit: 28. Apr 2003
85 Beiträge
 
#6
  Alt 14. Jun 2003, 13:23
nutz doch einen Timer und ne TList.
In der TList speicherst du die Pointer der freizugebenen buttons.
Im Timer fragst du ab ob die liste elemente enthält, wenn ja schließ es udn lösch es aus der lsite.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 14. Jun 2003, 13:29
Moin Joel,

was mich mal interessieren würde:
Wozu soll das gut sein?
Ggf. kannst Du ja einfach visible auf False setzen, damit der Button verschwindet.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8
  Alt 14. Jun 2003, 13:30
Eine andere Möglichkeit:
Delphi-Quellcode:
const
  WM_FREEOBJECT = WM_USER + 1;

type
  TForm1 = class(TForm)
  ...
  protected
    procedure WMFreeObject(var Msg: TMessage); message WM_FREEOBJECT;
  end;

procedure TForm1.WMFreeObject(var Msg: TMessage); message WM_FREEOBJECT;
begin
  TObject(Msg.LParam).Free;
end;


proedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(Handle, WM_FREEOBJECT, 0, Integer(Sender));
end;
Das geht etwas flotter als mit einem Timer.
  Mit Zitat antworten Zitat
JoelH
(Gast)

n/a Beiträge
 
#9

hmm,

  Alt 15. Jun 2003, 09:21
@Christian Seehase
Das ist nur eine Spielerei aber man weiss ja nie für was man es mal braucht. Vorstellen könnte ich mir sowas bei einem Routenplaner oder bei einer elektronischen Schaltung die man selbst zusammen klicken kann etc.
  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 12:04 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