Announcement

Collapse
No announcement yet.

Kommunikation zwischen 2 TForms ?

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

  • Kommunikation zwischen 2 TForms ?

    Hallo,<br>
    ich habe folgendes Problem : <br>
    In meinem Programm gibt es ein "Hauptform" TForm1. Ein 2. TForm aus einer anderen Unit wird beim Drücken eines Buttons eingeblendet und es werden Daten eigegeben. Diese Daten werden in einen Record gespeichert, der von Unit1 an Unit 2 übergeben wird. Das funzt auch. Nur, wie bekommt nun das "Hauptform" mit, das sich in dem Record Daten geändert haben, um die Bildschirmanzeige zu "refreshen" ? Ich könnte zwar ein .ShowModal machen und dann die Daten anzeigen, aber diese Variante gefällt mir nicht. Ich finde aber dafür einfach keine Lösung, ist aber sicher recht simpel und ich bin für jeden Tip dankbar.<br><br>
    Gruss<br>
    JT

  • #2
    Du bekommst ja im Form2 mit, daß sich die Daten geändert haben. Dann erstelle im Form1 eine Methode refreshdaten, die den Bildschirm anhand der Daten darstellt. Wenn sich die Daten im Form2 geändert haben, rufst Du dort im form2 form1.refreshdaten auf.<br>
    Fran

    Comment


    • #3
      Hallo Frank,<br><br>

      estmal danke für Deine Antwort. Das würde bedeuten, das in Form2 die Daten aus Form1 bekannt wären. Sind Sie aber nicht, da es eine eigene Klasse ist. Ich hatte mir gedacht, das ich das irgendwie über eigene Ereignisse wie z.B. Form2.OnRecordChange machen könnte und in Form1 dann eine eigene Behandlungsroutine schreiben. Ich hab nur keinen blassen Schimmer wie.<br><br>
      Gruss<br>
      J

      Comment


      • #4
        Die Datenstruktur muß Form2 nicht bekannt sein. Letztendlich ist das onrecordchange ja auch nur ein Verweis auf eine Routine, die aufgerufen wird wenn sich der Record ändert. das ganze könnte dann so aussehen:<br>
        <pre>
        Type
        TRecordchangeProcrocedure Changeereignis(Sender:TObject);

        Tform2=Class (Tform)
        .
        .
        .
        protected
        Fonrecordchange:TRecordchangeProc;
        published
        property onrecordchange:TRecordchangeProc read Fonrecordchange write Fonrecordchange;
        end;

        //Jetzt kannst Du, falls sich die Daten ändern über folgende Anweisung weitermachen

        .
        .
        .
        if datachaged then
        if assigned(onrecordchange) then
        Fonrecordchange(self);

        //im Form1 mußt du jetzt folgendes hinzufügen:
        procedure myChangeereignis(Sender:TObject);
        begin
        //Erneure meine Daten
        end;
        //Wenn Beide Formulare erzeugt sind mußt Du irgendwo noch folgende Zuweisung machen:
        form2.onrecordchange:=form1.myChangeereignis;
        </pre>
        Ich hoffe das hilft Dir weite

        Comment

        Working...
        X