Autor Beitrag
a.C.k
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93

WIN 2000
Delphi 6 Enterprise ; Delphi 7 Studio
BeitragVerfasst: Fr 11.10.02 11:19 
Hallo,
ich würde gerne mein Formular an eine Procedure/Funktion übergeben. Natürlich geht das mit dem Parameter "xxx : TForm" geht das, aber ich kann leider nicht in der Procedure/Funktion eine Daraufbefindliche Komponente ansprechen. Aber genau das Brauche ich.

z.B.:
Mehrere Formulare haben ehrere Komponenten mit selben Namen. Da diese Komponenten auch ähnliche Funktionen bereitstellen sollen, würde ich gerne diese Funktionalitäten in einer Procedure/Funktion auslagern.

Da es sich um mehrere Komponenten Handelt, die auf dem entsprechenden Formular angesprochen werden sollen, wäre es die einfachste Variante, wenn man das gesammte Formular als Parameter übergeben könnte (Natürlich mit zugriff auf die daraufliegenden Komponenten). Geht das und wenn JA wie???

Vielen Dank im Vorraus.

_________________
Wer nicht gerne denkt, sollte wenigstens von Zeit zu Zeit seine Vorurteile neu gruppieren.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 11.10.02 11:47 
Hi
das funktioniert schon fast so wie du geschrieben hast. Nur darfst du den Parameter xxx nicht einfach als TForm deklarieren, sondern er muss eben den Typ deines Formular haben.
Wenn dein erstelltes Formular den Namen frmXY hat, dann müsste der Parameter lauten xxx: TfrmXY.
Innerhalb der Procedure kannst du dann auf die Komponenten des Formulars zugreifen und auch auf die Public-Proceduren.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
a.C.k Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93

WIN 2000
Delphi 6 Enterprise ; Delphi 7 Studio
BeitragVerfasst: Fr 11.10.02 11:53 
Vielen Dank!

Leider bringt mich die Lösung nur bedingt weiter, da ein anderes Formular ja einen anderen Namen hat.

Da ja TfrmXY <> TfrmYZ ist, kann ich frmYZ doch nicht an ie Funktion übergeben, welche den Typ TfrmXY verlangt. Somit ist die Function/Procedure immer noch an mein Formular gebunden.

Vieleichtr geht es ja einfach garnicht, so wie ich mir das Vorstelle :(.

Trotzdem vielen Dank.

_________________
Wer nicht gerne denkt, sollte wenigstens von Zeit zu Zeit seine Vorurteile neu gruppieren.
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Fr 11.10.02 13:11 
Hi
Wenn das so ist, dann kehrst du wieder zurück zu ursprünglichen Variante:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TuWas(xxx: TForm);
begin
  if  xxx is TFormXY then begin
  ...
  end;
  if xxx is TFormYX then begin
  ...
  end;
end;


Wenn sich die Formular nur durch den Namen unterscheiden wäre die eleganteste Methode ein Formular zu erstellen, z. B. frmXY Klasse TfrmXY und die anderen Formulare von dieser Klasse abzuleiten.

Gruss Lothar
x - 109 min

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 11.10.02 13:13 
Ohne er ausprobiert zu haben. Versuch mal das:

ausblenden Quelltext
1:
2:
3:
4:
5:
var
  Compo: TComponent;
begin
  Compo := Form1;
  //...


Ob es der richtige Weg ist und es funktioniert weiss ich nicht. So direkt dürfte es aber nicht funktionieren, da der Compiler wahscheinlich nichts mit Compo.Label1.Capion := ... anzufangen wüßte. Aber mit einigen Tricks müßte es gehen. Glaube ich zumindest.

Das war also etwas auf die schnelle ohne Delphi angeworfen zu haben.
a.C.k Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 93

WIN 2000
Delphi 6 Enterprise ; Delphi 7 Studio
BeitragVerfasst: Fr 11.10.02 14:02 
Vielen Dank LCS!

Das hilft mir sehr weiter! THX

@Popov:
Ich habe deine Variante etzt nicht versucht auszuarbeiten, da der Weg den LCS mir offenbart hat völlig ausreichend ist.
Trotzdem vielen Dank!

_________________
Wer nicht gerne denkt, sollte wenigstens von Zeit zu Zeit seine Vorurteile neu gruppieren.
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Fr 11.10.02 18:32 
Kein Problem. Jetzt wo ich mir das bei Tageslicht angeguckt habe, ist es doch eine blöde Idee und würde sowieso nicht funktionieren.