Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Frame hat kein übergeordnetes Fesnter (https://www.delphipraxis.net/97855-frame-hat-kein-uebergeordnetes-fesnter.html)

Andy79 17. Aug 2007 11:26


Frame hat kein übergeordnetes Fesnter
 
habe folgenden Code, einmal gehts einmal nicht, aber warum?

Code:
procedure TfEtikettendruck.Sonderetiketten1Click(Sender: TObject);
begin
  frSonderetiketten := TfrSonderetiketten.Create(fEtikettendruck);
  frSonderetiketten.Parent := fEtikettendruck;
  with TAdsQuery.Create(nil) do
  try
    Databasename := 'Etikettendruck';
    SQL.Add('select Rahmen from Rahmen');
    SQL.Add('where Sonder=true');
    Open;
    while not eof do
    begin
      frSonderetiketten.ListBoxReports.Items.Add(FieldByName('Rahmen').asString);
      Next;
    end;
  finally
    Free;
  end;
end;

procedure TfEtikettendruck.Versandetiketten1Click(Sender: TObject);
begin
  frVersandetiketten := TfrVersandetiketten.Create(fEtikettendruck);
  frVersandetiketten.Parent := fEtikettendruck;
  with frVersandetiketten do
  begin
    ComboBoxDrucker.Items := Printers.Printer.Printers;
    ComboBoxDrucker.Items.Add('Standarddrucker');
    ComboBoxDrucker.Text := 'Standarddrucker';
  end;
end;
Bei Aufruf des Frames für Sonderetiketten keine Probleme,
bei Aufruf für Versandetiketten kommt aber der Fehler: "Element frVersandetiketten hat kein übergeordnetes Fenster" warum?
Es ist doch im Prinzip der selbe Aufruf. Die Frame sehen auch gleich aus vom Code her.
Wäre dankbar für nen Tip.

Gruß Andy

mkinzler 17. Aug 2007 11:35

Re: Frame hat kein übergeordnetes Fesnter
 
Wo kommt den der fehler genau? bei der Instanzerzeugung oder später?

Andy79 17. Aug 2007 11:41

Re: Frame hat kein übergeordnetes Fesnter
 
bei der Erzeugung direkt.
Habe mittlerweile entdeckt, das es an der RadioGroup lag die auf dem Frame liegt. die ist bei den Sonderetiketten nicht.
aber was ist an der Radiogroup so besonders?
wenn ich die lösche geht es wie bei dem anderen Frame.

Andy

mkinzler 17. Aug 2007 11:43

Re: Frame hat kein übergeordnetes Fesnter
 
Wer ist Owner/Parent der Radiogroup?

Andy79 17. Aug 2007 11:45

Re: Frame hat kein übergeordnetes Fesnter
 
mmh.. denke die sitz doch auf dem Frame, also ist der Frame Parent der Radiogroup.
habe gerade noch was bemerkt, nur wenn die Radiogroup Elemete enthält führt das zum Fehler.
eine leere Radiogroup macht keine Probleme?
sehr seltsam find ich.

TBx 17. Aug 2007 11:48

Re: Frame hat kein übergeordnetes Fenster
 
Hallo!

1. In welcher Zeile tritt der Fehler genau auf?
Hast Du im Create Deines Frames irgendwas gemacht? Z.B. die Combobox mit Werten gefüllt? Dann wird versucht, die Combobox neuzuzeichenen, und das geht natürlich schief, da der Parent ja erst dannach zugewiesen wird.
Oder setzt Du die Werte für die genannte Radiogroup oder deren ItemIndex? Es gilt das gleiche wie für die Combobox.

2. Du hast einige ganz gravierende Fehler in Deinem Code:
Delphi-Quellcode:
procedure TfEtikettendruck.Sonderetiketten1Click(Sender: TObject);
begin
// *****************************************************************************
// so nicht:
//  frSonderetiketten := TfrSonderetiketten.Create(fEtikettendruck);
// *****************************************************************************
// sondern so;
  frSonderetiketten := TfrSonderetiketten.Create(self);
// *****************************************************************************
// Begründung: Du verdrahtest Deinen Frame mit einer festen Instanz (fEtikettendruck).
// Gewünscht ist aber sicherlich, wie es dem oo-Ansatz entspricht,
// den erzeugten Frame mit der aktuellen Instand zu verdrahten.

//  frSonderetiketten.Parent := fEtikettendruck;
  frSonderetiketten.Parent := self; // siehe oben


  with TAdsQuery.Create(nil) do
  try
    Databasename := 'Etikettendruck';
    SQL.Add('select Rahmen from Rahmen');
    SQL.Add('where Sonder=true');
    Open;
    while not eof do
    begin
      frSonderetiketten.ListBoxReports.Items.Add(FieldByName('Rahmen').asString);
      Next;
    end;
  finally
    Free;
  end;
end;

procedure TfEtikettendruck.Versandetiketten1Click(Sender: TObject);
begin
//  frVersandetiketten := TfrVersandetiketten.Create(fEtikettendruck);
  frVersandetiketten := TfrVersandetiketten.Create(self); // siehe oben
//  frVersandetiketten.Parent := fEtikettendruck;
  frVersandetiketten.Parent := self; // siehe oben
  with frVersandetiketten do
  begin
//    ComboBoxDrucker.Items := Printers.Printer.Printers;
    ComboboxDrucker.Items.Assign (Printers.Printer.Printers);
//  --> Du möchtest sicherlich nur alle Drucker in Deine Combobox eintragen.
// die nachfolgende Zeile würde auch für schwerwiegende Systemfehler sorgen,
// wenn Du die Zuweisung der Comboboxeinträge auf die vorherige Art machst.
    ComboBoxDrucker.Items.Add('Standarddrucker');
    ComboBoxDrucker.Text := 'Standarddrucker';
  end;
end;
Hope it helps

onlinekater

PS: Du solltest die genannten Korrekturen (besonders die mit dem Assign) durchführen, bevor Du weiter den im Betreff genannten Fehler suchst.
Er könnte sich damit evtl. schon erledigen :-) siehe Punkt 1
[Edit]Punkt1 überarbeitet[/Edit]

Andy79 17. Aug 2007 12:02

Re: Frame hat kein übergeordnetes Fesnter
 
nein mache im Create des Frames überhaupt nichts.
Der Fehler dritt direkt beim Create auf

Delphi-Quellcode:
frVersandetiketten := TfrVersandetiketten.Create(self);
sowie ich ein Item in der Radiogroup vorab definiere kracht es.
Wenn ich im nachhinein der Radiogroup Items hinzufüge klappt das.
so könnte ich das Problem jetzt umgehen, aber schön ist das nicht.

Hawkeye219 17. Aug 2007 12:05

Re: Frame hat kein übergeordnetes Fesnter
 
Hallo Andy,

ist dir klar, daß du mit jedem Button-Klick eine neue Instanz deiner Frames erzeugst? Nur die jeweils letzte Instanz ist über die Felder frSonderetiketten bzw. frVersandetiketten direkt erreichbar, alle anderen liegen nur im Speicher herum. Das Entsorgen aller Frames erfolgt erst bei der Freigabe der beiden Formulare.

Gruß Hawkeye

Andy79 17. Aug 2007 12:08

Re: Frame hat kein übergeordnetes Fesnter
 
@Hawkeye219
ja das ist mir klar, ist aber nicht schlimm, das wird noch etwa sauberer werden.
ist ja noch nicht fertig, trotzdem Danke für den Tip.

TBx 17. Aug 2007 12:19

Re: Frame hat kein übergeordnetes Fesnter
 
häng doch einfach mal Quelltext und dfm zu dem Frame an, damit wir mal drübergucken können.
So ins Blaue raten ist nicht ganz so produktiv ;-)

Gruß

onlinekater


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr.
Seite 1 von 2  1 2      

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