Announcement

Collapse
No announcement yet.

Zugriff auf MDI Fenster

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugriff auf MDI Fenster

    Hallo Gemeinde,

    trotz Internet und div. B&uuml;chern &uuml;ber Delphi konnte ich folgendes Problem noch nicht l&ouml;sen: <br>
    ein Programm, da&szlig; in etwa dem SAP CMR Modul &auml;hneln soll, ruft aus dem Hauptformular ein MDIChild-Formular auf, in dem eine Suchfunktion eingebaut ist. Aus einem DB-Grid in dem Suchformular kann der Benutzer einen Wert auswählen. Mit diesem Wert wird ein Datensatz aus einer Interbase 6 Datenbanktabelle gesucht. Die Werte der Datensatzfelder werden in ein Objekt mit der gleichen Struktur wie der Datensatz kopiert. Diese Werte sollen nun in Textfelder eines weiteren MDI-Formular übernommen werden. Doch bei jeder Zuweisung, wobei es egal ist, von wo aus (Hauptformular, Such-MDIForm) die Zuweisung erfolgt, bricht die Ausführung mit einer Zugriffsverletzung ab.
    Verwendet wird D5 Prof. Interbase 6, XP.

    Auf Eure L&ouml;sungen bin ich echt gespannt.

    Gru&szlig; Uwe

  • #2
    Etwas Beispiel-Code wäre hilfreicht. So können wir nur in die Glaskugel schauen.

    Ich vermute mal du verwendest keine gültiges Formularreferenz (nil)

    Comment


    • #3
      Hallo Bernhard,<br><br>inzwischen (seit 10 min. :-))) läuft es.
      Zur Erl&auml;uterung:
      CustSet: die dem Tabellen-Datensatz entsprechende Datenstruktur(Klasse mit Feldern)
      tbCustomers: SQL-Abfrage
      FillCustSet: Routine zum Füllen von CustSet
      CreateCust: Kundenformular instanziieren
      Nachfolgend die Codeschnippsel:
      1. aus dem Suchformular:
      begin
      with SpediData.tbCustomers do
      begin
      if Active = True then Close;
      Params[0].AsInteger:= CustID;
      Prepare;
      Open;
      end;
      CustSet.FillCustSet(SpediData.tbCustomers);
      fmMain.CreateCust;
      Close;
      end;

      Wenn ich im Suchformular nach dem instanziieren von CustForm die Routine zum Kopieren der Daten aus CustSet in die Editfelder des Kundenformulars aufrufe, dann knallt es vernehmlich.
      Ich habe eben diese Routine (edFirma1.Text:= CustSet.Firma1, etc.) jetzt an den Befehl "CustForm:= TfmCustomers.Create(self);" im Hauptformular angehängt - und es läuft.
      Jedoch will ich den da nicht haben - zwecks der Ablauflogik. Sondern eben nach OK-Click in der Suchform.

      Die Formularreferenz existiert; ich habe das mit "if fmMain.ActiveMDIChild = fmCustomers" überprüft. Aber vielleicht ist das nicht der richtige Weg.

      Gru&szlig;
      Uw

      Comment


      • #4
        Hört sich nicht gerade nach Trennung von Userinterface
        und Business-Logik an....

        Comment

        Working...
        X