AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Prozedur in mehreren Formularen verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur in mehreren Formularen verwenden

Ein Thema von Sebastian815 · begonnen am 10. Mai 2006 · letzter Beitrag vom 11. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Sebastian815
(Gast)

n/a Beiträge
 
#1

Prozedur in mehreren Formularen verwenden

  Alt 10. Mai 2006, 23:29
Hallo,

habe folgendes Problem:
Ich habe ein Hauptformular, von dem ich auf drei verschiendene Formulare (Form1 bis Form3) über Buttons zugreife.
In diesen 3 Formularen benötige ich eine identische Prozedur. In den Prozeduren werden auch Edit-Felder angesprochen, die in allen Formularen den gleichen Namen haben (z.B. Edit1).
Um diese Prozedur nicht 3x schreiben zu müsse, würde ich sie gerne in allen Formularen verwenden können und sie im Hauptformular hinterlegen (Eintrag in der uses-Liste ist vorhanden).

Habe jetzt allerdings das Problem, dass ich die Felder mit dem Formularnamen ansprechen muss: (Form1.Edit1.Text;
Form2.Edit1.Text; usw.)

Durch die Angabe des Formulars geht leider die "Allgemeingültigkeit" verloren. Gibt es eine Möglichkeit den Formularnamen als Parameter zu übergeben oder dies ganz zu umgehen??

Ich hoffe ihr könnt mir helfen.

Gruß
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Prozedur in mehreren Formularen verwenden

  Alt 10. Mai 2006, 23:47
Übergib doch einfach eine Variable vom Typ TForm.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#3

Re: Prozedur in mehreren Formularen verwenden

  Alt 11. Mai 2006, 00:17
Das nimmt Dir Delphi alles ab. Rechter Mausklick -> Objektablage. Von diesem Formulat ableiten, so ähnlich wie Luckie sagt. Prozedur vorher definieren und fertig. Die ist dann bereits vorhanden.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Prozedur in mehreren Formularen verwenden

  Alt 11. Mai 2006, 07:04
Was hat das jetzt mit der Objektablage zu tun wenn cih ene Prozedur für drei Formulare verallgemeinern will? Benutzt er so wie du vorschlägst die Objektablage hat er die Prozedur doch wieder dreimal im Programm drinne, nämlich in der Unit zu jedem Formular. Und gerade diese Redundanz will er vermeiden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#5

Re: Prozedur in mehreren Formularen verwenden

  Alt 11. Mai 2006, 07:16
Hi!

Eigentlich kannst du die Angabe des Formnamens auch weglassen, da du ja nicht das Form direkt ansprechen willst, sondern nur Edits. IMHO wäre es also sinnvoller, ihm die Edits zu übergeben, anstatt ihm ein Formular zu geben, auf dem du dann Edit1 ansprichst...

Delphi-Quellcode:
procedure machwas(E1, E2: TEdit);

//Aufruf
Machwas(Form1.Edit1, Form1.Edit2);
//oder
Machwas(Form2.Edit1, Form2.Edit2);

Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Prozedur in mehreren Formularen verwenden

  Alt 11. Mai 2006, 07:30
Hai Sebastian,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS"

Wie fkerber schon sagte kann es besser sein wenn Du die Edits als Parameter übergibst. Wenn Du das ganze dann noch als Array of TEdit machst kannst Du auch eine unterschiedliche Anzahl übergeben. Aber genau kann man das nur sagen wenn man weiss was Du machen möchtest

Hier mal ein Stück code als Beispiel:
Delphi-Quellcode:
unit U_Global;

interface

uses
  Forms, StdCtrls;

procedure EditClear(aEdits: array of TEdit);

implementation

procedure EditClear(aEdits: array of TEdit);
var
  ndx: Integer;
begin
  for ndx := Low(aEdits) to High(aEdits) do
  begin
    aEdits[ndx].Clear;
  end;
end;

end.
Das ist die zentrale Procedure und wird dann so in den Forms aufgerufen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  EditClear([Edit1,Edit2,Edit3]);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  EditClear([Edit1,Edit3]);
end;
Stephan B.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#7

Re: Prozedur in mehreren Formularen verwenden

  Alt 11. Mai 2006, 09:26
Zitat von Luckie:
..Benutzt er so wie du vorschlägst die Objektablage hat er die Prozedur doch wieder dreimal im Programm drinne, nämlich in der Unit zu jedem Formular.
Eben nicht ! Macht er es so, dann sieht sein Formular lediglich so aus :
TMyClass2 = Class (TMyClass); Alles was für die Form TMyClass definiert ist, das gilt für alle Abkömmlinge genauso. Egal ob Prozedur oder ein visuelles Steuerelement. Braucht er für TMyClass3 aufwärts noch einen Button dann soll er ihn da drauflegen. Dann sieht so aus :

TMyClass4 = Class (TMyClass3); Die Prozedur ist bereits von TMyClass geerbt und kann zentral dort geändert werden.
Gruß
Hansa
  Mit Zitat antworten Zitat
Sebastian815
(Gast)

n/a Beiträge
 
#8

Re: Prozedur in mehreren Formularen verwenden

  Alt 11. Mai 2006, 22:34
Hallo zusammen,

erst einmal danke für die vielen Reaktionen.

Eine Varianble vom Typ TForm zu übergeben, habe ich bereits versucht, bin aber dran gescheitert. Vielleicht kann ja jemand ein Stück Code posten, wie ich das aufbauen muss.
Die Edits zu übergeben, find ich für meinen Fall nicht ganz so praktisch, da es sich um ca. 50 Felder handelt, was dann auch nicht wirklich übersichtlich ist.

Der Tipp mit der Objektanlage und der Vererbung des Formulars gefällt mir eigentlich ganz gut. Meine Formulare weisen jedoch ein paar Unterschiede auf. (Logisch, sonst würde eins reichen...) Daher müsste ich ein 4. Formular anlegen, dass lediglich die Gemeinsamkeiten der anderen 3 Formulare beeinhaltet.
Mir würde eine Möglichkeit reichen einzelne Prozeduren zu vererben, falls es so etwas gibt. Damit wären wir wahrscheinlich wieder bei der Übergabe einer Variablen vom Typ TForm...

Wär schön, wenn euch noch gute Ideen einfallen. Ich werd morgen mal die Methode mit der Vererbung probieren. Wisst ihr, ob die Vererbung mit QuickReports auch möglich ist??

Gruß
Sebastian
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: Prozedur in mehreren Formularen verwenden

  Alt 11. Mai 2006, 23:37
Zitat von Sebastian815:
Der Tipp mit der Objektanlage und der Vererbung des Formulars gefällt mir eigentlich ganz gut. Meine Formulare weisen jedoch ein paar Unterschiede auf. (Logisch, sonst würde eins reichen...) Daher müsste ich ein 4. Formular anlegen...
Dann setze es einfach um. Mache möglichst früh alle Einstellungen. Farben, die Ereignis-Prozeduren, die Größen der Form usw. Paßt was nicht, dann eben weg damit, oder erweitern. Der Unterschied liegt nur in : neu -> weitere, Form rauspicken anstatt neu -> Form und alles neu machen.
Gruß
Hansa
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#10

Re: Prozedur in mehreren Formularen verwenden

  Alt 11. Mai 2006, 23:53
Zitat von Sebastian815:
Eine Varianble vom Typ TForm zu übergeben, habe ich bereits versucht, bin aber dran gescheitert. Vielleicht kann ja jemand ein Stück Code posten, wie ich das aufbauen muss.
Delphi-Quellcode:
procedure MyEditProc(frm: TForm);
var
  i: integer;
  c: TComponent;
begin
  for i:=1 to 2 do
  begin
    c := frm.FindComponent('Edit'+IntToStr(i));
    if (c <> nil) and (c is TEdit) then
      TEdit(c).Clear;
  end;
end;
die unit in der diese procedure drin steht mußte dann in die deiner forms einbinden
und dann rufste die einfach so auf

Delphi-Quellcode:
//in Form1
MyEditProc(Form1);

//in Form2
MyEditProc(Form2);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 Uhr.
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