AGB  ·  Datenschutz  ·  Impressum  







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

Frames Problem

Ein Thema von DoktorD · begonnen am 5. Mär 2008 · letzter Beitrag vom 5. Mär 2008
Antwort Antwort
DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#1

Frames Problem

  Alt 5. Mär 2008, 16:31
Hi. Habe eben das erste Mal mit Frames gearbeitet und ich glaube ich habe schon wieder einen Fall erwischt, der nicht geht.
Das was ich vorhabe kann man auch mit MDI Forms lösen, will ich aber nicht.

Zu den beiden Programmen die im Anhang sind:

Das erste Programm funktioniert (Programm 1 im Anhang). Und zwar will ich das Frame dynamisch auf einer Form erzeugen (Align = alClient).
Das mache ich so:
Delphi-Quellcode:
procedure TFrmMain.Button1Click(Sender: TObject);
var
  MeineFrame : TMeineFrame;
begin
  MeineFrame := TMeineFrame.Create(self);
  MeineFrame.Parent := FrmMain;
end;
Wie schon erwähnt, das funktioniert auch.
Nun will ich das aber in meinem Projekt (Programm 2 im Anhang) einfügen und da funktioniert genau diese Vorgehensweise nicht. Der einzigste Unterschied ist, dass die Frame in einem anderen Fenster erzeugt wird (ist ein modales Fenster).

Warum geht das nicht? Erzeugt wird die Frame, nur angezeigt wird sie nicht.
Angehängte Dateien
Dateityp: rar frames_458.rar (385,9 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Frames Problem

  Alt 5. Mär 2008, 16:42
viellcht solltest du in form2 beim anzeigen form1.meinframe oder so. Oder es liegt daran dass du sie immer neu erstellst oder willst du das auch^^
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat
DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#3

Re: Frames Problem

  Alt 5. Mär 2008, 16:50
Zitat von Larsi:
viellcht solltest du in form2 beim anzeigen form1.meinframe oder so. Oder es liegt daran dass du sie immer neu erstellst oder willst du das auch^^
Wie meinst du das? Ich will ja erstmal, das die Frame angezeigt wird.

Will sie nicht immer neu erstellen (nur einmal).
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Frames Problem

  Alt 5. Mär 2008, 16:54
Hi,

wenn Du sowieso nur einmal erstellen willst, kannst Du den Frame doch direkt auf die Form legen und brauchst ihn nicht dynamisch zu erzeugen.

[edit] Und, btw., Du öffnet in Deinem Beispiel kein modales Fenster. [/edit]
[edit2] Falls Du es doch dynamisch machen willst, schreib anstatt:

MeineFrame.Parent := FrmModalesFenster; das hier:

MeineFrame.Parent := Self;
  Mit Zitat antworten Zitat
DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#5

Re: Frames Problem

  Alt 5. Mär 2008, 16:56
Zitat von Die Muhkuh:
Hi,

wenn Du sowieso nur einmal erstellen willst, kannst Du den Frame doch direkt auf die Form legen und brauchst ihn nicht dynamisch zu erzeugen.

[edit] Und, btw., Du öffnet in Deinem Beispiel kein modales Fenster. [/edit]
Nein, da ich unterschiedliche Frames erzeugen will (20 Unterschiedliche). Aber ich will die nicht alle geleichzeitig auf der Form (durch Visible True/False oder ähnliches)
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Frames Problem

  Alt 5. Mär 2008, 16:57
Hi,

alles klar, ich hab die Lösung bereits in Edit im Post oben dran geschrieben
  Mit Zitat antworten Zitat
DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#7

Re: Frames Problem

  Alt 5. Mär 2008, 17:00
Tatsächlich mit

MeineFrame.Parent := Self; gehts. Kannst du mir vielleicht noch erklären, was dabei der Unterschied ist?


Vielen vielen Dank
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Frames Problem

  Alt 5. Mär 2008, 17:04
Klar, kann ich das.

Du erzeugst Dein Fenster hiermit:

Delphi-Quellcode:
procedure TFrmMain.ModalesFensterffnen1Click(Sender: TObject);
var
  ModalesFenster : TFrmModalesFenster;
begin
  ModalesFenster := TFrmModalesFenster.Create(self);
  ModalesFenster.Show;
end;
Beachte, dass Du hier die Variable ModalesFenster deklarierst und damit das Fenster erstellst und aufrufst.

In Deinem modalen Fenster erzeugst Du damit Deinen Frame (das ist der alte Code!):

Delphi-Quellcode:
procedure TFrmModalesFenster.btnAnzeigenClick(Sender: TObject);
var
  MeineFrame : TMeineFrame;
begin
  MeineFrame := TMeineFrame.Create(self);
  MeineFrame.Parent := FrmModalesFenster;
end;
Du setzt den Parent auf FrmModalesFenster, welches aber, da Du oben eine eigene Variable definiert hast, gar nicht initialisiert ist.

Das heißt, Du setzt den Parent auf eine nicht initialisierte Variable, demnach wird das Fenster nicht angezeigt.

Um das Problem zu lösen, kannst Du entweder mit Self arbeiten, oder Du änderst den Code zum Erstellen des Fenster wie folgt ab:

Delphi-Quellcode:
procedure TFrmMain.ModalesFensterffnen1Click(Sender: TObject);
begin
  FrmModalesFenster := TFrmModalesFenster.Create(self);
  FrmModalesFenster.Show;
end;
So klappt es dann auch wieder.
  Mit Zitat antworten Zitat
DoktorD

Registriert seit: 13. Dez 2005
153 Beiträge
 
#9

Re: Frames Problem

  Alt 5. Mär 2008, 17:06
Achsooo. Mist, da hätte ich selber drauf kommen müssen.
Nochmals vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#10

Re: Frames Problem

  Alt 5. Mär 2008, 17:07
Kein Problem.

Ich würde übrigens die "Self"-Variante bevorzugen, erspart solche Unannehmlichkeiten.
  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 21:34 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