AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Aus Unit2 ereignis in Unit1 aktivieren

Offene Frage von "KahPee"
Ein Thema von KahPee · begonnen am 12. Mai 2009 · letzter Beitrag vom 12. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#1

Aus Unit2 ereignis in Unit1 aktivieren

  Alt 12. Mai 2009, 09:33
Hallo,
ich bin recht neu bei Delphi und habe ein Problem mit einer ziemlichen Banalität, aber ich konnte nirgends eine Lösung für das Problem finden.
Ich habe zwei Formulare mit den dazugehörigen Units. Form2 ist ein Formular welches insgesamt drei Abfragen macht. Nun möchte ich, dass wenn man in Form2 auch einen Button (OK) klickt, wieder zu Form1 gewechselt wird: Das ist soweit kein Problem, da Form1 immer noch offen ist (Form2 wurde mit Showmodal aktiviert), auch habe ich es geschafft, dass Form2 sich selbst beim Klicken auf "OK" schliest (Close allerdings schaffe ich es nicht in die zu Form2 gehörende Unit (Unit2) einen Befehl zu schreiben, der beim Klicken auf "OK" (in Form2) ein Ereignis für Form1 (also in Unit1) startet.
Ich hoffe ich habe mich halbwegs verständlich ausgedrückt, sodass man mir helfen kann. Vielen Dank schon mal im Vorraus

KahPee
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#2

Re: Aus Unit2 ereignis in Unit1 aktivieren

  Alt 12. Mai 2009, 09:48
Hast du die beien Formulare untereinander bekanntgemacht, will heißen die zugehörigen units eingebunden?
Schau dir mal folgendes an:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
uses unit2;
{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
edit1.text:='TEST';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
application.CreateForm(TForm2,form2);
form2.Show;
end;

end.
////////////////////////////////////////////////////
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation
uses unit1; //////////////<-wichtig
{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
form1.Button2.Click;
end;

end.
//Edit: Ach und: Herzlich Willkommen in der DP
MFG
Steffen
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Aus Unit2 ereignis in Unit1 aktivieren

  Alt 12. Mai 2009, 09:51
Oh das war ja einfach, das mit dem "Uses" habe ich bei beiden drin, wenn ich manuell einen Button in Form1 starte funktioniert das ja auch..
aber im Prinzip muss ich allen Aktionen nur ein "Form1." vorstellen und dann kann ich die programmieren als wenn sie in Unit1 geschrieben werden. Das ist so richtig oder? Funktioniert das mit allen Elementen? auch mit Funktionen und Prozeduren?

Vielen Dank für die Hilfe

Kahpee


Edit: Ich habe das gerade mal versucht.. Wie deklariere ich denn eine Prozedur in Unit1 so, dass sie in Unit2 aufgerufen werden kann. Und wie rufe ich sie in Unit 2 auf?
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#4

Re: Aus Unit2 ereignis in Unit1 aktivieren

  Alt 12. Mai 2009, 10:02
Du kannst so auf alle öffentlichen Methoden eines anderen Objektes zugreifen. Das Ganze ist auch in einem Block möglich:
Delphi-Quellcode:
with form1 do Begin
button1.click;
edit1.test:='xcvfgb';
//usw.
end;
MFG
Steffen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Aus Unit2 ereignis in Unit1 aktivieren

  Alt 12. Mai 2009, 10:22
Und wenn es sich um einfache Routinen (keine Methoden) handelt, kann man das so machen:
Delphi-Quellcode:
unit Unit1;

interface

...

procedure SagHallo(const Name: string); //Definition eines Prototyps im interface-Abschnitt

implementation

procedure SagHallo(const Name: string); //Implementation im implementation-Abschnitt
begin
  ShowMessage(Format('Hallo %s',[Name]));
end;
Nun kannst Du die Prozedur aus Unit2 heraus aufrufen, als ob sie dort deklariert wäre.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Aus Unit2 ereignis in Unit1 aktivieren

  Alt 12. Mai 2009, 10:43
So das Problem hat nichts mher mit dem Threadtitel zu tun, aber egal.

Ich habe jetzt wie du beschrieben hast eine Prozedur deklariert, allerdings wirft er mir beim Compilieren immer eine Fehlermeldung raus. Hier der Code, die entsprechende Zeile ist markiert:

Delphi-Quellcode:
.
.
.
var a: boolean;

procedure Test;


implementation

Uses Unit2;


{$R *.DFM}

procedure Start;
while a=true Do //[Fehler] Unit1.pas(60): Deklaration erwartet, aber 'WHILE' gefunden
         begin
          Label1.Caption:='hallo';
         end;
end;
.
.
.
Das ist ein Teil des Quelltextes aus Unit 1.
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#7

Re: Aus Unit2 ereignis in Unit1 aktivieren

  Alt 12. Mai 2009, 10:45
Ein Begin fehlt:

Delphi-Quellcode:
procedure Start;
Begin
while gameon=true Do
         begin
          Label1.Caption:='hallo';
         end;
end;
MFG
Steffen
  Mit Zitat antworten Zitat
Benutzerbild von KahPee
KahPee

Registriert seit: 12. Mai 2009
214 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Aus Unit2 ereignis in Unit1 aktivieren

  Alt 12. Mai 2009, 10:49
Es ist immer so simpel... Danke. Bin noch nicht so richtig drin...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Aus Unit2 ereignis in Unit1 aktivieren

  Alt 12. Mai 2009, 10:51
Das wird wahrscheinlich trotzdem nicht funktionieren, wenn dann mitForm1.Label1.Caption := 'Hallo';
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#10

Re: Aus Unit2 ereignis in Unit1 aktivieren

  Alt 12. Mai 2009, 10:55
und: die Procedure-Bezeichnungen sollten übereinstimmen (Test<>Start)
MFG
Steffen
  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 19:56 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