AGB  ·  Datenschutz  ·  Impressum  







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

frame ansprechen

Ein Thema von Delphi-Phil · begonnen am 27. Sep 2009 · letzter Beitrag vom 27. Sep 2009
Antwort Antwort
Delphi-Phil

Registriert seit: 22. Jun 2007
410 Beiträge
 
#1

frame ansprechen

  Alt 27. Sep 2009, 12:59
Hallo zusammen,

ich habe folgendes Problem.

Ich habe ein Form da drauf ist ein Panel. Auf dieses Panel lade ich ein Frame. Auf diesem Fram sind Buttons Grids usw. jetzt ist auf diesem Frame was ja auf einem Panel klebt wieder ein Panel auf dem ich ein neues Frame laden muss mit verschiedenen Edit Feldern.

Wie kann ich das lösen...

hier noch mein code um das Frame auf das Panel zu legen was auf meinem form liegt:

Delphi-Quellcode:
procedure TFormHaupt.JvNavPnlPageSchuelerverwClick(Sender: TObject);
var
newFrame: TFrmSchuelerverwaltung;
begin
newFrame := TFrmSchuelerverwaltung.Create(PnlMain);
newframe.Align := alClient;
newFrame.Visible := true;
newframe.Parent := PnlMain;
FormData.TblKlasse.Open;
FormData.QrySchueler.Open;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#2

Re: frame ansprechen

  Alt 27. Sep 2009, 13:43
Entweder änderst du NewFrame von einer lokalen Variablen zu einem Feld in TFormHaupt oder du gibst dem NewFrame einen eindeutigen Namen, dann kannst du es später mit PnlMain.FindChildControl wieder finden.
Uwe Raabe
  Mit Zitat antworten Zitat
Delphi-Phil

Registriert seit: 22. Jun 2007
410 Beiträge
 
#3

Re: frame ansprechen

  Alt 27. Sep 2009, 13:45
verstehe ich nicht ganz, ich habe das noch nie gemacht!
kannst du mir mal bitte ein beispiel zeigen...!
  Mit Zitat antworten Zitat
Delphi-Phil

Registriert seit: 22. Jun 2007
410 Beiträge
 
#4

Re: frame ansprechen

  Alt 27. Sep 2009, 15:20
Um es nochmal einfacher auszudrücken!

ich habe ein form da drauf ein panel und auf dem panel ein frame. jetzt möchte ich eine komponente ansprechen die auf dem frame liegt aus der form unit.

Wie kann ich dies machen??
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#5

Re: frame ansprechen

  Alt 27. Sep 2009, 15:40
Es gibt da zwei unterschiedliche Ausgangsmöglichkeiten:

1. Du hast den Frame im VCL-Designer in das Panel gesetzt: dann existiert ein Feld im Form, das du direkt ansprechen kannst.
2. Du hast den Frame zur Laufzeit hinzugefügt (wie in deinem ersten Post beschrieben), dann kannst du entweder eine eigene Variable für diesen Frame im Form definieren oder dem Frame einen Namen geben und später über FindChildControl wiedersuchen.

Wie gebe ich dem Frame einen Namen?

Delphi-Quellcode:
  
newFrame := TFrmSchuelerverwaltung.Create(PnlMain);
newFrame.Name := 'DerFrameName';
newframe.Align := alClient;
newFrame.Visible := true;
newframe.Parent := PnlMain;
Wie finde ich den Frame wieder?

Delphi-Quellcode:
var
  DerFrame: TFrmSchuelerverwaltung;
begin
  DerFrame := PnlMain.FindChildControl('DerFrameName') as TFrmSchuelerverwaltung;
 ...
Auf die Controls des Frames kannst du dann ganz einfach über die entsprechenden Namen zugreifen. Ohne weitere Informationen kann ich auch kein sinnvolles Beispiel geben. Aber angenommen, das Panel auf dem Frame heißt "DasPanel", dann erfolgt der Zugriff im vorgehenden Beispiel über "DerFrame.DasPanel".
Uwe Raabe
  Mit Zitat antworten Zitat
Delphi-Phil

Registriert seit: 22. Jun 2007
410 Beiträge
 
#6

Re: frame ansprechen

  Alt 27. Sep 2009, 16:10
Es funktioniert irgendwie noch nicht so wie es soll. Das Zweite Frame sieht man nur noch alleine, von dem Rest ist nichts mehr zu sehen...

Hier nochmal der Code:
Delphi-Quellcode:

//Schülerverwaltung laden
procedure TFormHaupt.JvNavPnlPageSchuelerverwClick(Sender: TObject);
var
newFrame: TFrmSchuelerverwaltung;
DerFrame: TFrmSchuelerverwaltung;

newFrame2: TFrmStammdaten;
begin
newFrame := TFrmSchuelerverwaltung.Create(PnlMain);
newFrame.Name := 'Schuelerdaten';
newframe.Align := alClient;
newFrame.Visible := true;
newframe.Parent := PnlMain;

//Schülerdaten laden
FormData.TblKlasse.Open;
FormData.QrySchueler.Open;

DerFrame := PnlMain.FindChildControl('Schuelerdaten') as TFrmSchuelerverwaltung;

newFrame2 := TFrmStammdaten.Create(DerFrame.PnlSchuelerverwaltung);
newframe2.Align := alClient;
newFrame2.Visible := true;
newframe2.Parent := PnlMain;
end;
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#7

Re: frame ansprechen

  Alt 27. Sep 2009, 16:27
dann mach es doch so: Sag deinem Frame auf dem Handes des Forms, dass es die Daten für das interne Panel zu laden hat und gib dabei auch dem Frame noch an, welche Daten es zu laden hat. Dann sollte das alles gehen.
Ansonsten: Sag dem Frame, dass das interne Panel public/published ist und erstelle dein internes Frame auf dem Published-Panel

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Delphi-Phil

Registriert seit: 22. Jun 2007
410 Beiträge
 
#8

Re: frame ansprechen

  Alt 27. Sep 2009, 16:29
kann ich es nicht machen wie in meinem code von oben? da scheint doch nur ein denkfehler zu sein oder??
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#9

Re: frame ansprechen

  Alt 27. Sep 2009, 16:35
Delphi-Quellcode:
var
  neu: TStammdaten;
begin
//...

neu := TFrmStammdaten.Create(neuFrame.PnlSchuelerverwaltung);
neu.parent := neuFrame.PnlSchuelerverwaltung;
Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.024 Beiträge
 
Delphi 12 Athens
 
#10

Re: frame ansprechen

  Alt 27. Sep 2009, 16:43
Zitat von Delphi-Phil:
kann ich es nicht machen wie in meinem code von oben? da scheint doch nur ein denkfehler zu sein oder??
Ja, ändere die letzte Zeile in

newframe2.Parent := DerFrame.PnlSchuelerverwaltung; und es sollte gehen.

Allerdings brauchst du den ganzen Kram mit DerFrame und FindChildControl gar nicht, wenn das Ganze innerhalb einer einzigen Methode stattfindet:

Delphi-Quellcode:
//Schülerverwaltung laden
procedure TFormHaupt.JvNavPnlPageSchuelerverwClick(Sender: TObject);
var
  newFrame: TFrmSchuelerverwaltung;
  newFrame2: TFrmStammdaten;
begin
  newFrame := TFrmSchuelerverwaltung.Create(PnlMain);
  newframe.Align := alClient;
  newFrame.Visible := true;
  newframe.Parent := PnlMain;

  //Schülerdaten laden
  FormData.TblKlasse.Open;
  FormData.QrySchueler.Open;

  newFrame2 := TFrmStammdaten.Create(newFrame.PnlSchuelerverwaltung);
  newframe2.Align := alClient;
  newFrame2.Visible := true;
  newframe2.Parent := newFrame.PnlSchuelerverwaltung;
end;
Uwe Raabe
  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 10:05 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