Announcement

Collapse
No announcement yet.

Procedure aus einer 2. Unit aufrufen

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

  • Procedure aus einer 2. Unit aufrufen

    Wer kann mir helfen ?

    Ich habe eine einfache Frage !

    Wie kann ich z.B. in Unit1 eine Procedure aus Unit2 aufrufen ?
    In Unit1 möchte ich aus z.B. einem Edit-Feld mit OnKeyExit eine
    Procedure aus der Unit2 aufrufen. Im Feld OnKeyExit listet er mir
    aber nur alle Proceduren aus der Unit1 auf.

    Gruß Lars

  • #2
    1. Unit2 in die USES-Klausel von Unit 1 einbinden<p>
    2. Ist die Procedure in Unit 2 eine normale Funktion, so kannst Du dann direkt drauf zugreifen. Ist die Procedure in einem Objekt, dann muss sie zumind. Public sein und kann dann über Objekt.Procedure aufgerufen werden.<p>
    3. Die Procedure in Unit 2 muss natürlich in deren implementation stehen
    Schöne Grüße, Mario

    Comment


    • #3
      Hallo Mario !

      Danke für Deine Nachricht. Da ich aber noch Neuling bin, komme
      ich leider immer noch nicht klar. Ich denke meine procedure ist
      in einem Objekt. Auch in Public habe ich meine procedure eingebunden.
      Kanst Du mir vielleicht ein kurzes Beispiel schreiben Z.B. mit Einbindung über Objekt.Procedure.

      Gruß Lar

      Comment


      • #4
        Hallo<p>
        Wenn deine Units "Unit1" und "Unit2" heißen, mußt du als erstes <br>in "Unit1" deine Unit2 einbinden.<br>
        Das machst du in der uses-Anweisung.<br>
        Deine uses-Anweisung sollte jetzt ungefähr so aussehen :<br>
        <pre>
        uses Windows, Forms, UNIT2;
        </pre>
        Als nächstes mußt du wissen, wo du die Procedure deklariert hast.
        <pre>
        unit unit2;
        interface
        (...)
        uses windows, forms;
        type
        TForm2 = class(TForm)
        private
        { Private-Deklarationen }
        // 1. Möglichkeit
        procedure Prozedur1
        public
        { Public-Deklarationen }
        // 2. Möglichkeit
        procedure Prozedur2
        end;
        // 3. Möglichkeit
        procedure Prozedur3
        var
        (...)
        implementation
        (...)
        end.
        </pre><p>
        Wenn du sie bei 1. deklariert hast, kannst du sie garnicht aufrufen, <br>da sie als privat deklariert ist, sie also nur innerhalb des <br> Objekts (hier Form2) aufgerufen werden kann.
        <p>
        Wenn du sie bei 2. deklariert hast, mußt du sie in Unit1 wie folgt aufrufen:

        Objektname.Prozedurname;<br>
        z.B.:
        <pre>Form2.Prozedur2;</pre>
        <p>
        Wenn du sie bei 3. deklariert hast, kannst du sie aufrufen, indem du <br> einfachst den Prozedurnamen verwendest:<br>
        <pre>
        Prozedur3
        </pre><br>
        Allerdings darf dann in keiner anderen Unit die über die Uses-Anweisung <br>eingebunden wird, eine Prozedur mit demgleichen Namen <br> vorhanden sein.<br>
        (Wenn du etwas fortgeschritten bist, wirst du feststellen, das<br> das schon erlaubt ist, wenn man Überladung benutzt, aber für<br>
        den Anfang solltest du darauf achten, das kein Name doppelt<br> vorkommt ).
        <br><br>
        Ich hoffe das hat dir geholfen.<br><br>
        Karsten

        Comment


        • #5
          Hallo Karsten !

          Vielen Dank, für Deinen Tip !
          Es funktioniert !

          Gruß Lar

          Comment

          Working...
          X