AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Button1.click auf einer anderen Form ausführen!

Button1.click auf einer anderen Form ausführen!

Ein Thema von Go2EITS · begonnen am 19. Jul 2006 · letzter Beitrag vom 19. Jul 2006
Antwort Antwort
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#1

Button1.click auf einer anderen Form ausführen!

  Alt 19. Jul 2006, 09:59
Guten Morgen,

ich habe mal die Frage gestellt, wie man eine Procedure direkt aufruft, die normalerweise
zum Beispiel mit dem Ergeignis Button1.click ausgeführt wird.

Die Antwort war:

Button1Click(nil); //oder
Button1Click(Form1); //oder
Button1Click(Sender);

Unproblematisch ist es, um es vorwegzunehmen, wenn die Form sichtbar ist:
Form2.Button1Click(Sender); Klappt bestens.

Aber:
Wenn die Form nicht sichtbar ist, und ich mit form2.Button1Click(Sender) aufrufe, gibt es eine Exception.

Die Diskusion und die Vorteile daraus, den Code auszulagern und separat vorn Form1 und Form2 aufzurufen, ist mir bekannt.

Gibt es eine Möglichkeit, das Ereignis der nicht sichtbaren Form Form2.button1Click direkt aufzurufen, ohne eine Exception auszulösen?

Vielen Dank für Eure Antworten im voraus.

GO2EITS
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.198 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Button1.click auf einer anderen Form ausführen!

  Alt 19. Jul 2006, 10:01
Ist überhaupt form2 schon erzeugt oder arbeitest du mit einem nil-Zeiger?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.325 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Button1.click auf einer anderen Form ausführen!

  Alt 19. Jul 2006, 10:03
Hallo,

versuchs doch mal so:

Form2.Button1.Click;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#4

Re: Button1.click auf einer anderen Form ausführen!

  Alt 19. Jul 2006, 10:04
@Geyer
Form2 ist noch nicht erzeugt/sichtbar.
NIL Zeiger?

@Helmi
Auch dies als Ergänzung zu der oben genannten Lösung
erzeugt die Exception. Das Problem wird sein, das die Form2
wohl nicht createt/erstellt ist.

Da werde ich die Prozedur doch aus der Form2.Button1.Click auslagern müssen.
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#5

Re: Button1.click auf einer anderen Form ausführen!

  Alt 19. Jul 2006, 10:24
Erzeugt muss die Form schon sein. Sonst hilft da alles nichts

Erzeugst du die Form dynamisch oder hast du das über die Delphi-IDE gemacht?
  Mit Zitat antworten Zitat
Go2EITS

Registriert seit: 25. Jun 2006
519 Beiträge
 
Delphi 7 Personal
 
#6

Re: Button1.click auf einer anderen Form ausführen!

  Alt 19. Jul 2006, 10:45
@malo
über die IDE.
Weitere Antworten wieder heute Abend.
Danke für die Hilfe.

Bin nun offline.
Go2EITS
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#7

Re: Button1.click auf einer anderen Form ausführen!

  Alt 19. Jul 2006, 11:39
Mach die Function Button1Click zur Class function dann kannst Du TForm2.Button1Click rufen.
Dann kannst Du allerdings in der Funktion nicht mehr auf Member der Forn zugreifen, da diese dann nicht zwingend gültig sind.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Benutzerbild von Michael Habbe
Michael Habbe

Registriert seit: 10. Aug 2005
264 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Button1.click auf einer anderen Form ausführen!

  Alt 19. Jul 2006, 11:46
Dir Frage ist, ob Delphi das Formular automatisch erzeugt oder Du das von Hand machst:
Delphi-Quellcode:

  // 1) über die Projektdatei .dpr (Projekt -> Optionen -> Formulare -> automatisch erzeugen)
  Application.CreateForm(TForm2, Form2);


  // 2) manuell kurz vorm Aufruf
  if Form2 = nil then
    Form2 := TForm.Create(self);
  Form2.Show;
  Form2.Button1.Click;
Wenn das aufzurufende Formular (kreiert mit 1. Methode) zwischendurch freigegeben wird, führt ein Aufruf von Form2.Button1.Click zur Exception. Dann muss das Formular erst mit Methode 2 wieder kreiert werden.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:45 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