AGB  ·  Datenschutz  ·  Impressum  







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

Einfügen von Frames

Ein Thema von Sunlight · begonnen am 12. Jul 2004 · letzter Beitrag vom 12. Jul 2004
Antwort Antwort
Sunlight

Registriert seit: 12. Jul 2004
7 Beiträge
 
Delphi 7 Enterprise
 
#1

Einfügen von Frames

  Alt 12. Jul 2004, 14:40
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:
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.
Einmalig klappt das auch sehr schön, beim zweiten Mal bekomme ich dann aber einen Fehler: 'A component named Frame1 already exists'.
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
Hans
Angehängte Dateien
Dateityp: zip dyn.zip (1,8 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Einfügen von Frames

  Alt 12. Jul 2004, 14:48
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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Sunlight

Registriert seit: 12. Jul 2004
7 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Einfügen von Frames

  Alt 12. Jul 2004, 17:52
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
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Einfügen von Frames

  Alt 12. Jul 2004, 18:53
Zu 2 kann ich dir auch gleich einen Link anbieten:
http://www.delphipraxis.net/internal...ct.php?t=29732

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  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:08 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