Delphi-PRAXiS
Seite 2 von 3     12 3      

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:59

Re: Procedure mit TForm1 in extra Unit?
 
Zitat:

Zitat von Die Muhkuh
Ja, reicht.

Nur das die Funktion eben in einer anderen Unit steht. ;) (Bitte lesen :()

Die Muhkuh 30. Okt 2008 20:05

Re: Procedure mit TForm1 in extra Unit?
 
Achso, Du willst eine Methode von MainForm (in Mainform.pas) in Unit2.pas reinstecken? Das geht nicht. :zwinker:

MCXSC 30. Okt 2008 20:09

Re: Procedure mit TForm1 in extra Unit?
 
Ja, wie gesagt: Ich habe in der Unit "UnitXYZ" eben eine Procedure. Zum Bleistift:

Delphi-Quellcode:
procedure TuDies(NehmeString: String);
begin
with MainFrm do begin
Button1.Caption := NehmeString;
Label1.Caption := NehmeString;
Caption:= NehmeString;
end;
end;
Wie man sieht, beziehen sich alle Befehle in der Prozedur auf Komponenten/Dinge aus der Unit MainForm (bzw. dem Form MainFrm). Die Procedure wird eben in den unterschiedlichsten Units aufgerufen. Bei unzähligen Prozeduren, die alle ein "with...end" enthalten, kommen da einige Zeilen zusammen.

Deswegen wollte ich eben eine Funktion basteln, die ohne den "with ... end"-Part auskommt...

Die Muhkuh 30. Okt 2008 20:11

Re: Procedure mit TForm1 in extra Unit?
 
Das geht nur, wenn Du die Procedure zur Methode der Klasse machst und damit muss es wieder in der Unit von der MainForm stehen.

Sir Rufo 30. Okt 2008 20:12

Re: Procedure mit TForm1 in extra Unit?
 
Wie schon gesagt,

wenn du für dein Formular - und zwar aussschließlich für dieses Formular und niemals ein anderes Formular - eine function oder procedure haben möchtest, dann gehören die in die Klassendefinition dieses einen Formulars und damit auch in die gleiche Unit wie dieses selbige oben genannte Formular.

Als kleine Frage:

Warum möchte man so etwas denn trennen?

Dunkel 30. Okt 2008 20:13

Re: Procedure mit TForm1 in extra Unit?
 
Delphi-Quellcode:
procedure TuDies(NehmeString: String);
begin
MainFrm.Button1.Caption := NehmeString;
MainFrm.Label1.Caption := NehmeString;
MainFrm.Caption:= NehmeString;
end;
...und schon hast Du 2 Zeilen gespart, aber trotzdem mehr getippt.

Das was Du möchtest, geht nicht mit Delphi.

Sir Rufo 30. Okt 2008 20:15

Re: Procedure mit TForm1 in extra Unit?
 
Zitat:

Zitat von Dunkel
Das was Du möchtest, geht nicht mit Delphi.

Warum sollte das auch gehen?

Ist irgendwie für nix gut ...

cu

Oliver

MCXSC 30. Okt 2008 20:15

Re: Procedure mit TForm1 in extra Unit?
 
Zitat:

Zitat von Dunkel
...und schon hast Du 2 Zeilen gespart, aber trotzdem mehr getippt.

Darum ja auch bisher "with ... end". ;)

Zitat:

Zitat von Sir Rufo
Warum möchte man so etwas denn trennen?

Weil ich dann eine bessere Struktur reinbekomme. Zum Beispiel eine Funktion "UnitDatenbank", in der nur Funktionen/Przeduren sind, die sich rund um "die" Datenbank drehen (z.B. Löschen, Erstellen, Öffnen...) und so weiter.

Ich habe recht viele Funktionen, die sich auf Komponenten auf dem Hauptform beziehen - alle mit unterschiedlichen Aufgaben"gebieten". Darum eben diese Auslagerung - 50++ Prozeduren und Funktionen in einer Unit sind eben etwas unübersichtlich. ;)

Sir Rufo 30. Okt 2008 20:18

Re: Procedure mit TForm1 in extra Unit?
 
Zitat:

Zitat von MCXSC
Weil ich dann eine bessere Struktur reinbekomme. Zum Beispiel eine Funktion "UnitDatenbank", in der nur Funktionen/Przeduren sind, die sich rund um "die" Datenbank drehen (z.B. Löschen, Erstellen, Öffnen...) und so weiter.

ähhhhh .... ja ....

Ein Programm gliedert sich wie folgt
- Eingabe (interaktiv mit dem User)
- Verarbeitung (gedaddel mit den schönen Platten, etc.)
- Ausgabe (wieder mit dem User)

Eingabe und Ausgabe ist die Aufgabe der Forms
Verarbeitung eine Sache von Units (s. z.B. DatenModul in Delphi)

cu

Oliver

Die Muhkuh 30. Okt 2008 20:18

Re: Procedure mit TForm1 in extra Unit?
 
Hmm, Logik sollte sowieso von der Oberfläche getrennt werden und nicht eine Trennung nach Funktion.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 Uhr.
Seite 2 von 3     12 3      

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