AGB  ·  Datenschutz  ·  Impressum  







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

Frame laden und entladen

Ein Thema von Jumpy · begonnen am 14. Feb 2011 · letzter Beitrag vom 15. Feb 2011
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#1

Frame laden und entladen

  Alt 14. Feb 2011, 16:21
Für ein Übungsprojekt, soll ich ein dynamisch generiertes Form erstellen. Dies geschieht, indem vorgefertigte Frames in das Formular geladen und auf Panels platziert werden.
Das klappt soweit schon ganz gut.

Jetzt sollen aber manche Frames (wenn dort was passiert ist) selber den Befehl geben können, sich wieder zu entladen. Vereinfacht: Angenommen auf dem Frame ist auch ein Button. Bei klicken auf diesen, soll der Frame gelöscht werden und das Formular neu angezeigt (oder neu aufgebaut?) werden.

Wie geh ich da vor? Der Frame gehört ja dem Formular und dieses bestimmt, ob und wann ein Frame gelöscht wird, oder? D.h. ich muss vom Frame Nachricht an das Form geben?
Ralph
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: Frame laden und entladen

  Alt 14. Feb 2011, 16:40
In der Code Lib ist ein Beispiel:
Komponenten die sich selbst freigeben.
Du solltest es über die SuFu finden.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: Frame laden und entladen

  Alt 14. Feb 2011, 16:53
Ich such mal, hab bisher aber noch nicht die rechte Suchwort-Kombi gefunden
(Freigeben, Free, Komponente, selbst, sich), da ich wahrsch. die Begrifflichkeiten nicht 100% klar habe.

Meanwhile:
Delphi-Quellcode:
for i := 0 to TComponent(self.Owner).ComponentCount -1 do
    if TComponent(self.Owner).Components[i].Name = self.Name then
      TComponent(self.Owner).Components[i].Free;
funktioniert nicht, Zugriffverletzung-Fehlermeldung.

Aber einfach
self.free; ging dagegen.

D.h. so krieg ich das Frame gelöscht und die darunter liegenden Frames rücken eins auf (stehen alle auf Alignment := alTop). Allerdings bleibt dann unten eine Fläsche des Panels (auf dem der Frame lag) leer, d.h. die Panel-Höhe müsste neu berechnet werden und spätestens das muss doch eine Funktion auf Form-Ebene machen, oder? Wie stoß ich die an ohne Zugriffsverletzung?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.352 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Frame laden und entladen

  Alt 14. Feb 2011, 17:26
Du könntest den Frame einfach "markieren" (am einfachsten mit Frame.Tag := 1) und über einen Timer alle Frames auf die Markierung prüfen und ggf. löschen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
David Martens

Registriert seit: 29. Sep 2003
205 Beiträge
 
Delphi XE Enterprise
 
#5

AW: Frame laden und entladen

  Alt 14. Feb 2011, 17:42
Das war schon nicht ganz falsch, aber versuche mal nach dem self.free; das hier:

Delphi-Quellcode:
for i := 0 to TComponent(self.Owner).ComponentCount -1 do
    if TComponent(self.Owner).Components[i] is TYourFrame then
      TYourFrame(TComponent(self.Owner).Components[i]).Repaint;
Gruß David
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#6

AW: Frame laden und entladen

  Alt 14. Feb 2011, 18:32
OK, Ich habmich im Forum vertan,
hier der Link: http://www.delphi-treff.de/tipps/obj...igeben-lassen/

Das mit dem Timer ist natürlich die einfachere Lösung
  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 05:27 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 by Thomas Breitkreuz