Zugriff auf Komponenten einer anderen Unit?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Giss
Beiträge: 22
Registriert: Sa 26. Mär 2011, 23:25
OS, Lazarus, FPC: Linux (L 0.9.28 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Osnabrück

Zugriff auf Komponenten einer anderen Unit?

Beitrag von Giss »

Hallo zusammen,

ich möchte gerne in einem Fenster ein Password eingeben können, dass er in einer Komponente eines anderen Fensters dann übernimmt. ich habe dazu folgende Codes:

Code: Alles auswählen

uses
  Form2 in 'unit2.pas';
 
procedure TForm1.MenuItem2Click(Sender: TObject);
var
  f : TForm2;
begin
  with ZConnection1 do
  begin
    if Connected then Disconnect;
    HostName:='localhost';
    User:='sysdba';
  end;
     f := TForm2.Create(nil);                      // Neues Formular aufmachen
     try
       f.ShowModal();
     finally
       FreeAndNil(f);
     end;
end;

Code: Alles auswählen

//uses
  //Form1 in 'Unit1.pas';
procedure TForm2.Button1Click(Sender: TObject);
begin
  Form1.ZConnection1.Password:= LabeledEdit1.Text;
  try
    Form1.ZConnection1.Connect;
    If Form1.ZConnection1.Connected then ShowMessage('Verbunden')
    else ShowMessage('Falsches Passwort. Bitte erneut versuchen.');
  finally
    Close;
  end;
end;
Wenn ich in der 2.Unit die uses drin lasse, dann kompiliert er sich tot, abwechselnd immer unit1 und unit2.
Wenn ich es wie im Beispiel rauskommentiere, dann kann ich nicht auf die Komponenten der 1.Unit zugreife. Und ich will nicht mit Hilfsvariablen arbeiten.
Könnt ihr mir da vielleicht eine Hilfestellung geben?

Danke
Christian

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Zugriff auf Komponenten einer anderen Unit?

Beitrag von u-boot »

Giss hat geschrieben:

Code: Alles auswählen

uses
  Form2 in 'unit2.pas';
 
In der uses-klausel werden nur Units in Form von Unitnamen aufgeführt (nicht Dateiname, nicht Komponentenname).
Ein "in" gehört da gar nicht rein. (Zumindest lese ich das so im FPC - Buch).

also in deinem Fall wirds wohl so aussehn:

Code: Alles auswählen

uses unit2;
Mich wundert aber, dass es bei dir überhaupt anfängt zu kompilieren.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Giss
Beiträge: 22
Registriert: Sa 26. Mär 2011, 23:25
OS, Lazarus, FPC: Linux (L 0.9.28 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Osnabrück

Re: Zugriff auf Komponenten einer anderen Unit?

Beitrag von Giss »

Danke für die Antwort.

Wenn in die uses der beiden units jeweils die unit der andern unit eintrage (was ein komischer Satz :-) ), bekomme ich den Fehler

unit2.pas(9,18) Fatal: Circular unit reference between Unit2 and Unit1

Wenn ich in der Unit2 die Unit1 aus der Uses wieder streiche, kann ich wieder nicht auf die Komponenten des Form1 zugreigen.


Also eigentlich wieder genau dasselbe Problem.

u-boot
Beiträge: 308
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Zugriff auf Komponenten einer anderen Unit?

Beitrag von u-boot »

Ne ganz anderes Problem. Nur vielleicht ähnliche Symptome ;)

Aber das lässt sich meist einfach lösen, indem man nach "implementation" ein "uses unit2;" macht.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Giss
Beiträge: 22
Registriert: Sa 26. Mär 2011, 23:25
OS, Lazarus, FPC: Linux (L 0.9.28 FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Osnabrück

Re: Zugriff auf Komponenten einer anderen Unit?

Beitrag von Giss »

Und siehe da, es funktioniert.

Dank dir. 8)

Antworten