![]() |
Einfügen von Frames
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
bin noch sehr neu in der Delphi und OOP-Welt und ich schlage mich schon das ganze Wochenende mit folgendem Problem herum: Ich möchte in ein TForm dynamisch zur Laufzeit Frames (in Unit2 definiert) auf ein OnClick- Ereignis einbinden, d.h. mit jedem Click soll eine neue Zeile (Frame) eingeblendet werden. Unit 1:
Delphi-Quellcode:
Einmalig klappt das auch sehr schön, beim zweiten Mal bekomme ich dann aber einen Fehler: 'A component named Frame1 already exists'.
type
TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private public end; var Form1: TForm1; MyPanel: TPanel; i: Integer; implementation uses Unit2; {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); var MyFrame: TFrame1; begin MyFrame := TFrame1.Create(self); MyFrame.Parent := self; end; end. Wenn ich einen ähnlichen Aufruf, aber statt TFrame1 beispielsweise TPanel nehme klappt es wunderbar. Und dann gleich noch ein weiteres Problem im Unit2 (Frame). Dort habe ich einen Button eingebaut, mit dem der Frame wieder gelöscht werden soll (mittels free). auch hier bekomme ich eine Fehler bei Ausführung: Access Violation
Delphi-Quellcode:
type
TFrame1 = class(TFrame) delete: TButton; procedure deleteClick(Sender: TObject); private { Private declarations } public { Public declarations } end; implementation {$R *.dfm} procedure TFrame1.deleteClick(Sender: TObject); begin self.Free; end; end. Ich bin für jede Idee/Anregung dankbar :-D Hans |
Re: Einfügen von Frames
Zu 1: Bevor du dem Frame ein Parent zuweist, musst du die Name-Eigenschaft des Frames neu setzen. Am Besten sind hierfür TDateTime-Werte, da diese einmalig sind (ändern sich in sehr kleinen Abständen). Allerdings kannst du die Frames dann nur noch schlecht mit FindComponent finden, falls das bei dir der Fall ist.
Zu 2: AFAIK darfst du eine Komponente nicht in einer ihrer Ereignisbehandlungsroutinen freigeben. Wie du das Problem umgehen kannst weiß ich auf die Schnelle allerdings nicht. Greetz alcaeus |
Re: Einfügen von Frames
zu 1)
@alcaeus Klasse :-) so klappt es auch! zu 2) da werde ich nochmal auf die Suche gehen; es müsste doch dafür möglich sein, dass das Child dem Parent ein Signal gibt es zu löschen |
Re: Einfügen von Frames
Zu 2 kann ich dir auch gleich einen Link anbieten:
![]() Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 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