Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unit-übergreifend arbeiten/Datenaustausch zwischen Units?? (https://www.delphipraxis.net/58782-unit-uebergreifend-arbeiten-datenaustausch-zwischen-units.html)

Rayne 12. Dez 2005 16:42


Unit-übergreifend arbeiten/Datenaustausch zwischen Units??
 
Hallo Leute!

Ich habe folgendes Problem:

Ich habe 2 Formulare.
Im Formular 1 habe ich eine Prozedur „Blättern“, mit der ich durch meinen angelegten Datensatz blättern kann und mir die Daten in Edit-Feldern anzeigt..

Nun möchte ich im Formular 2 auf genau diese Informationen zugreifen. Ich möchte dort also genau durch denselben Datensatz mit derselben Prozedur blättern können.

Jedoch weiß ich nicht ganz genau, wie ich das bewerkstelligen kann :-o

Die Prozedur im Formular 1 heißt:

Delphi-Quellcode:
procedure TForm1.Blttern1Click(Sender: TObject);
begin
  if r<anzahl then
    begin
     edit1.text:=saetze[r].gurtzeug;
     edit2.text:=IntToStr(saetze[r].baujahr1);
     edit3.text:=IntToStr(saetze[r].spruenge1);

     edit4.text:=saetze[r].hauptschirm;
     edit5.text:=IntToStr(saetze[r].baujahr2);
     edit6.text:=IntToStr(saetze[r].spruenge2);

     edit7.text:=saetze[r].reserve;
     edit8.text:=IntToStr(saetze[r].baujahr3);
     edit9.text:=IntToStr(saetze[r].spruenge3);

     edit10.text:=saetze[r].aad;
     edit11.text:=IntToStr(saetze[r].baujahr4);
     edit12.text:=IntToStr(saetze[r].spruenge4);

     Edit13.Text:=IntToStr(saetze[r].preis);
     Edit14.Text:=IntToStr(saetze[r].index);

     r:=r+1;
    end
  else
    begin
      r:=0;
    end;
end;
Genau diesen Quellcode möchte ich auch im Formular 2 verwenden, um mir auch dort diese Informationen anzeigen zu lassen.
Ich brauche quasi so eine Art „Verknüpfung“ ;-)

Ich meine mich erinnern zu können, dass es dort Befehle gibt wie „uses Unit X“ oder „with Unit X do“, aber so richtig bin ich mir da nicht sicher und ich weiß auch nicht, an welche Stelle diese Befehle müssen :-(

Wäre euch für jede Hilfe sehr dankbar :-)

Rayne

tomsel 12. Dez 2005 17:02

Re: Unit-übergreifend arbeiten/Datenaustausch zwischen Units
 
Hallo,

Uses <unit> ist zunächst mal richtig. 'With' hat mit Units aber nichts zu tun. Da Du direkt auf die Edit-Controls zugreifst, kannst Du die Prozedur, so wie sie ist, nicht für ein anderes Form verwenden. Dazu könntest Du z. Bsp. eine ähnliche Prozedur 'Blaettern' in einer dritten unit schreiben, die die Daten z.Bsp. über var-Parameter zurückgibt. In dieser Unit müssten auch das Array Sätze und der Satzzeiger r lokal deklariert sein, außerdem sollten da auch die Funktionen zum Laden und Speichern dar Daten, zum Hüpfen auf den ersten und letzten Satz und was Du sonst noch brauchst drin sein. Beide Forms können diese Prozeduren dann verwenden, wenn die Unit mit uses bei beiden eingebunden wird.

Alle Klarheiten beseitigt?

Rayne 12. Dez 2005 20:01

Re: Unit-übergreifend arbeiten/Datenaustausch zwischen Units
 
Hi!
So richtig viel konnte ich aus deiner Aussage leider nicht entnehmen, was aber wohl mehr daran liegt, dass ich ein ziemlich n00b in Delphi bin ;-)

Habe jetzt gehört, dass ich die Prozedur aus Form 1 in Form 2 einfach so aufrufen kann: Form1.meine Prozedur

Habe die Prozedur in Form 2 also so geschrieben:

Delphi-Quellcode:
procedure TForm1.Blttern1Click(Sender: TObject);
begin
  if r<anzahl then
    begin
     edit1.text:=saetze[r].gurtzeug;
     edit2.text:=IntToStr(saetze[r].baujahr1);
     edit3.text:=IntToStr(saetze[r].spruenge1);

     edit4.text:=saetze[r].hauptschirm;
     edit5.text:=IntToStr(saetze[r].baujahr2);
     edit6.text:=IntToStr(saetze[r].spruenge2);

     edit7.text:=saetze[r].reserve;
     edit8.text:=IntToStr(saetze[r].baujahr3);
     edit9.text:=IntToStr(saetze[r].spruenge3);

     edit10.text:=saetze[r].aad;
     edit11.text:=IntToStr(saetze[r].baujahr4);
     edit12.text:=IntToStr(saetze[r].spruenge4);

     Edit13.Text:=IntToStr(saetze[r].preis);
     Edit14.Text:=IntToStr(saetze[r].index);

     r:=r+1;
    end
  else
    begin
      r:=0;
    end;
end;
Allerdings kommt dann folgender Fehler:

';' erwartet, aber '.' gefunden


Woran kann das liegen? Ist der Ansatz überhaupt richtig?

Vielen Dank :-)

Rayne


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz