![]() |
Prozedur einer anderen Unit soll auf andere Form zugreifen
Tag!
Ich habe eine Prozedur, der ich bestimmte Parameter übergebe. In Abhängigkeit dieser Parameter verändert die Prozedur z.B. bestimmte Eigenschaften von Edit-Feldern und ComboBoxen. Um die Übersichtlichkeit im Projekt zu wahren, möchte ich die Prozedur in eine eigene Unit stopfen. Wie kann ich von dieser Unit auf Komponenten in einem anderen Formular (und somit auch in einer anderen Unit) zugreifen. Wenn ich z.B. in eine ganz simple Prozedur schreibe "Edit1.Clear", dann meldet der Compiler: " Undefinierter Bezeichner: 'Edit1' ". Habe den Uses-Kopf der ersten Unit auch in die zweite Unit übernommen :gruebel: Das eigentliche Problem ist hier wahrscheinlich, dass ich nicht beide Units gegenseitig in den Interface-Teil einbinden kann (-> ' Überkreuzender Bezug zweier Units auf Unit1 ':?: |
Re: Prozedur einer anderen Unit soll auf andere Form zugreif
Rein theoretisch könntest du in einer Unit, die andere erst im implementation-Teil aufführen.
Alternativ wäre auch die Übergabe der Form selbst als Parameter möglich. Fingolfin |
Re: Prozedur einer anderen Unit soll auf andere Form zugreif
Hallo
ich finde, man sollte in Units, in welchen sich nur Funktionen und Prozeduren befinden, die aufrufenden Units nicht usen... Desshalb würde ich das Edit-Feld als variablen-Parameter übergeben: 1. Unit:
Delphi-Quellcode:
2. Unit:
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Unit2; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin SetEditField(Edit1,'Test'); end; end.
Delphi-Quellcode:
Das ist natürlich nur eine von vielen möglichen Varianten...
unit Unit2;
interface uses Windows, Messages, SysUtils, Classes, Dialogs, StdCtrls; procedure SetEditField(var vEdit:TEdit; pSText: String); implementation procedure SetEditField(var vEdit:TEdit; pSText: String); begin vEdit.Text := pSText; end; end. hoffe etwas weiter geholfen zu haben... Grüsse little-wolf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 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 by Thomas Breitkreuz