Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eine Procedure in Form1 aus Form2 heraus ausführen (https://www.delphipraxis.net/27259-eine-procedure-form1-aus-form2-heraus-ausfuehren.html)

Alexander Roth 6. Aug 2004 15:00


Eine Procedure in Form1 aus Form2 heraus ausführen
 
Ich will die Procedure TForm1.TabSheet2Exit (die aufgerufen wird wenn ich ESC drücke, aber nur in Form1) von der Form2 aus aufrufen. Doch irgendwie klappt es nicht ich bin ratlos. :?: :?:

fkerber 6. Aug 2004 15:02

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Hi!

Du musst die entsprechende Unit bei den Uses einbinden und dann mit Form1.entprechendeprocedure aufrufen.

Ciao fkerber

Luckie 6. Aug 2004 15:02

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Nimm die Unit von Form1 in den Uses der Form2 auf und ruf die Prozedur mit vorangestelleten Form-Name auf.

Alexander Roth 6. Aug 2004 15:11

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Tschuldigung, bin neu in Delphi, was ist eine Uses?

DelphiFreund 6. Aug 2004 15:43

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Eine Liste:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, DB, DBTables, Grids, DBGrids, ExtCtrls, DBCtrls, StdCtrls;

type
  TForm1 = class(TForm)
   private
    { Private-Deklarationen }
  public
    Funktion: Integer;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}
Schreib die Unit einfach hinter das 2. Uses, wenn es keins gibt, schreibs selber hin.

Gruß DelphiFreund

Alexander Roth 6. Aug 2004 16:03

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Ja mit den Uses ist es klar, allerdings steh ich immer noch auf dem Schlauch (muss wohl dran liegen dass ich mir in meinem Zimmer die Birne abschwitze) da er den schönen Fehler bringt "unzureichende Parameter". Hab ich vielleicht etwas beim Code vergessen (wahrscheinlich ist es eine dumme Frage)
Delphi-Quellcode:
Form1.TabSheet2Exit     ;
?

Phoenix 6. Aug 2004 16:07

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Schau Dir doch mal an, was für Argumente (Parameter) bei TabSheet2Exit auf Form 1 erwartet werden. Die musst Du logischerweise mit übergeben.

DelphiFreund 6. Aug 2004 16:11

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Parameter ist wie bei allen Ereignisorientierten Funktionen von Objekten mindestens (Sender: TObject), möglicherweise auch noch mehr.

Gruß DelphiFreund

Alexander Roth 6. Aug 2004 16:13

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Könntest du mir vielleicht ein Beispiel geben??? (hab das noch nie gemacht)
Delphi-Quellcode:
procedure TForm1.TabSheet2Exit(Sender: TObject);
So heißt die Procedure die ich aufrufen will.

SirThornberry 6. Aug 2004 16:15

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Als Parameter wird ein TObject erwartet, also könntest du irgend ein TObject angeben oder einfach "nil" da ein TObject nichts anderes als ein zeiger ist. du könntest auch einen Button etc. angeben..
Delphi-Quellcode:
Form1.TabSheet2Exit(nil);

DelphiFreund 6. Aug 2004 16:16

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
var
  i: integer;
begin

end;


procedure TForm1.Button1Click(Sender: TObject);
var
  Starten: TObject;
begin
  Form1.FormActivate(Starten);
end;

Gruß DelphiFreund

Phoenix 6. Aug 2004 16:19

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Heissa.. ein nicht instanziertes Objekt übergeben? Ist nicht gut... führt in diesem Fall jetzt zwar nicht zu einer AccVio, da nur die adresse des reservierten aber ungenutzten Speichers übergeben wird, aber sobald Du versuchst drauf zuzugreifen knallt das ganz gewaltig.

DelphiFreund 6. Aug 2004 16:21

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
@Phoenix: Wie würdest du das denn machen? Íst doch praktisch, du kannst dann auch:
Delphi-Quellcode:
if Sender = Starten then begin
  ...;
end;
machen.

Gruß DelphiFreund

DelphiFreund 6. Aug 2004 16:22

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Weglassen, geht ja leider nicht.

Edit1: Tut mir leid, Beitrag von SirThornberry nicht gelesen.

Andreas L. 6. Aug 2004 16:28

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Zitat:

Zitat von Alexander Roth
Delphi-Quellcode:
procedure TForm1.TabSheet2Exit(Sender: TObject);

Vielleicht hilft dir das...
Delphi-Quellcode:
Form1.TabSheet2.OnExit(nil);
...ich weiß nur nicht was du damit erreichen willst?!?!?

Greetz

DelphiFreund 6. Aug 2004 16:36

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
@onlinehome: Hat schon SirThornberry gesagt. Aber du hast recht, so wärs besser:
Delphi-Quellcode:
procedure TForm1.TabSheet1.Exit(Sender: TObject);
var
  k: Integer;
begin
  MacheDiesUndDas(2, k);
end;

procedure TForm2.MacheDiesUndDas2;
var
  k: Integer;
begin
  MacheDiesUndDas(1, k);
end;

procedure MacheDiesUndDas(i: Integer; var K: Integer);
begin
  K:= i + 5;
end;

Alexander Roth 6. Aug 2004 17:02

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Ja hilft mir ganz toll. Klappt auch alles. Aber was eigentlich ist nil???

SirThornberry 6. Aug 2004 17:04

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
nil ist nichts anderes als 0 wird aber bei pointern verwendet. Zeigt also nirgends hinn bzw eben an Position 0

Alexander Roth 6. Aug 2004 17:06

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Danke für eure hilfreichen und zahlreichen Beiträge.
Danke!!!! :party: :party: :party:

DelphiFreund 6. Aug 2004 17:42

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
ich würde sogar sagen weniger als 0, 0 ist immerhin noch eine Zahl. nil ist nichts.

Gruß DelphiFreund

Alexander Roth 11. Aug 2004 17:28

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Hi,

seid ihr noch da?
Ich habe eine fast ganz identische Frage die allerdigns durch die Antworten bisher leider nicht beantwortet wurden. Wieso funktioniert es nicht, dass ich die Procedure schreibetextfile (Die sich in Form4 befindet) aufrufen kann?
Hier ist der Code von Form5 in der ich die Procedure aufrufen will.
Der Compiler meldet: Undefinierter Bezeichner schreibetextfile.
Code:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm5 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Button3: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form5: TForm5;

implementation

uses Mathematik, Unit2, Unit3, Unit4, Unit6;

{$R *.dfm}

procedure TForm5.Button3Click(Sender: TObject);
begin
Close;
end;

procedure TForm5.Button1Click(Sender: TObject);
begin
deletefile(pfad);



Form4.schreibetextfile;



end;


end.
Danke im Vorraus.

Alexander Roth 11. Aug 2004 18:10

Re: Eine Procedure in Form1 aus Form2 heraus ausführen
 
Diesen Letzten Beitrag zu machen war anscheinend ein Fehler. Ich eröffne einen neues Thema.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:54 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