Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prozedur einer anderen Unit soll auf andere Form zugreifen (https://www.delphipraxis.net/16553-prozedur-einer-anderen-unit-soll-auf-andere-form-zugreifen.html)

Wheelie 19. Feb 2004 00:07


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 ':?:

Fingolfin 19. Feb 2004 03:48

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

little-wolf 19. Feb 2004 09:08

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:
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.
2. Unit:

Delphi-Quellcode:
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.
Das ist natürlich nur eine von vielen möglichen Varianten...

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