Announcement

Collapse
No announcement yet.

eine Variable im ganzen Programm verwenden

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

  • #16
    Weil ich nicht genauweiß wie ich das Anwenden muß.

    was genau schreib ich in diese Unit "MyGlobals.pas".

    Werden die hier nur deklariert? aber nicht verwendet und ich rufe sie dann einfach in jedem form wo ich die variablen brauche auf???

    So vielleicht???

    Comment


    • #17
      <p>Hallo Bine,<br>
      <br>
      genau!! Im Prinzip so ähnlich wie Dein Beispiel mit der MainForm.<br>
      <br>
      <pre>
      // --- Beispiel
      unit MyGlobals;

      interface

      uses
      Windows; // ggf. noch andere benötigte Units

      var
      MyGlobalStr :String;
      GlobalZaehler:Integer;

      implemetation

      initialization
      // Hier können (müssen aber nicht) die Vars mit Werten belegt
      // werden, die zum Programmstart evtl. benötigt werden.
      MyGlobalStr:='Test';

      end. // MyGlobals
      </pre>
      <br>
      Diese Unit bindest Du dann in die Units ein, die die Variablen benötigen.<br>
      <br>
      Gruß Thomas</p&gt

      Comment


      • #18
        Danke genauso ein Beispiel hab ich mir gewünscht, mit soeinem kann man wenigstens was anfangen.

        DANKE!!!!! BINE:_

        Comment


        • #19
          ähm t'schulde noch ein Frage,.. wie rufe ich eine Procedure von einem anderem Form/Unit auf??????

          form1.procedure... oder wie?

          Comment


          • #20
            <p>Hallo Bine,<br>
            <br>
            ja, was Forms betrifft! Vorrausgesetzt, die Form existiert bereits und Du hast die betroffene Unit in die Uses-Kausel aufgenommen.<br>
            <br>
            Gruß Thomas</p&gt

            Comment


            • #21
              Hallo Thomas,

              geht nicht er kennt sie nicht,..

              also ich habe in der uses-Kausel das formxyz definiert;

              und der aufruf erfolgt so formxyz.seteingabefelder(1);

              aber er schreibt undefinierter Bezeichner 'seteingabefelder'

              hängt das vielleicht mit dem zusammen das ich das form mit showmodal aufgerufen habe??? oder nicht????

              BINE :_

              Comment


              • #22
                Handelt es sich bei "seteingabefelder" vielleicht um eine Private-Prozedur? Du musst die Prozeduren aus anderen Formulare im Public-Teil im Interface des Formulars stellen

                Comment


                • #23
                  hmm.?? hat nicht so ganz funktioniert!

                  Ich weiß jetzt zwar wies gehts aber es ist nicht die Lösung die ich gesucht habe.

                  Trotzdem danke :_

                  Comment


                  • #24
                    <p>Hallo Bine,<br>
                    <br>
                    Du darfst in der Uses-Klauses nichts definieren. Du mußt die Formular-Datei in Uses aufnehmen. Außerdem müssen die Methoden als public deklariert sein. Wenn Du mit ShowModal ein Formular anzeigst, mußt Du 'seteingabefelder' vor ShowModal aufrufen.<br>
                    <br>
                    Gruß Thomas</p&gt

                    Comment


                    • #25
                      Hallo Thomas,

                      ich glaube wir reden da aneinander vorbei!!

                      Also ich rufe mein Form2 mit showmodal auf und dann arbeite ich mit diesem Form2 und bevor ich wieder zurückkehren will (zu dem Form1 wo ich gekommen bin) will ich das 'seteingabefelder' des Form1 ausführen.

                      Ich hoffe ich konnte es erklären

                      Comment


                      • #26
                        <p>Hallo Bine,<br>
                        <br>
                        vielleicht so?<br>
                        <br>
                        <pre>
                        procedure OeffneForm2(aSender:TObject);
                        var aFrm:TForm2;
                        begin
                        ...
                        aFrm:=TForm2.Create(Self);
                        if (aFrm.ShowModal=mrOk) then seteingabefelder;
                        aFrm.Free;
                        ...
                        end;
                        </pre>
                        <br>
                        Gruß Thomas</p&gt

                        Comment


                        • #27
                          <p>Hallo Bine,<br>
                          <br>
                          vielleicht so?<br>
                          <br>
                          <pre>
                          procedure TForm1.OeffneForm2(aSender:TObject);
                          var aFrm:TForm2;
                          begin
                          ...
                          aFrm:=TForm2.Create(Self);
                          if (aFrm.ShowModal=mrOk) then seteingabefelder;
                          aFrm.Free;
                          ...
                          end;
                          </pre>
                          <br>
                          Gruß Thomas</p&gt

                          Comment


                          • #28
                            Nein nein ,...

                            Also Thomas, ich erklär was das form2 tut! Also form2 wird also showmodal geöffnet, dann hat der user eine auswahl was er tun will.

                            1) den geänderten Datensatz speichern ODER

                            2) den geänderten Datensatz als NEUEN DAtensatz anlegen

                            und abhängig was er dann für eine Auswahl trifft, muß ich dann beim Schliessen entscheiden wie das form1 aussieht wenn er das form2 schließt.

                            seteingabefelder definiert wie die eingabefelder enabled true/false gesetzt sind und welche Buttons gerade enabled true/false gesetzt sind.

                            Da ich den aufruf nicht am form1 machen kann, muß ich es am form2 beim schliessen machen und deswegen muß ich auf eine Procedure (ausgeführt wird es aber am form1) des form1 zugreifen.

                            so, jetzt glaube ich das es klar ist :_)

                            Danke für deine geduld :_)

                            BINE :_

                            Comment


                            • #29
                              <p>Hallo Bine,<br>
                              <br>
                              ich glaube so langsam dämmerts. Da hast Du das Problem, dass sich Dadurch eine Zirkelreferenz ergibt.<br>
                              <br>
                              Was spricht dagegen, wenn Du die benötigten Info's von Form2 nach Form1 zurückgibst und dann nach dem Schließen von Form2 ausführst?<br>
                              <br>
                              <pre>
                              unit Form2;
                              interface
                              uses
                              Windows, Forms, ....;
                              type
                              TForm2=class(TForm);
                              ....
                              private
                              function GetUserEingabe;
                              public
                              property UserEingabe:Integer read GetUserEingabe;
                              ...
                              end;
                              implementation
                              function TForm2.GetUserEingabe:Integer;
                              begin
                              if "ändern" then Result:=0 else Result:=1;
                              end;
                              end.
                              </pre>
                              <pre>
                              procedure TForm1.OeffneForm2(aSender:TObject);
                              var aFrm:TForm2;
                              begin
                              ...
                              aFrm:=TForm2.Create(Self);
                              if (aFrm.ShowModal=mrOk) then seteingabefelder(aFrm.UserEingabe);
                              aFrm.Free;
                              ...
                              end;
                              </pre>
                              <br>
                              Also ich würde es so od. so aähnlich realisieren.<br>
                              <br>
                              Gruß Thomas</p&gt

                              Comment


                              • #30
                                procedure TForm1.OeffneForm2(aSender:TObject);
                                var aFrm:TForm2;
                                begin
                                ...
                                aFrm:=TForm2.Create(Self);
                                if (aFrm.ShowModal=mrOk) then seteingabefelder(aFrm.UserEingabe);
                                aFrm.Free;
                                ...
                                end;

                                was passiert da?

                                Comment

                                Working...
                                X