![]() |
Frame hat kein übergeordnetes Fesnter
habe folgenden Code, einmal gehts einmal nicht, aber warum?
Code:
Bei Aufruf des Frames für Sonderetiketten keine Probleme,
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 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 |
Re: Frame hat kein übergeordnetes Fesnter
Wo kommt den der fehler genau? bei der Instanzerzeugung oder später?
|
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 |
Re: Frame hat kein übergeordnetes Fesnter
Wer ist Owner/Parent der Radiogroup?
|
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. |
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:
Hope it helps
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; 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] |
Re: Frame hat kein übergeordnetes Fesnter
nein mache im Create des Frames überhaupt nichts.
Der Fehler dritt direkt beim Create auf
Delphi-Quellcode:
sowie ich ein Item in der Radiogroup vorab definiere kracht es.
frVersandetiketten := TfrVersandetiketten.Create(self);
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. |
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 |
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. |
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 |
Re: Frame hat kein übergeordnetes Fesnter
Liste der Anhänge anzeigen (Anzahl: 2)
ok, annbei, steht aber eigentlich nicht viel drin
|
Re: Frame hat kein übergeordnetes Fesnter
ok, das ist nun die Version, die bei Dir läuft.
Poste doch bitte auch mal die, die nicht läuft. Ich habe hier einfach mal über den OI Items in die RadioGroup gepackt --> funktioniert auch Gruß onlinekater |
Re: Frame hat kein übergeordnetes Fesnter
die die nicht funktioniert siehtz genauso aus, nur das nachträgliche zuweisen der Items weg und vorab definiert.
sonst kein unterschied. das ist ja das komische. |
Re: Frame hat kein übergeordnetes Fesnter
was verstehst Du unter vorab definiert? Items üner den Objectinspector eintragen?
|
Re: Frame hat kein übergeordnetes Fesnter
genau das meine ich! so wie ich da einen eintrage bekomme ich die Fehlermeldung.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:37 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