Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Procedure mit TForm1 in extra Unit? (https://www.delphipraxis.net/123321-procedure-mit-tform1-extra-unit.html)

MCXSC 30. Okt 2008 19:35


Procedure mit TForm1 in extra Unit?
 
Hallo!

Ich habe eine kurze Frage, irgendwie bin ich grade zu deppert dafür. Ich habe z.B. folgenden Aufbau:

TMainForm:

Delphi-Quellcode:
unit Mainform;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics [...];

type
  TMainFrm = class(TForm)
    [...]
  private
    [...]
  public
    [...]
  end;

var
  MainFrm: TMainFrm;

implementation

uses UnitXYZ, [...];

{$R *.dfm}
Nun habe ich eine Unit, wie folgt:

Delphi-Quellcode:
unit UnitXYZ;

interface

procedure TuDas(NehmeDenString: String;);

implementation

uses
  MainForm [...];

procedure TuDas(NehmeDenString: String;);
begin
with MainFrm do begin
[...]
end;
end;
Die Procedure wird aus verschiedenen anderen Forms ausgeführt. Allerdings hätte ich gerne das "with MainForm do begin ... end;" weg; die gesamte Procedure soll sich eben auf "TMainForm" beziehen. Ich bekomme es nur nicht hin... :(

Kann mir jemand einen Tipp geben? Ich weiß, dass die Procedur irgendwie so aussehen muss:

Delphi-Quellcode:
procedure TMainFrm.TuDas(NehmeDenString: String;);
begin
[...]
end;
Aber ich bekomm es eben nicht zum laufen, da die Procedure ja irgendwo nochmal deklariert werden muss... :(

mkinzler 30. Okt 2008 19:38

Re: Procedure mit TForm1 in extra Unit?
 
Übergib doch die Form als Parameter

Sir Rufo 30. Okt 2008 19:40

Re: Procedure mit TForm1 in extra Unit?
 
Hi,

versuch es doch mal mit
Delphi-Quellcode:
with MainFrm do
cu

Oliver

MCXSC 30. Okt 2008 19:42

Re: Procedure mit TForm1 in extra Unit?
 
Zitat:

Zitat von mkinzler
Übergib doch die Form als Parameter

Hm?

Zitat:

Zitat von Sir Rufo
Hi,

versuch es doch mal mit
Delphi-Quellcode:
with MainFrm do

Danke, aber so sieht es ja bisher aus. Ich würde das aber gerne etwas kompakter bauen.

Sir Rufo 30. Okt 2008 19:44

Re: Procedure mit TForm1 in extra Unit?
 
Ich wollte nur damit sagen, dass das so nicht funktioniert, bzw. so definiert überflüssig ist ...
Zitat:

Zitat von MCXSC
Delphi-Quellcode:
unit Mainform;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics [...];

type
  TMainFrm = class(TForm)
    [...]
  private
    [...]
  public
    [...]
  end;

var
  MainFrm: TMainFrm;

implementation

uses UnitXYZ, [...];

{$R *.dfm}
Delphi-Quellcode:
unit UnitXYZ;

interface

procedure TuDas(NehmeDenString: String;);

implementation

uses
  MainForm [...];

procedure TuDas(NehmeDenString: String;);
begin
with MainForm do begin /// <<< Das tut aber so nicht !!!!! Hmmm, tut eigentlich schon, ist aber Quatsch ...
[...]
end;
end;


MCXSC 30. Okt 2008 19:45

Re: Procedure mit TForm1 in extra Unit?
 
Doch tut es. ;)

Delphi-Quellcode:
with MainFrm do
...lässt nur eine Codezeile zu, die sich auf's MainForm bezieht...

Delphi-Quellcode:
with MainFrm do begin [...] end;
...bezieht sich auf den gesamten Block zwischen begin und end... ;)

Ich weiß, es ist sinnfrei, eine gesamte Procedure so "einzumauern", aber genau das versuche ich ja grade zu lösen^^

Sir Rufo 30. Okt 2008 19:46

Re: Procedure mit TForm1 in extra Unit?
 
Zitat:

Zitat von MCXSC
Doch tut es. ;)

Hab es grad geeditet :mrgreen:

Sir Rufo 30. Okt 2008 19:52

Re: Procedure mit TForm1 in extra Unit?
 
Zitat:

Zitat von MCXSC
Die Procedure wird aus verschiedenen anderen Forms ausgeführt. Allerdings hätte ich gerne das "with MainForm do begin ... end;" weg; die gesamte Procedure soll sich eben auf "TMainForm" beziehen. Ich bekomme es nur nicht hin... :(

So wie du das deklariert hast bezieht sich alles auf die UNIT MainForm aber nicht auf das FORMULAR MainFrm!!!

Was ist denn der tiefere Sinn dafür?

Entweder ich habe ein proc oder func, die direkt mit einem Formular verknüpft ist, dann nehme ich die in die Klasse direkt mit auf, oder die ist generisch, dann meinetwegen in eine eigene Unit und dann das Formular als Parameter mit.

Und trotzdem wirst du dann mit with ... do arbeiten werden wollen (nicht müssen).

cu

Oliver

MCXSC 30. Okt 2008 19:56

Re: Procedure mit TForm1 in extra Unit?
 
Zitat:

Zitat von Sir Rufo
So wie du das deklariert hast bezieht sich alles auf die UNIT MainForm aber nicht auf das FORMULAR MainFrm!!!

Was ist denn der tiefere Sinn dafür?

Kleinerer Fehler. MainForm = MainFrm. Hab mich beim schnellen tipseln der Procedure halt vertippt.

Zitat:

Zitat von Sir Rufo
Entweder ich habe ein proc oder func, die direkt mit einem Formular verknüpft ist, dann nehme ich die in die Klasse direkt mit auf, oder die ist generisch, dann meinetwegen in eine eigene Unit und dann das Formular als Parameter mit.

Genau das versuche ich doch... o_O

Wenn ich eine eigene Funktion direkt in MainForm eingebe, reicht es, wenn ich die Procedure nochmals im "private" deklariere. *denk*

Die Muhkuh 30. Okt 2008 19:58

Re: Procedure mit TForm1 in extra Unit?
 
Ja, reicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz