AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Form-Event global für alle Formulare überschreiben?
Thema durchsuchen
Ansicht
Themen-Optionen

Form-Event global für alle Formulare überschreiben?

Ein Thema von günni0 · begonnen am 20. Apr 2018 · letzter Beitrag vom 20. Apr 2018
Antwort Antwort
Seite 1 von 3  1 23      
günni0
(Gast)

n/a Beiträge
 
#1

Form-Event global für alle Formulare überschreiben?

  Alt 20. Apr 2018, 08:27
Delphi-Version: 10.2 Tokyo
Ich bin mir fast sicher, dass das nicht möglich ist.
Trotzdem interessiert es mich, ob es vielleicht doch möglich ist.

Ist es in Delphi möglich in einer einzigen Unit ein Event reinzuschreiben, welches ein normales Formular-Event anderer Formulare überschreibt?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#2

AW: Form-Event global für alle Formulare überschreiben?

  Alt 20. Apr 2018, 08:29
Moin...
Was hast du denn konkret vor? Ich wette, daß es andere Lösungen gibt.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#3

AW: Form-Event global für alle Formulare überschreiben?

  Alt 20. Apr 2018, 08:33
In einem anderen thread hat mich jemand davon überzeugt, Formulare dynamisch zu erzeugen.
Das setze ich aktuell um.

Ich möchte aber ungerne überall wo ich Show brauche das hier schreiben
Delphi-Quellcode:
 if not Assigned(formmxyz) then
  formmxyz := TFormXYZ.Create;

 formmxyz.Show;
In eine Prozedur packen ist auch schlecht denke ich.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Form-Event global für alle Formulare überschreiben?

  Alt 20. Apr 2018, 08:52
Dein allererster Schritt sollte sein nicht mehr TForm sondern deine eigene TGünniForm zu benutzen und von dieser abzuleiten. In der Klasse kannst du dann das ganze grundlegende Verhalten einbauen das jedem Formular gleich sein soll.
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#5

AW: Form-Event global für alle Formulare überschreiben?

  Alt 20. Apr 2018, 08:54
Das klingt kompliziert. Sowas habe ich noch nie gemacht und höre davon auch zum ersten mal.
Hättest du ein Minimalbeispiel für mich?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#6

AW: Form-Event global für alle Formulare überschreiben?

  Alt 20. Apr 2018, 09:14
entweder Ableiten
> Bei Google suchenDelphi Form ableiten

Wobei TFormXYZ doch bereits eine Ableitung ist.
Wenn es für alle TFormXYZ gelten soll, dann genau da drin das Event im Formdesigner deklarieren.



Für Alle, die du erstellst:
Delphi-Quellcode:
formmxyz := TFormXYZ.Create;
formmxyz.OnEinEvent := DeineMethode;



ODER wenn wirklich für "Alle", also nicht nur für eine einzige FormKlasse:
dann NEIN

ABER Delphi führt für alle Nachfahren von TForm/TCustomForm/TDataModule eine globale Liste, welche man durchlaufen könnte.
> Screen (Delphi-Referenz durchsuchenVCL.Forms.TScreen.Forms)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Apr 2018 um 09:20 Uhr)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#7

AW: Form-Event global für alle Formulare überschreiben?

  Alt 20. Apr 2018, 09:26
Das versteh ich nicht so ganz.

Das hier steht in meiner DPR:
Delphi-Quellcode:
Application.CreateForm(TFormListe, FormListe);
Application.CreateForm(TAlphabet, FormAlphabet);
Die würde ich gerne da rausnehmen und selber erzeugen. Kein Problem. Aber das ergibt dann viel von dem o.g. doppelten Code.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Form-Event global für alle Formulare überschreiben?

  Alt 20. Apr 2018, 10:18
Das versteh ich nicht so ganz.

Das hier steht in meiner DPR:
Delphi-Quellcode:
Application.CreateForm(TFormListe, FormListe);
Application.CreateForm(TAlphabet, FormAlphabet);
Die würde ich gerne da rausnehmen und selber erzeugen. Kein Problem. Aber das ergibt dann viel von dem o.g. doppelten Code.
Wie wärs mit:
Delphi-Quellcode:
function CreateAndShowForm(const AFormClass: TFormClass; AFormInstance: TCustomForm): Boolean;
begin
 if not Assigned(AFormInstance) then
  AFormInstance := AFormClass.Create(Application);

 AFormInstance.Show;

 Result := AFormInstance.Visible;
end;
Delphi-Quellcode:
CreateAndShowForm(TFormListe, FormListe);
CreateAndShowForm(TAlphabet, FormAlphabet);
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#9

AW: Form-Event global für alle Formulare überschreiben?

  Alt 20. Apr 2018, 10:28
Die Zuweisung und Erstellung funktioniert und ich kann das in einem ButtonClick aufrufen.
Komischerweise kann ich an einer anderen Stelle außerhalb des Formulars was da erstellt wird aber nicht auf die erstellte Klasseninstanz zugreifen.

Das hier hingegen funktioniert
Delphi-Quellcode:
   if not Assigned(FormListe) then
    FormListe:= TFormListe.Create(Application);
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#10

AW: Form-Event global für alle Formulare überschreiben?

  Alt 20. Apr 2018, 10:39
Moin...
Zitat:
Dein allererster Schritt sollte sein nicht mehr TForm sondern deine eigene TGünniForm zu benutzen und von dieser abzuleiten.
Wenn Ableitungen für dich ein indisches Gewürz ist, dann fehlen Grundlagen.
Vererbung:
https://www.delphi-treff.de/object-pascal/vererbung/
https://de.wikibooks.org/wiki/Progra...cal:_Vererbung

Dann hast du in allen Forms die von der Basis ableiten das fertige OnShow Event. inherited ist in diesem Zusammenhang wichtig!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 06:37 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