Von Form2 auf Form1 zugreifen
-
- Beiträge: 205
- Registriert: So 2. Dez 2007, 20:47
- OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
- CPU-Target: xxBit
- Wohnort: Schweiz
Von Form2 auf Form1 zugreifen
Hallo, wieder eine Anfängerfrage:
Ich will folgendes: Ich habe z. B. Form1 als Eingangsmaske. Nun will ich Daten erfassen. Starte Form 2 und will dort die Daten erfassen. Damit ich jedoch nicht auf jedem Form eine Datenbankverbindung machen muss mache ich die Verbindung auf Form1 und greife dann von Form2 oder Form3 je nach dem auf die Verbindung auf Form1 zu. Wie bringe ich diese Verbindung zusammen.
Peter
Ich will folgendes: Ich habe z. B. Form1 als Eingangsmaske. Nun will ich Daten erfassen. Starte Form 2 und will dort die Daten erfassen. Damit ich jedoch nicht auf jedem Form eine Datenbankverbindung machen muss mache ich die Verbindung auf Form1 und greife dann von Form2 oder Form3 je nach dem auf die Verbindung auf Form1 zu. Wie bringe ich diese Verbindung zusammen.
Peter
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Von Form2 auf Form1 zugreifen
Hallo Peter,Kuster Peter hat geschrieben:Wie bringe ich diese Verbindung zusammen.
wenn ich deine Frage richtig verstanden habe, sieht die Lösung so aus:
Füge in den uses-Bereich der units aller Forms, mit denen du auf die Form1 zugreifen möchtest, den Namen der unit der Form1 hinzu.
Wenn die Unit der Form1 also unit1 heißt, dann in den uses-Bereich der anderen Formen "unit1" hinzufügen, etwa so:
Code: Alles auswählen
uses blabla, blubb, unit1;
Form1.Datenbankverbindung.irgendwas;

Viele Grüße, Euklid
Zuletzt geändert von Euklid am Fr 4. Apr 2008, 14:04, insgesamt 2-mal geändert.
-
- Beiträge: 205
- Registriert: So 2. Dez 2007, 20:47
- OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
- CPU-Target: xxBit
- Wohnort: Schweiz
von Form 2 auf Form 1 zugreifen
Danke
so werde ich es machen.
Ich habe nur noch eine Frage: Wenn ich Form 2 wie folgt starte:
procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.create(self) do
begin
Show;
end;
end;
Dann ist Form2 am Anfang ja nicht im Speicher. Wenn ich Form 2 mit Close schliesse, ist es dann auch aus dem Speicher entfernt?
Man muss ja schauen, dass man nicht zuviel Speicher belegt.
Peter

Ich habe nur noch eine Frage: Wenn ich Form 2 wie folgt starte:
procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm2.create(self) do
begin
Show;
end;
end;
Dann ist Form2 am Anfang ja nicht im Speicher. Wenn ich Form 2 mit Close schliesse, ist es dann auch aus dem Speicher entfernt?
Man muss ja schauen, dass man nicht zuviel Speicher belegt.
Peter
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Nein es wird aber beim beenden deines programms automatisch von seinem Parent (Application) freigegeben. Closeaction ist per default auf caFree. Is also nicht nötig zu setzen.Dann ist Form2 am Anfang ja nicht im Speicher. Wenn ich Form 2 mit Close schliesse, ist es dann auch aus dem Speicher entfernt?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Nein er meint. beim beenden von From2. Weil beim vor dem aufrufen wird es ja wieder Installsiert.
Also müsste Kuster Peter zu erst prüfen ob es schon ein was Fertiges gibt von From2 wenn ja braucht er es ja nicht wieder installisieren. also sowas:
if not assigned(from2) then from2:=....
Also müsste Kuster Peter zu erst prüfen ob es schon ein was Fertiges gibt von From2 wenn ja braucht er es ja nicht wieder installisieren. also sowas:
if not assigned(from2) then from2:=....
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 101
- Registriert: Do 22. Nov 2007, 20:06
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: München
Hallo Euklid,
ich komme mit deinem Vorschlag leider noch nicht ans Ziel.
Folgendes habe ich:
Form1: IBConncetion1, SQLTransaction1, SQLQuery1, Datasource1
Form2: DBgrid1, Datasource1
unter uses: p8_f1 als unit-Name der Form1
wenn ich in der Datasource1 der Form2 unter DataSet Form1.SQLQuery1 eingebe
erhalte ich "ungültiger Eigenschaftswert".
Gruß
Alfred
ich komme mit deinem Vorschlag leider noch nicht ans Ziel.
Folgendes habe ich:
Form1: IBConncetion1, SQLTransaction1, SQLQuery1, Datasource1
Form2: DBgrid1, Datasource1
unter uses: p8_f1 als unit-Name der Form1
wenn ich in der Datasource1 der Form2 unter DataSet Form1.SQLQuery1 eingebe
erhalte ich "ungültiger Eigenschaftswert".
Gruß
Alfred
-
- Beiträge: 101
- Registriert: Do 22. Nov 2007, 20:06
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: München
Hallo Euklid,
Klassen sind noch eine Blackbox für mich. Ich weiß zwar was der Sinn ist. Nur in
der praktischen Anwendung habe ich noch Probleme.
Der Quelltext von Form 1 sieht wie folgt aus:
Gruß
Alfred
Klassen sind noch eine Blackbox für mich. Ich weiß zwar was der Sinn ist. Nur in
der praktischen Anwendung habe ich noch Probleme.
Der Quelltext von Form 1 sieht wie folgt aus:
Code: Alles auswählen
Type
{ TForm1 }
TForm1 = class(TForm)
Datasource1: TDatasource;
DBGrid1: TDBGrid;
IBConnection1: TIBConnection;
SQLQuery1: TSQLQuery;
SQLTransaction1: TSQLTransaction;
private
public
end;
Gruß
Alfred