Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Auf Objekt in anderer Unit zugreifen


momo2k - Fr 22.12.06 22:17
Titel: Auf Objekt in anderer Unit zugreifen
Hallo erstmal!

Es geht um folgendes Problem:

Ich habe eine Memo-Komponente (Memo1) auf einem Formblatt (Form3).
Auf diese könnte ich jetzt umständlich in einer anderen Unit (testunit) über Form3.Memo1 (uses-Eintrag existiert) zugreifen.

Gibt es einen Weg, wie ich in testunit einfach eine Variable des Typs TMemo mit Form3.Memo1 verknüpfen kann?

Ich habe mal in einem anderen Projekt folgendes verwendet:



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
unit testunit;
[...]
type
  form1 = class(TForm)
[...]
  procedure DoOnActivate(Sender : TObject);
[...]

procedure TForm1.FormCreate(Sender: TObject);
begin
  application.OnActivate := DoOnActivate;
end;


So wurde bei Aktivieren des Formblattes Form1.DoOnActivate aufgerufen.

Ich weiß, dass die Probleme programmiertechnisch vielleicht wenig gemeinsam haben, aber vom Prinzip her ist es ähnlich ; )

Also habe ich Folgendes analog versucht:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
unit testunit;
[...]
procedure testprozedur;
[...]
var Log: TMemo;

procedure testprozedur;
begin
  form3.Memo1:=Log;
end;


Sieht sehr ähnlich aus, liefert aber einen EAccessViolation.

Ich hoffe, ihr wisst, was ich meine ; )

Im Grunde würde es ja auch über den form3.Memo1-Umweg gehen, aber zur übersich möchte ich gerne über Log.xx gehen, geht das?


MfG


momo2k - Fr 22.12.06 22:44

Ok manchmal sieht man echt den Wald vor lauter Bäumen nicht. Ich habe das Problem selbst gelöst.

Der Code funktioniert, allerdings muss es natürlich form3.Memo1:=Log; heißen und "testprozedur" darf erst nach dem Erstellen von form3 aufgerufen werden..
Ist mir das peinlich ^^'