Einzelnen Beitrag anzeigen

TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#6

Re: Frame hat kein übergeordnetes Fenster

  Alt 17. Aug 2007, 11:48
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]
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat